3

Linux シェルでジョブを起動するには、ジョブを起動したシェルが終了してもジョブが存続するようにするにはどうすればよいですか?

具体的には、プロセスで strace を実行しようとしています。ターミナルで実行すると完全に動作します。ただし、すべてのコマンドが実行されるとすぐに停止するリモートシェルで実行したいと考えています。"strace -p pid &"シェルが停止すると、バックグラウンド ジョブも強制終了されるため、効果はありません。

どうすればいいですか?

nohup私が探しているもののようです。ただし、ssh user@remote_machine script_nameどちらも効果がないようです。私が持っているスクリプトで"nohup strace -p pid"

どうもありがとう!

4

3 に答える 3

6

NohupまたScreen、セッションが切断されている場合やユーザーがログアウトしている場合でも、コマンドを実行するために使用できます。両方使っていますが、「画面」の方がいいです。

nohup ./<script_name> &

画面の使い方は?

タスクを作成します。

$ screen -S task

タスクウィンドウでコマンドを実行します。タスクが完了していない場合は、次を使用します。

$ Ctrl+a+d
to save the task. It will show the following info:
[detached]

タスクが終了したら、「exit」を使用して画面を終了します。

    $ exit

[screen is terminating]

screen -ls画面情報を検索するために使用できます。

$ screen -ls
There is a screen on:
10000.task (Detached)

「screen-r」を使用してタスクを回復します。

$ screen -r 10000
于 2013-02-01T21:18:25.950 に答える
2

あなたは「スクリーン」を使うことができます!使用法:

screen [Enter]
enter your command
[Ctrl] + [A] + [D(Detach)]

タスクは引き続き実行されます。それに戻りたい場合は、次のように入力してください。

screen -r

また

screen -r -d (to detach old sessions)
于 2013-02-01T21:19:47.457 に答える
1

他の回答に加えて、次のように batch(1) コマンドを (おそらくリモートで) 使用することをお勧めしますssh

  batch << ENDBATCH
    strace -p 1234 -o /tmp/trace.file
  ENDBATCH
于 2013-02-02T05:57:16.257 に答える