« ベスト電器からお手紙 | メイン | 消化不良でも RanRan へ »

2005年07月25日

プロセスをバックグラウンドに移す

プログラムをバックグラウンドで実行する場合は、以下のようにすればできます。

$ command &

要は、最後に & を入れればいい。しかし、実行した後のプロセスをバックグラウンドに移せないものかと調べていたら、あった。

サスペンド(Ctrl + z)にした後、以下のコマンドを実行。

$ bg

これ便利。バックグラウンドで動かそうとすると、実行エラーで強制終了されているのに気づかないときがあったのだ。これで、上手く実行されていることを確認した後、バックグラウンドに移せる。

【関連情報】
・実行中のプロセスをバックグラウンドに移したい
 http://www.itmedia.co.jp/help/tips/linux/l0244.html

2005年07月25日 23:44 | Technology

トラックバック

コメント

ジョブの一覧は、jobsコマンドで見られるね。
あとは、nohupをつけて起動するとか。

投稿者 sk : 2005年07月26日 00:49

>> sk さん
nohup が便利そう。標準出力が書き込めない場合は、起動しないみたいだけど。
# 僕は、標準出力は > out.txt みたいに、ファイルに出す癖があるけど。

投稿者 ceekz : 2005年07月26日 18:13

ついでに、disown なども。

投稿者 hirobo : 2005年07月28日 00:19

>> hirobo さん
これいい。
SSH を抜けた後、知らない間にバックグラウンドプロセスが終了してたのって SSH のコネクションが、サーバ側で切断されたからか。
逆に言うと、動き続けてたのは、クライアント側で強制切断しているので、サーバ側にはコネクションが残っていると。

こんな認識で正しいんかいな。

投稿者 ceekz : 2005年07月28日 01:28

たぶん、動きつづけていたプロセスは、SIGHUP で終了ではなく、再起動するよ
うなプロセスだったんじゃないでしょうか。

ずっと、動かしつづけたいプロセスがある場合、私は次のようにしています。

zsh% sleep 20 /dev/null 2>&1 &|
zsh% sleep 20 /dev/null 2>&1 &!

投稿者 hirobo : 2005年07月28日 10:54

ガ━━(゚Д゚;)━━ソ!
redirect が tag とかんちがいされて消えてしまいました。
というわけで、ソースみてください。

投稿者 hirobo : 2005年07月28日 11:11

>> hirobo さん
えっと。書き込みの一部が消えたみたいですね。

http://www.at.openbsd.org/openssh/ja/faq.html#3.10
と同じかな。

投稿者 ceekz : 2005年07月28日 14:34

そうです。それと & と disown を一気にやるってことです。

JOB ... &|
JOB ... &!
Remove the specified JOBs from the job table; the shell will no
longer report their status, and will not complain if you try to
exit an interactive shell with them running or stopped. If no JOB
is specified, disown the current job.

If the JOBs are currently stopped and the AUTO_CONTINUE option is
not set, a warning is printed containing information about how to
make them running after they have been disowned. If one of the
latter two forms is used, the JOBs will automatically be made
running, independent of the setting of the AUTO_CONTINUE option.

投稿者 hirobo : 2005年07月28日 17:58