ターミナルからプログラムを起動して分離する最も効率的な方法は何ですか?

ターミナルからプログラムを起動して分離する最も効率的な方法は何ですか?

次のような状況が発生するような方法でターミナルからプログラムを起動しようとしています。

  1. ターミナルを閉じてもプログラムは終了しません
  2. プログラムは、開いたり、使用したり、閉じたりするときにターミナルに何も出力しません。
  3. ターミナルは他の用途にも自由に使用できます
  4. コマンドは短くてわかりやすい
  5. 心配する出力ファイルはありません

答え1

見るman nohup

NAME
   nohup - run a command immune to hangups, with output to a non-tty

答え:

nohup program-name &

答え2

これが最も完全な方法だと思います:

program-name </dev/null &>/dev/null &
disown %%

バックグラウンド プロセスを放棄すると、シェルはそれを追跡しなくなります。プロセスが完了したことを通知しません。シェルを閉じるのを妨げることはありません。は%%「最近バックグラウンドで実行されたジョブ」を意味します。

すべての詳細を隠したい場合は、.bashrcに次のような関数を入れてください。

launch_and_forget () { "$@" </dev/null &>/dev/null & disown %%; }

それから

launch_and_forget program args "args args" ...

あなたにとって意味のある名前を付けてください。

答え3

非常に簡単にsetsid:-

NAME
       setsid - run a program in a new session

SYNOPSIS
       setsid program [arg...]

DESCRIPTION
       setsid runs a program in a new session.

次のコマンドを試してください:-

setsid <command>

例: setsid gedit-setsid nautilus ~/Downloads/など

答え4

どちらかをお勧めしますtmux、 としてレン・シユアン提案、またはGNUスクリーンそうすれば、コマンド用の新しいターミナルが手に入ります。ターミナルを切り離して忘れてもいいですが、気が変わったら元に戻すことができます。

関連情報