実行中のプロセスを終了するためにpkillコマンドを実行するbashスクリプトがあります。私のユーザー名パラメータは次のように定義されています。
username=$(whoami)
私は名前に基づいてプロセスを終了できますが、現在のユーザーに対してのみ終了できるようにしたいです。このスクリプトは他のユーザーも使用するため、そのユーザーにもスクリプトが機能するようにユーザー名パラメーターを設定してください。
誰でもこれを行う方法を教えてもらえますか?私は以下を試しています:
pkill -f -U $username | "testProcess"
これは正しいアプローチですか?
答え1
testProcess
現在のユーザーに対して呼び出されたプロセスを終了する構文は次のとおりです。
pkill -x -U "$(id -u)" testProcess
私は習慣的にu-ingを使用するのでid -u
はなく、スクリプトでより一般的に使用されるので使用します。環境に応じて、または同様の既存の変数を使用できます(ただし、何を使用しても拡張を二重引用符で囲む必要があります)。whoami
id
whoami
$USER
$LOGNAME
を使用すると、-f
正規表現として解釈されたパターンは、コマンド名だけでなくすべてのプロセスのコマンドラインと一致します。の場合、-x
パターンは文字列全体と一致する必要があります。上記の場合、プロセス名は正確でなければなりませんtestProcess
。と組み合わせると、コマンドライン全体と一致する必要があります。atestProcess2
-x
-f
pkill
試行中のコマンドの出力を名前付きコマンドにパイプしたいようですtestProcess
。これはあなたが望むものではないかもしれません。
root以外のユーザーは他のユーザーのプロセスにシグナルを送信できないため、この-U
オプションとそのオプション引数は、ユーザーがrootでなければ必ずしも必要ではありません(「操作が許可されていません」エラーを回避したい場合を除く)。