タイトルのように - zsh ですべてのバックグラウンド プロセスを強制終了するには?
質問する
10663 次
5 に答える
15
alias killbg='kill ${${(v)jobstates##*:*:}%=*}'
。これはzshであり、外部ツールは必要ありません。
ジョブ番号Nを強制終了する場合:
function killjob()
{
emulate -L zsh
for jobnum in $@ ; do
kill ${${jobstates[$jobnum]##*:*:}%=*}
done
}
killjob N
于 2012-10-31T20:52:16.253 に答える
2
@Zxy の応答に対する微調整...
私のシステムでは、中断されたジョブがデフォルトの kill シグナルで適切に強制終了されないことがわかりました。バックグラウンドジョブを適切に終了kill -KILL
させるには、実際に変更する必要がありました。suspended
alias killbg='kill -KILL ${${(v)jobstates##*:*:}%=*}'
この周りの単一引用符に特に注意してください。二重引用符に切り替えた場合は、それぞれの「$」をエスケープする必要があります。このコマンドをラップするためにa を使用できないことに注意してください。function
これは、関数が配列をインクリメントし、関数が$jobstates
自分自身を強制終了しようとするためです... エイリアスを使用する必要があります。
上記のkilljob
スクリプトは、次のように実行できるため、少し冗長です。
kill %1
キーストロークが少なく、すでに に組み込まれていzsh
ます。
于 2016-12-08T12:51:01.450 に答える
0
alias killbg='for job in \`jobs -l | egrep -o "([0-9][0-9]+)"`;
于 2012-10-31T19:58:48.363 に答える