プロセス制御

プロセス制御
$ps -fu $USER
UID PID PPID C STIME TTY時間CMD
kanoujip 22471 21858 0 Sep16 pts/3 00:00:00 /bin/sh ./Alert_notification.sh
カヌージープ27450 27390 0 9月16日? 00:00:00 sshd: kanoujip@pts/9

再実行したい./Alert_notification.shので、私のユーザーIDから以前の実行をすべて削除したいと思います。

どうすればいいですか?

ps -fu $user | grep Alert_notification.sh |grep -vE 'grep|"$PPID"' | awk '{print $2}' | xargs kill `ps -o pid = -NT`;

すべての私のユーザーセッションを終了

答え1

$PPIDリクエストをよく理解している場合は、最後に呼び出されたスクリプトの実行に使用される可能性のある変数をgrepすることなく、最後に呼び出されたscript:のPIDを取得する必要があります$$

script.sh同じ呼び出しを使用する場合、スクリプトの他のすべての実行(またはあなたの場合)bashは同じです。$PPIDscript.shAlert_notifications.sh

必要に応じてコマンドを変更し、いくつかの制御機能を追加してみてください。

ps -fu $USER | grep  "Alert_notification.sh" | grep -v "grep\|$$" | awk '{print $2}' | xargs kill 2> /dev/null  
  • 2> /dev/null:プロセスが見つからない場合は、エラーメッセージを省略するために必要です。

関連情報