私はこのコードを試しましたが、機能していません
#!/bin/sh
#Find the Process ID for syncapp running instance
PID=`ps -ef | grep syncapp 'awk {print $2}'`
if [[ -z "$PID" ]] then
Kill -9 PID
fi
Awkの近くでエラーが表示されています。
提案をお願いします。
実際にこれを行う最も簡単な方法は、以下のようなkill引数を渡すことです。
ps -ef | grep your_process_name | grep -v grep | awk '{print $2}' | xargs kill
それが役に立てば幸い。
これは私に適しています。
PID = `ps -eaf | grep syncapp | grep -v grep | awk '{print $ 2}' ` if [[" "!=" $ PID "]]; then echo "killing $ PID" kill -9 $ PID fi
これにはコマンドpkill
を使用します。
NAME
pgrep, pkill - look up or signal processes based on name and
other attributes
SYNOPSIS
pgrep [options] pattern
pkill [options] pattern
DESCRIPTION
pgrep looks through the currently running processes and lists
the process IDs which match the selection criteria to stdout.
All the criteria have to match. For example,
$ pgrep -u root sshd
will only list the processes called sshd AND owned by root.
On the other hand,
$ pgrep -u root,daemon
will list the processes owned by root OR daemon.
pkill will send the specified signal (by default SIGTERM)
to each process instead of listing them on stdout.
コードがインタープリター(Java、python、...)を介して実行される場合、プロセスの名前はインタープリターの名前になります。引数--fullを使用する必要があります。これは、コマンド名と引数に一致します。
あなたはおそらく書きたいと思った
`ps -ef | grep syncapp | awk '{print $2}'`
しかし、@ PaulRの答えを支持します-killall -9 syncapp
ははるかに優れた代替手段です。
多くの* NIXシステムには、 pkill(1) と killall(1) のいずれかまたは両方があり、名前でプロセスを強制終了できます。それらを使用すると、解析全体のps
問題を回避できます。
どこかに来た..それはシンプルで便利だと思った
Crontabでコマンドを直接使用できます。
* * * * * ps -lf | grep "user" | Perl -ane '($h,$m,$s) = split /:/,$F
+[13]; kill 9, $F[3] if ($h > 1);'
または、シェルスクリプトとして記述できます。
#!/bin/sh
# longprockill.sh
ps -lf | grep "user" | Perl -ane '($h,$m,$s) = split /:/,$F[13]; kill
+ 9, $F[3] if ($h > 1);'
そして、そのようにcrontabと呼びます、
* * * * * longprockill.sh
これにより、強制終了できるgrepに一致するすべてのプロセスが強制終了されます。
-9は「強制終了できるすべてのプロセスを強制終了する」ことを意味します。
kill -9 $(ps -ef | grep [s]yncapp | awk '{print $2}')
#!/bin/sh
#Find the Process ID for syncapp running instance
PID=`ps -ef | grep syncapp 'awk {print $2}'`
if [[ -z "$PID" ]] then
---> Kill -9 PID
fi
これが役立つかどうかはわかりませんが、「kill」のスペルが正しくありません。大文字です。
代わりに「kill」を試してください。