1

完了するのに時間がかかるスクリプトがあります。

終了するのを待つのではなく、ログアウトして後で出力を取得したいと思います。

私はもう試した;

at -m -t 03030205 -f /path/to/./thescript.pl

nohup /path/to/./thescript.pl &

また、使用したスケジューリング構文に応じpsて、プロセスが実際に存在することも確認しました。at -l

これらのプロセスは両方とも、シェルを終了すると終了します。接続を閉じたときにスクリプトが終了しないようにする方法はありますか?

atここにcronがあり、それらはセットアップされて正しく機能していますが、またはnohup使い捨てスクリプトを使用したいと思います。

私の構文に何か問題がありますか?望ましい結果を生み出す他の方法はありますか?


編集:
使用できない、screenまたはdisown-HP Unixセットアップにインストールされておらず、インストールする立場にもありません

4

5 に答える 5

12

screenを使用します。ログアウトしても継続する端末を作成します。再度ログインすると、元に戻すことができます。

于 2011-03-04T07:19:56.823 に答える
5

ログアウト後もプロセスを実行し続けたい場合:

disown -h <pid>

便利な bash 組み込みです。とは異なりnohupdisownすでに実行中のプロセスで実行できます。

まず、control-Z でジョブを停止し、pid を取得ps(または を使用echo $!) し、 を使用bgしてバックグラウンドに送信してからdisown、-h フラグを使用します。

ジョブをバックグラウンドにすることを忘れないでください。そうしないと、ログアウト時に強制終了されます。

于 2011-03-04T07:38:13.730 に答える
4

これは単なる推測ですが、ssh と nohup のいくつかのバージョンで見たことがあります。ssh でログインしている場合は、終了時にセッションがハングするのを避けるために、stdout、stderr 、およびstdin をリダイレクトする必要がある場合があります。 . (そのうちの1つはまだ端末に接続されている可能性があります。)私は試します:

nohup /path/to/./thescript.pl > whatever.stdout 2> whatever.stderr < /dev/null &

(これは、現在のバージョンの ssh と nohup には当てはまりません。後者は、端末に接続されていることを検出するとそれらをリダイレクトしますが、別のバージョンを使用している可能性があります。)

于 2011-03-04T07:25:46.720 に答える
1

nohup の構文は問題ないように見えますが、アカウントによっては、ログアウト後にプロセスを実行できない場合があります。また、stdout/stderr をログ ファイルまたは /dev/null にリダイレクトしてみてください。

于 2011-03-04T07:21:01.010 に答える
1

コマンドをバックグラウンドで実行します。

/path/to/./thescript.pl &

バックグラウンド ジョブの情報を取得するには

   jobs

これで、ジョブ ID を使用して、上記のジョブのいずれかを選択的に否認できるようになりました。

disown <jobid>

ログアウトした後も、所有権を剥奪されたプロセスはすべて実行し続ける必要があります。

于 2011-03-04T07:29:53.697 に答える