このブログを検索

2013/05/02

psで表示した特定のプロセスをkillする

以下のようにプロセスを起動した。

bash loop.bash&

表示

ps au
# ps au
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1899  0.0  0.0   4060   456 tty1     Ss+  Apr21   0:00 /sbin/mingetty /dev/tty1
root      1900  0.0  0.0   4076   504 ttyS0    Ss+  Apr21   0:00 /sbin/agetty /dev/ttyS0 115200 vt100-nav
root     18518  0.0  0.1 108468  1872 pts/1    S+   13:09   0:00 -bash
root     19122  0.0  0.1 106092  1220 pts/0    S    14:27   0:00 bash loop.bash
root     19277  0.0  0.1 110232  1136 pts/0    R+   14:30   0:00 ps au


grepで特定する

# ps au|grep loop.bash
root     19122  0.0  0.1 106092  1220 pts/0    S    14:27   0:00 bash loop.bash
root     19343  0.0  0.0 107456   912 pts/0    S+   14:31   0:00 grep loop.bash


grep自体が表示されてしまうのでそれを除く

# ps au|grep loop.bash|grep -v grep
root     19122  0.0  0.1 106092  1224 pts/0    S    14:27   0:00 bash loop.bash


これでプロセスが特定できた。
kill するには以下のようにプロセス番号を指定すればよい。

kill 19122

まず、プロセス番号のみを表示する。

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'
19483

xargsで渡して killする。

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'|xargs kill
[1]+  終了しました      bash loop.bash


強制終了するなら

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'|xargs kill -9
[1]+  強制終了            bash loop.bash