BLOGTIMES
2011/02/07

nohupをつけ忘れたときは

  cli  sh 
このエントリーをはてなブックマークに追加

通常、ターミナルからログアウトするとその配下にあるプロセスにSIGHUPが送られます。SIGHUPを受けると普通のプロセス*1は終了するようになっているので、バックグラウンドにプロセスをまわしていたとしても、ログアウト時に全て強制終了させられてしまいます。これを防いでログアウト後もコマンドを実行させ続けるためにはcommandを下記のようにnohupをつけて実行する必要があります。

$ nohup command

今日、帰り際にターミナルからコマンドを起動したら予想以上に時間がかかってしまって「こんなんだったら初めからnohupつけて実行して、おけばよかった・・・・」という状況になってしまいました。なんか最初からやり直すのも癪だし、よい方法がないものかと調べてみたら、disownというコマンドを使えばバックグラウンドのジョブにSIGHUPの影響を受けさせないようにできることがわかりました。

プロセスのバックグラウンド化(nohupとdisown) - Notes.

ログアウトしたいのにnohupコマンドをつけずに開始したプロセスが走り続けている場合は、disownコマンドを使います。 jobsコマンドでプロセス番号を確認し、disownでその番号を指定します。

一通りはコマンドを覚えているという自負はあったのですが、まだまだですね。

  • *1: デーモンになるプロセスはHUPを受けとっても終了しないようになっている

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4058
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン