セレンサーバーを使用するbashスクリプトが完了すると、スクリプトは次のように終了します。
kill `ps -ef | grep selenium | awk '{ print $2 }'`
これが機能し、Seleniumスクリプトを終了すると同時にプロセスも終了しようとするため、grep selenium
プロセス番号がkillコマンドに返されると、プロセスはすでに消えてエラーメッセージが生成されます。 (つまり、最終的に2つのプロセスが終了しました。そのうちの1つは実際のセレンサーバーであり、もう1つはこのコマンドの実行に伴う副作用である短期プロセスでした。)
意図しない副作用が発生しないようにプロセスを終了するよりエレガントな方法はありますか?
(FWIWのアイデアがあります。この同じスクリプトはスクリプトの最初にセレンを起動するので、セレンが起動したときにPIDをキャプチャする方法がある場合は、それを維持してgrepの代わりに直接終了できます。質問は次のとおりです。そのPIDを取得する方法私は知らず、変数を使ってそれを維持し、後でスクリプトで参照しますが、これはより良いアプローチですか?)
ベストアンサー1
このpgrep
コマンドを試みると、関心のあるコマンドのPIDが出力されます。
pgrep selenium
実際にプロセスを終了するには、同伴pkill
コマンドを使用します。
pkill selenium