端末を閉じた後も永続的なコマンドを実行するには?

端末を閉じた後も永続的なコマンドを実行するには?

時には、プロセスを開始して忘れたい場合があります。次のようにコマンドラインから始める:

redshift

端末を閉じることができないか、プロセスが終了します。プロセスを終了せずに端末を閉じることができるようにコマンドを実行できますか?

答え1

次の2つのうちの1つが機能するはずです。

$ nohup redshift &

または

$ redshift &
$ disown

仕組みの詳細については、下記をご覧ください。

答え2

あなたのプログラムすでに実行中Ctrl-Zを使用して一時停止し、バックグラウンドにドラッグしてbgからdisown次のように使用できます。

$ sleep 1000
^Z
[1]+  Stopped                 sleep 1000
$ bg
$ disown
$ exit

答え3

@Steven Dが素晴らしい答えを投稿しました。しかし、私はこれがもう少し明確になると思いました。

端末がシャットダウンしたときにプロセスが終了するのは、開始したプロセスが端末の子プロセスであるためです。端末が閉じると、これらのサブプロセスも終了します。pstreeたとえば、kate &Konsoleで実行している場合は、次のようにプロセスツリーを表示できます。

init-+
     ├─konsole─┬─bash─┬─kate───2*[{kate}]
     │         │      └─pstree
     │         └─2*[{konsole}]

終了時にプロセスを分離するには、kate次のようにコマンドと一緒に使用します。konsolekonsolenohup

nohup kate &

閉じると、konsole次のようpstreeに表示されます。

init-+
     |-kate---2*[{kate}]

そしてkate生き残るだろう。 :)

代替方法はscreen//を使用することですtmuxbyobuこれにより、端末に関係なくシェルが実行され続けます。

答え4

私は好む:

(applicationName &)

たとえば、 linux@linux-desktop:~$ (chromium-browser &)

コマンドを入力するときは、必ず括弧を使用してください。

関連情報