Posted at
zshDay 12

zshでkillコマンドをプロセス名から補完する

More than 3 years have passed since last update.

zshではkillコマンドでプロセスIDやプロセス名を補完できるので紹介する。


基本的な使い方

使い方は簡単で、特に設定しなくてもkillの後にkillしたいコマンド名を入れてTabを押せば、プロセス名が補完される。

% kill man #<= ここでTabを押す

% kill 32102
1112 man find
23950 man less
32102 man ps


カスタマイズする

このプロセス補完の機能は少し欠点があって、今動作しているシェルから起動したプロセスしか補完できない。でも、それも次の設定を.zshrcに書いておけば解決する。

zstyle ':completion:*:processes' command "ps -u $USER"

最後のps -u $USERというところが大事。標準ではTabで補完するときにpsコマンドを実行した結果を補完候補として使うんだけど、こうやって書いておくと代わりにps -u $USERというコマンドを実行した結果を使うようになる。

これで、今のシェルから起動していないプロセスも補完できるようになる。

なので、tmuxを使っていて別のウィンドウで起動したプロセスとか、デスクトップのランチャーから起動したプロセスも補完できる。

最後のps -u $USERは自由にカスタマイズしてOK。たとえば、次の例は出力フォーマットを変更して、たくさん情報が見れるようにしている。

zstyle ':completion:*:processes' command "ps -u $USER -o pid,stat,%cpu,%mem,cputime,command"

zsh_kill_1.png

固まってしまったブラウザを停止するときとかに補完しながらkillできると便利なので、ぜひ試してみてください!