Linux + Solarisプロセスリストで最後に実行されたプロセスを確認する方法

Linux + Solarisプロセスリストで最後に実行されたプロセスを確認する方法

アドバイスが必要です:

私のLinuxまたはSolarisで実行されている最後のscan_sys.shプロセスが何であるかをどうやって確認できますか?

私の目標は、最新のscan_sys.shを除くすべてのscan_sys.shプロセスを終了することです(最後の/usr/scan_sys.shスクリプトが実行されます)。

ps -ef | grep scan_sys.sh

root   367     1   0   Nov 08 ?           0:21 /usr/scan_sys.sh
root 27517 27515   0 17:27:18 ?           0:01 /usr/scan_sys.sh
root 18939   367   0   Nov 15 ?           0:00 /usr/scan_sys.sh
root 18940 18939   0   Nov 15 ?           0:01 /usr/scan_sys.sh
root 27515   367   0 17:27:18 ?           0:00 /usr/scan_sys.sh

ベストアンサー1

psオプションを使用して、-oプロセスpid、開始時間、およびコマンド名を表示するために表示するフィールドを選択し、オプションで今興味のあるプロセスを選択し(-C)、開始時間でソートし、最後のプロセスを除くすべてを終了します。

コマンドラインオプションは地獄で悪名高いので、ps実装を理解するにはマニュアルページを確認する必要があります。私にとっては、Linuxでは次のような操作が動作します(適切なPIDのリスト)。

ps -C scan_sys.sh -o pid --sort start | sed '$d'

$単一引用符で insedスクリプト (少なくとも in ) を引用する必要があります。bashそれ以外の場合は環境変数に展開されますd。たとえば、xargsまたはコマンド置換(``または$()in bash)を介してPIDを送信して終了できます。

おすすめ記事