web-dev-qa-db-ja.com

ターミナルが親にならないように、ターミナルからコマンドを開始するにはどうすればよいですか?

コマンド「example-command」の例を見てみましょう。

  1. ターミナルを開く
  2. 私は書きます example-commandターミナルで、およびexample-command実行します。
  3. ターミナルを閉じると、example-commandも殺されます。
  4. 今は「example-command & "ですが、同じ動作です。

ターミナルを閉じたときにコマンドが終了しないようにコマンドを実行するにはどうすればよいですか?

25

結果が同じである2つの方法があります。

  1. プログラムを開始するときは、Nohupを使用してください。例:Nohup example-command。バックグラウンドで通常どおりに作業できます。終了した後も実行を継続します。
  2. または、 @ alamarが指摘したように 、シェルとしてbashを使用する場合は、disownコマンドを使用できます。残念ながら、私が知る限り、disownはbash固有です。 tcshなどの別のシェルを使用する場合は、上記のNohup形式に制限される可能性があります。
28

最初に同様の質問を検索してください。

上記の方法に加えて、次のことができます。

setsid command_name

例えば:

setsid xclock

ありがとう

11
Bash

Zsh(bashではない)では、次のことができます。

example-command &; disown {pid}

あるいは単に

example-command &; disown
7
alamar

screen コマンドの使用を検討することもできます。

5
MatthieuP

Nohupの例-コマンド

1
hiena

'at'または 'batch'コマンド を使用して、現在の時刻を指定することもできます。

1
Shane C. Mason

disownはbashに組み込まれています。次のようなコマンドのラッパーシェルスクリプトを作成できます。

#!/bin/bash
$1 &
P=`which $1`
disown `pidof ${P}`

(決して)最も堅牢なスクリプトではありませんが、作業を進めるのに役立つ場合があります。例えば:

$./launch_script.sh myProgram

プログラムを編集している場合は、プログラムのソースでこれを行うこともできます。

1
Aiden Bell