はうすてんぼぶスマートフォン用の表示で見るはうすてんぼぶコードかいてて疑問に思ったことや、興味あることをつらつらと暇なときに書く場所、ここはそんな場所この広告は、90日以上更新していないブログに表示しています。2012-09-21プロセスについてUnix「プロセス」って何気なく使っているけど、その実本当によくわかっていなくてやばいので、ここに調べて動かしてみた結果を載せとく。ジョブとプロセスジョブコマンドを指定して実行すると、それが「ジョブ」という実行単位になる。現在のジョブの単位はjobsコマンドで知ることができる。プロセスジョブをもっと細かい単位に分けたものを「プロセス」と呼ぶ。manコマンドを例にすると、UNIX内部ではどうなってるか見てみる。ps*を付けた行がmanコマンドを読んだときに実際呼ばれるプログラムである。なんか無駄にmanコマンドが何度も呼ばれているのが気になるが、それぞれの行が1つの「プロセス」なのは間違いない、はず。ジョブ番号とプロセス番号ジョブ番号はターミナルごとに1から連番で振られるもの。15582の[1]がそれに当たる。これはターミナル間で独立して持っているので複数のターミナルで重複しても問題なし。プロセス番号は、UNIXの本体が管理しているため、必ず一意になる。ID)がそれに当たる。バックグラウンドで呼ぶさっきからちょいちょいコマンドの最後に「&」を付けて読んでいるけれども、この&を付けるとそのジョブがバックグランドで呼び出されるようになる。重たい処理をする場合はバックグランドで実行すると、処理を止めずに他の作業に専念できる。&こんな風にすると時間がかかる検索もすぐプロンプトが表示されるので他の作業ができる。問題は、出力先はデフォルトのままなのでターミナルにそのままガリガリでてきてしまう点。いう場合はリダイレクトしてファイル当たりに出力するととっても快適。処理が終わったことに気付けないのがちょっと難点だけれども...。jobs現在起動しているジョブ一覧はjobsコマンドで見ることができる。-l-lを付けるとプロセス番号も表示される。実行結果は以下のようになる。text.txtsuspendedは停止中、runningは実行中のジョブの状態を示す。ジョブ番号とプロセス番号の間にある+や-の記号は以下のプロセスのことがわかる。それより前に実行したプロセスpspsコマンドを使うことでプロセス情報を見ることができる。psのオプションは「-」を付けた場合と付けない場合で効果が異なったりするので、マニュアルをしっかり読む必要がありそう。逆に考えると、それっくらいオプションをたくさん付けられる、ということ。参考書に載っている主なオプションだけ表形式で載せておく。標準では長い情報も1行80文字で着られる試しにfを付けて実行してみた結果を載せる。fちょっと見づらいが、zshのときとbashのときでmanコマンドのプロセスが異なるんだなぁとちょっと不思議に思った。フィールドに関しては、ひとまずSTAT(プロセス状態)を見て分かるようになりたいのでまとめておく。ゾンビプロセスzshのときのSTATにあるTNやSsなどは最初の一字はわかるが2文字目の意味がわからなかった...。bgバックグラウンドジョブを実行する場合はbgコマンドを用いる。bgが呼べるジョブは、「現在バックグラウンドにあって」かつ「停止中」である必要がある。停止中かどうかはjobsコマンドを見ればすぐ分かる。-一番上と二番目は同じで、カレントジョブをバックグラウンドで再実行する際に用いる。三番目はジョブ番号かジョブ名を指定して再実行する。ジョブ名は複数マッチした場合はエラーが出る点に注意。四番目は-記号のついたジョブ、つまり直前のさらに一つ前に実行したものを再実行する。fgbgコマンドはバックグラウンドのジョブをバックグラウンドで再実行させるのであれば、fgコマンドはバックグラウンドのジョブをフォアグランドにして再実行させるコマンド。使い方はbgと同じなので割愛。kill物騒なコマンド名だが、その役割は文字通り「殺す」ことが主。killコマンドは、ジョブやプロセスを殺す他に、指定したシグナルをジョブやプロセスに送ることもできる。使い方に関して載せる。[PID]//プロセスIDに指定したシグナルを送る(ジョブ番号でも同じことができる)バックグランドで走っているジョブを殺したい場合は、そのジョブ番号かプロセスIDを用いてkillコマンドを呼べばおっけー。-lで見ることができる。SYSけ、結構ある...。[kill]を参考に終了させる系のものだけ載せる。正常な終了動作を行わせて安全に終了シグナルは特に指定しなければTERMが送られる。上の表を見るとわかるがTERMシグナルは結構生ぬるいので、本当に殺したいときはKILLやINTで良い気はする。おわりにプロセス管理の基礎はだいたいこれで全部だと思う。シグナルに関しては数は多いが使うのは限られているはずなので、少しずつ慣れていきたい。03:05プロセスについてTweet広告を非表示にする関連記事2014-03-18「誰のためのデザイン?」を読み終えたUIの勉強として一冊読み終えたので感想などを書いてみる。基礎編あまりシェルスクリプトを書いたことが無かったので、基本的な...2012-09-16標準ストリーム今回はUNIXの標準ストリームに関して。「誰のためのデザイン?」を読み終えたUXデザイン入門を読み終えた2桁7セグメントLEDとモーションセンサArduinoを触ってみた本を読み終えたよリンクヘルプはてなブログお知らせ月別アーカイブはてなブログをはじめよう!Silent-Bobさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。