0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Linuxでバックグラウンド実行】nohupと&とbgの挙動の違い

Last updated at Posted at 2024-02-25

Linuxでバックグラウンド実行といえば、「nohup hogehoge &」が定番ですが、単に&をつけた場合や、nouhpのみの場合、またbgの場合の挙動の違いを知りたく、動作確認してみました。

検証に使うコマンドは以下です。
jarファイルはspring bootプロジェクトを固めたもので、実行することによりtomcatが起動します。

java -jar sample.jar

動作確認環境

OS:CentOS Linux release 7.9.2009 (Core)
(サクラインターネットのVPS)

ターミナルソフト:RLogin

検証パターン

以下を試しました。

  • パターン1 : ctrl + cを実行
  • パターン2 : ctrl + cを実行せずにexitでターミナル切断
  • パターン3 : ctrl + cを実行後にexitでターミナル切断
  • パターン4 : ctrl + cを実行後ターミナルソフトの×ボタン押下
  • パターン5 : ctrl + cを実行せずにターミナルソフトの×ボタン押下

なお、ターミナルソフトのウィンドウの×ボタンをクリックするのは褒められたものではないですし、ソフトによって挙動が変わることも十分考えられるため、あくまで参考程度です。

検証結果

横長になってしまうので、2つの表に分けました。
「パターン1 : ctrl + cを実行」は二重記載になってしまっていますがご容赦ください...

パターン1、2、3

実行コマンド ctrl+cを実行 ctrl+cを実行せずにexitで切断 ctrl+cを実行後にexitで切断
java -jar sample.jar & プロセスは終了しない プロセスは終了しない プロセスは終了しない
nohup java -jar sample.jar プロセスが終了する (※コマンド入力が利かない) プロセスが終了する
nohup java -jar sample.jar & プロセスは終了しない プロセスは終了しない プロセスは終了しない
bg(※下記参照) プロセスは終了しない プロセスは終了しない プロセスは終了しない

パターン1、4、5

実行コマンド ctrl + cを実行 ctrl + cを実行後ターミナルを切断 ctrl + cを実行せずにターミナルを切断
java -jar sample.jar & プロセスは終了しない プロセスは終了しない  プロセスが終了する
nohup java -jar sample.jar プロセスが終了する プロセスが終了する プロセスは終了しない
nohup java -jar sample.jar & プロセスは終了しない プロセスは終了しない プロセスは終了しない
bg(※下記参照) プロセスは終了しない プロセスが終了する プロセスが終了する

bgコマンドについて

bgコマンドは、一度フォアグラウンドで起動したものを、途中からバックグラウンドに切り替えるコマンドです。最初からバックグラウンド実行するものではありません。

まず

java -jar sample.jar

とフォアグラウンド起動しておいてから、ctrl + zで一時停止させた後、bgコマンドを実行します。
上記の一覧表は、bgコマンド実行後に確認したものです。

まとめ

やはり

nohup java -jar sample.jar &

が最強。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?