opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

ジョブについて

基礎的なことかもしれないけど使わないからあんまり知らないだぁ... ということで軽くzshでのjobについてメモ。

バックグラウンドでの実行方法とjobsコマンド

 $ ./script &

などとして実行したコマンドはバックグラウンドで実行されるが、このコマンドをzshはジョブとしてジョブテーブルと呼ばれるものに登録する。(らしい)

これに関してはjobsコマンドで確認できる。

$ jobs

例えばこんな感じで出力される。

$ jobs
[1]  + running    ./script >&/dev/null

jobsコマンドのオプションとしては、

-d  そのジョブを走らせた時のディレクトリを表示
-l  プロセスIDを表示
-r  実行中プロセスのみ表示
-s  停止中のプロセスのみ表示

という具合(らしい)

また、ジョブを起動するとき&ではなく&!を使うとジョブをジョブテーブルに入れない。

$ ./script &!

とする。

ジョブをフォアグラウンドに切り替える

バックグラウンドで実行中のjobをフォアグラウンドに持ち出すにはfgを使う。

$ fg %num

numに上のjobsで左に出てくるジョブ番号を指定するとそのジョブをフォアグラウンドに持ってこれる。 実はjobspecというのを指定しても良いらしいがよくわからないのでわかりやすいジョブ番号を使うことにした。%が必要なので注意。 また、逆の働きをするもので"bg"というコマンドがある。

指定jobをテーブルから削除する

指定したジョブをジョブテーブルから削除するにはdisownを使うといいらしい。

$ disown

指定を省略すると、カレントジョブが対象になるらしい。 jobsを実行した際に"+"がつくのがカレントジョブ。

指定ジョブをサスペンドする

シェル自身のプロセスをサスペンドさせる。らしい。

例えば ($はユーザーシェル。#はrootのシェルを表すとすると)

$ su
# suspend
$ jobs
[1]  + suspended (signal)  su

という具合。suになり、suspendを実行するとsuがsusupendされてユーザーシェルに帰ってくる。 その状態でjobsを実行すると実際に上のような結果になる。

そしてこの状態で

$ fg

するとsuに復帰できる。

su使うときは切り替えが楽になるね! (今時みんなsudoだろうけどArchLinux使ってれば最悪1回はsu使う機会がある・・・かもしれない) ちなみにおいらは割りと使う。

killコマンドについて

killは特定のプロセスにSIGNALを送信するコマンド。一般に強制終了に用いられたり。 また、利用可能なSIGNALを見るには。

$ kill -l

する。OSX MountainLionだと

HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

という結果がかえる。

例えば、1番のjobを強制終了させる場合SIGKILLを送ってやればいいので

$ kill -s SIGKILL %1

とするといい感じに切れる。

と、いうことで今日はこのへんで

Firefox ブラウザ無料ダウンロード