入門者のLinux 12章 まとめ

 

奈佐原顕郎さん「入門者のLinux」より

 

マルチタスク

・同時に複数の処理をする

現在実行中の仕事を調べる
$ ps au

・ユーザーのLinuxマシンが今まさに処理している仕事を1行に1つという単位で示している
・個々の行で示されている仕事をプロセスという

・最初の行が表の項目名
・左端のUSERという項目は、そのプロセスを実行したユーザー名
・2番目の項目PIDはプロセスIDで、たくさんあるプロセスを互いに区別するためにある
・3番目の%CPUはCPUの性能のうちどのくらいがそのプロセスに使われているか
・4番目の%MEMはメモリがどのくらいそのプロセスに使われているか

コンピュータの速度が異様に遅いときは3.4番あたりの数値が極端に大きいプロセスがないかどうかチェックするとよい

・9番目のSTARTはそのプロセスが開始された時刻
・10番目のTIMEはそのプロセス実行のためにCPUが費やした時間
・11番目のCOMMANDはそのプロセスを起動したコマンド

バックグラウンドとフォアグラウンド

・シェルでコマンドを走らせるとき、普通はそのコマンドが終わるまでそのシェルでは他のことができない

例えば
$ sleep 10

10秒後にプロンプトが出る

ところがこのコマンドの最後に&をつけると

$ sleep 10 &

何か1行表示が出てすぐにプロンプトに戻る

・このときsleep 10というコマンドがシェルの画面の中ではなく、別のところで動いている

コマンドの末尾に&をつけてシェルの画面外で走らせることをバックグラウンドという
バックグラウンドで走っているコマンドを元の画面内に戻したくなったとき
$ fg

・fgはフォアグラウンドの略称。シェルの画面の中で実行する
・コマンドを&をつけずに走らせるとフォアグラウンドで実行される

やっぱりバックグラウンドで走らせたいとき(例としてsleep 10コマンド)
「CTRL」キーを押しながら「z」
        
^zと表示され、その次の行に[1]+ 停止 と表示されプロンプトが戻る
このときコマンドは一時停止に入る
bgというコマンドを打つとバックグラウンドで再開される

ジョブとプロセス

・sleepのとき、&をつけた場合、結果に[1]というのが出るが、この数値はジョブIDと呼ばれるもの
・ジョブとはまとめて実行されるプロセスの集まり

例えば
$ コマンドA | コマンドB | コマンドC のとき

これら全体が1つのジョブであり3つのプロセスの集まりとみなされる

・ジョブの数を増やすとジョブIDも増える

例えば
$ sleep 10 & というコマンドを間髪入れずに3回実行すれば
[1]5324
[2]5325 
[3]5326

というようにジョブIDの値が1,2,3というふうに増えていき、プロセスIDの値も増えている

・プロセスとジョブは管理するところが違う

プロセス
・OS全体で統一的に管理されるため多くのプロセスを同時に動かす。それら全てに対し、重複しないようなプロセスIDがつけられるのでしばしば大きな値になる
ジョブ
・そのジョブを実行するシェルで管理されるので大抵コマンドのジョブIDは1番から始まる

プロセス強制終了

UnixLinuxはとても安定したOSだが特定のコマンドやアプリケーションがフリーズすることがある。そのときは強制終了する
・ターミナルの中でシェル上で動いているコマンドなら[ctrl]+[c]で強制終了できることが多い

プロセスを直接的に強制終了する
kill プロセスID[ctrl]+[c]ができないときに、別のターミナルを開いて実行中のコマンドのプロセスIDを調べkillする

・別のターミナルすら開けないとき

[ctrl]+[alt]+[F1]を押す場合
GUIのウィンドウ全体が停止し、画面全体が1つのCUIのターミナルになる
・そこでログインし、ps auコマンドを実行してプロセスIDを確認し、killコマンドを打つ
・終わったらログアウトし[ctrl]+[alt]+[F7]を押すと元のGUIの画面に戻る
別のコンピュータからやる場合
・SSHというやり方でトラブルの起きたコンピュータにログインし、ps auしてkillする
killコマンドでも終了できないプロセスがあるとき
$ kill -kill プロセスID