LoginSignup
0
0

More than 3 years have passed since last update.

[CentOS 8]killコマンドによるプロセスの終了(メモ)

Posted at

はじめに

killコマンドについて改めて整理したので、そのメモ

OSバージョン

$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

プロセス管理シグナル

killコマンドはプロセス管理シグナルを指定する。指定しない場合はデフォルトの「SIGTERM」になる。

コマンドで一覧を確認

$ kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
・・・

よく使うシグナル

シグナル番号 シグナル名 動作
2 SIGINT キーボード割り込みして、プログラムを終了する。Ctl+Cと同等
9 SIGKILL 強制終了
15 SIGTERM プログラムを適切な方法で終了する。(デフォルト)
18 SIGCONT 停止したプロセスを再開する。
19 SIGSTOP プロセスを一時停止する。

※シグナル番号はプラットフォームによって異なることがあるが、シグナル名は変わらない。

プロセスの終了

SIGKILLは終了処理をせずに強制終了させるので、最後の手段とした方がよい。
SIGTERM → SIGINT → SIGKILLの順で試す。

プロセスIDを指定して停止する

#プロセスIDを確認
$ ps aux | grep tail
user01      6385  0.0  0.0   5488   840 pts/0    S    10:39   0:00 tail -f /dev/null
user01      6386  0.0  0.0   5488   856 pts/0    S    10:39   0:00 tail -f /dev/null
user01      6387  0.0  0.0   5488   856 pts/0    S    10:39   0:00 tail -f /dev/null
user01      6389  0.0  0.0  10280  1064 pts/0    R+   10:39   0:00 grep --color=auto tail

#SIGTERMでkillする(シグナルを指定しないとデフォルトのSIGTERMになる)
$ kill 6385
[1]   Terminated              tail -f /dev/null

#SIGINTでkillする(シグナル名で指定)
$ kill -SIGINT 6386
[2]-  割り込み            tail -f /dev/null

#SIGKILLでkillする(シグナル番号で指定)
$ kill -9 6387
[3]+  強制終了            tail -f /dev/null

プロセス名を指定して停止する

#プロセス名を確認
$ ps aux | grep tail
user01      6443  0.0  0.0   5488   760 pts/0    S    10:44   0:00 tail -f /dev/null
user01      6444  0.0  0.0   5488   832 pts/0    S    10:44   0:00 tail -f /dev/null
user01      6445  0.0  0.0   5488   856 pts/0    S    10:44   0:00 tail -f /dev/null
user01      6447  0.0  0.0  10280  1064 pts/0    S+   10:44   0:00 grep --color=auto tail

#プロセス名を指定してkill(3つkillされる)
$ pkill tail

バックグラウンドジョブを停止する

# バックグラウンドジョブの確認
$ jobs
[1]   実行中               tail -f /dev/null &
[2]-  実行中               tail -f /dev/null &
[3]+  実行中               tail -f /dev/null &

#バックグラウンドジョブを一つkillする
$ kill -SIGTERM %1

#複数のバックグラウンドジョブをkillする
$ kill %2 %3

プロセスの一時停止/再開

一時停止

#jobの確認
$ jobs
[4]-  実行中               tail -f /dev/null &
[5]+  実行中               tail -f /dev/null &

#停止
$ kill -SIGSTOP %4

#確認
$ jobs
[4]+  停止                  tail -f /dev/null
[5]-  実行中               tail -f /dev/null &

再開

$ kill -SIGCONT %4
$ jobs
[4]+  実行中               tail -f /dev/null &
[5]-  実行中               tail -f /dev/null &
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0