Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
OrganizationEventAdvent CalendarQiitadon (β)
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

nohup コマンド


この記事は Linux コマンド 全部オレ Advent Calendar 2017 の14日目の記事です。

     nohup -- invoke a utility immune to hangups

     nohup [--] utility [arguments]

     The nohup utility invokes utility with its arguments and at this time sets the signal
     SIGHUP to be ignored.  If the standard output is a terminal, the standard output is
     appended to the file nohup.out in the current directory.  If standard error is a ter-
     minal, it is directed to the same place as the standard output.

     Some shells may provide a builtin nohup command which is similar or identical to this
     utility.  Consult the builtin(1) manual page.

意味としては HUP シグナルを無視したいときに使う。


nohup コマンド & で、コマンドを実行し仮想端末を閉じたりログアウトしてもコマンドが動き続けるようにする。
一般的には仮想端末を閉じると、HUP シグナルが送られてそのプロセスは終了する(※)が、それを無視することでプロセスを動かせ続けるようにする。

[sinsengumi ~]$ nohup sleep 30 &

nohup つけなくても動き続けてるけど?

bash だと huponexit がデフォルト OFF になっているから。これが OFF だと exit しても SIGHUP は送られない。


nohup とデーモンの違い


  1. バックグランドで動作している
  2. 制御端末を持たない
  3. 他のプロセスグループに属さない
  4. 親プロセスが init

3, 4 あたり満たしてないので、デーモンとは言わない感じ。
systemd や supervisord などでサービス化されてるものはデーモンと呼んで良さそう。


Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Help us understand the problem. What are the problem?