バックグラウンドで複数のnohupコマンドを実行する


12

2つのコマンドcmd1とcmd2を取得しました。2つのうち、cmd2の完了には時間がかかります。cmd2を実行してからcmd1を実行する必要があります。

次の方法でそれらを実行しようとしました:

bash$ (nohup ./cmd2>result2 &) && nohup ./cmd1>result1 &

または

bash$ (nohup ./cmd2>result2 &) ; nohup ./cmd1>result1 &

しかし、どちらの場合も、cmd1はcmd2が完了するのを待っておらず、result1がいっぱいになっていることがわかります。

両方をnohupプロセスにし、バックグラウンドで実行する必要があるときに、cmd1をcmd2の後に実行する方法は?



2
unix.stackexchange.com/questions/67006/…の質問は、実行順序を維持したかったので少し異なります。他の質問の理解に誤りがある場合は訂正してください。
user33767

回答:


12

両方cmd1を作成cmd2し、並行して実行しました。「cmd2をバックグラウンドで開始し、cmd2との関連付けをすべて解除します。バックグラウンドでcmd1を開始し、それに関連付けられている部分を切断します。」つまり、「cmd2をバックグラウンドで開始します。それが完了したら、cmd1を開始します(これもバックグラウンドで)。」バックグラウンドタスクとの関連付けがなくなったため、cmd2を実行してからcmd1を実行するバックグラウンドタスクを考案する必要があります。これはcmd2; cmd1(またはcmd2 && cmd1cmd2が成功した場合にのみcmd1を実行するため)、nohupそのためにバックグラウンドで実行されているシェルを開始するように指示する必要があります。

nohup sh -c './cmd2 >result2 && ./cmd1 >result1' &

ありがとう。正常に動作しています。ええ、それは私が考えていたものです、最初のコマンドをバックグラウンドにした後、最初のコマンドが完了するのを待ってほしかったのに、それは開始する2番目のコマンドには影響しません。バックグラウンドへのコマンド送信に関するマニュアルを読む必要があります。
user33767 2013年

3

nohupを使用しないことを気にしない場合:

{ command1 >result1 2>&1 && command2 >result2 2>&1 ; } & disown

それをチェックします。しかし、現在は、コマンドがshでラップされているGilesからの回答で行く予定です。とにかくありがとう
user33767

これは悪い考えです。ユーザーがコンソールからログアウトすると、セッションが終了します。
mootmoot 2017年

@mootmootこれは意図したとおりに機能します。これを自分で確認してください。親シェルが終了するとき、コマンドはSIGHUPを受け取りません。
artyom

はい、crond / crontabを使用してコマンドを実行すれば、シェルセーフです。しかし、pty / xterm / sshは安全ではありません。 unix.stackexchange.com/questions/3886/...
mootmoot

2

単に使用する:

nohup ./cmd2>result2 & nohup ./cmd1>result1 & nohup ./cmd3>result3 &

複数のコマンドを実行するのは問題ありませんが、実行の正確な順序、つまりcmd2、次にcmd1の順序を維持したかったのですが、上記のコマンドでは発生しません。おかげで
user33767

0

cmd2とcmd1で正確に何をしているのかをお知らせください。これは、タスクのタイプとコマンドからの出力に依存します。あなたが2回打つことで問題に直面しているなら、コマンドでキーを入力してください、それは私のこの投稿で理解できます

あなたもこの方法で行くことができます

nohup `cmd2 && ccmd1` > Output.out 2> Error.err < /dev/null & 

以下のスクリーンショットを参照してください。ここでは3つのコマンドを使用しており、すべてが1つずつ順番に実行されています。このタスクにはバックティックを使用しました。スクリーンショットでは、日付のタイムスタンプも確認できます。sleepコマンドには60秒ありますが、60秒後に次のコマンドが正常に実行されます。ジョブコマンドを使用して、バックグラウンドで実行中のコマンドを確認しました。ここではありません。あなたが見ることができる仕事の1です。

nohup-multiple-command

このスクリーンショットは、表示されていない場合は、このリンクでも利用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.