Linux基礎プロセスをkillしたりジョブをbgしたりfgする

killとは穏やかではありませんが、今回killするのはプロセスさんです。
プロセスさんはkillされ慣れてるのでさほど心配する必要はありませんよ。

サイコパスみたいな文章となりましたが、killコマンドとジョブをフォアグラウンドで実行したりバックグラウンドで実行する方法をEnvaderさんで学んでいきます。

前回のあらすじ

前回学んだプロセスのお話の続きとなります。

【Linux基礎】psコマンドでプロセスを管理する
Linuxコマンドを基礎から学んでる猫だくさんです。普段なんとなーく使っているLinuxコマンドについて復習しています。各コマンドを復習していく中で意味を理解していないものが多く、これらのコマンドは一体どうやって覚えたんだろうという疑問がわ

killコマンドとはなんぞや?

プロセスにシグナルを送るコマンドです。プロセスを強制終了させるのはオプション機能の一つに過ぎません。

killコマンドによるプロセス管理

とはいえまずは主な使い方であるプロセスを強制終了させる使い方をやってみます。
環境はEnvaderを利用しています。

  1. まずはpsコマンドでプロセスのIDをps auxで確認します。
  2. 狙いを定めてkillなのですが、シグナル番号も必要です。とりあえず強制終了するとして-9を指定しましょう
ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  17944  2700 ?        Ss   13:25   0:00 /bin/bash /init.sh
root          12  0.0  0.0  69956  3060 ?        Ss   13:25   0:00 /usr/sbin/sshd
envader       13  0.0  0.0 702216  1084 ?        Sl   13:25   0:00 /tmp/malware
kill -9 13

引用:プロセス管理 ー 2

malwareってなんだよ!そりゃとりあえずkillするよ!

killシグナル

killで送れるシグナル一覧を見るにはkill -lです。

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
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

めちゃくちゃありますね。覚えられないので以下くらいをチェックしときましょう。

Signal NameNomean
HUP1ハングアップ、設定の再読み込み
INT2割り込み、一時停止
KILL9強制終了
TERM15終了
TSTP19サスペンド(スタンバイ)

※KILLシグナル(9)でDBやLDAPサーバープロセスを強制終了するとデータ破損する可能性。

とりあえずkillコマンドとシグナルについてはこんな感じです。

ジョブの実行場所切り替え

おもむろにコマンドを実行したところ結構時間のかかる処理で後続のコマンド打てなくなったことって無いですか?
私はしょっちゅうあります。

そんなときにジョブを一時停止してバックグラウンドで実行するといったことができます。

ジョブってのは

プログラムの実行単位のことです。
ターミナルでコマンド実行したときはフォアグラウンドジョブになります。

一方でユーザー操作とは関係なく背後で実行することをバックグラウンドジョブといいます。
バックグラウンドでジョブを実行するには、コマンドの後に&をつけます。

フォアグラウンド・バックグラウンドの切り替え

まずは実行中のジョブをjobsコマンドで表示します。

フォアグラウンドで実行しているジョブをバックグラウンドにするには

bg %ジョブID

バックグラウンドで実行しているジョブをフォアグラウンドにするには

fg %ジョブID

※実行中ジョブを一時停止するにはctrl+z
つまりうっかりフォアグラウンドで実行したジョブを一旦停止しbgでバックグラウンド実行に切り替えることができます。

学んだこと

  • killコマンドでプロセスの終了することを学びました
  • ジョブを中断して邪魔にならないようバックグラウンドで実行する方法などを学びました。

これでプロセスやジョブの生殺与奪の権を握ったといえます。
冨岡先輩ブチギレ案件です。

参考資料

コース一覧 | エンベーダー
コース一覧に関するページです。Linuxを学べるLinux基礎・応用コースを始めとして、エンジニア必須の知識であるデータベースやセキュリティのコースもあります。
プロセスを終了するkillコマンドの使い方まとめ!【Linuxコマンド集】
killは実行しているプロセスを終了するコマンドだ。普通ではない動作をしているジョブやプロセスを終了する。他にも正規表現検索などでコンピュータに負荷をかけている動作を止める時などに使用する。
Linuxの「ジョブコントロール」をマスターしよう
前回は、シェルがコマンドを実行する際の単位である「ジョブ」について、X環境を使って動作を確かめました。今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です。

コメント