スクリプトが終了した後、バックグラウンドプロセスを実行します

RussNS

これは長い投稿なので、事前に質問してください(TLDRスタイル):元のスクリプトを完全に終了させながら、スクリプトのバックグラウンドプロセスとして2つのチェーンコマンド(つまり、cmd1; cmd2)を開始するより良い方法はありますか?

これと同様の質問が3年前に尋ねられましたが、それは私のニーズをカバーしていませんでした。この質問は、スクリプトの終了時にバックグラウンドプロセスを開始することで最終的に回答されました。スクリプトが終了したこのバックグラウンドプロセスを開始する必要があります。

完全に実行して終了するためにスクリプトが必要な状況がありますが、スクリプトが終了した後、2つのバックグラウンドタスクを実行するためのスクリプトが必要です。

タスクは次のとおりです。

sleep 5
service proprietaryAgent restart

スリープは、元のスクリプトが終了する時間を与えるためだけにあります。したがって、このコマンドは、スクリプトの終了時に実行される可能性があると思います。摩擦は、「proprietaryAgent」です。このエージェントは、スクリプトをリモートで実行できるようにするメカニズムです。そのため、スクリプト中に再起動すると問題が発生します。バックグラウンドジョブを開始して終了するスクリプトを実行する必要があります。そのバックグラウンドジョブは、基本的に「少し待ってから(元のスクリプトが完全に終了するまで)、このエージェントを再起動する」必要があります。

私はもう試した:

sleep 5;service proprietaryAgent restart &
disown
exit 0

そして私は試しました:

nohup sleep 5;nohup service proprietaryAgent restart &
exit 0

ロジックがそこで失敗するのは確かです。フォアグラウンドプロセスとしてスリープを開始すると、スクリプトは「sleep 5」呼び出しを所有し、スリープが完了するまで終了しません。これにより、スクリプトが終了するときに、proprinativeAgentが再起動します。ただし、この質問の要件は、proclusiveAgentが、終了中または終了前ではなく、スクリプトの終了後に開始する必要があることです。

私も試しました:

trap "nohup sleep 5;nohup service proprietaryAgent restart &" 0
exit 0

しかし、トラップは終了を検出し、キックオフしてから完全に実行します。その後、スクリプトを完全に終了します。だからそれはうまくいきませんでした。

だから私が試したグーバーのように:

nohup sleep 5 &;nohup service proprietaryAgent restart &
exit 0

私はこれが何をするのか正直に知りません。試してみました。しかし、この文脈では(私は思う)睡眠はそれ自体がバックグラウンドプロセスであり、連鎖「;」から切り離されています。これにより、次のコマンドが待機します。

最後に、これを試しました(基本的に、スクリプトに2番目のスクリプトを記述させ、バックグラウンドで開始します)。

echo "#!/bin/bash" > /var/tmp/restartAgent.sh
echo "sleep 5" >> /var/tmp/restartAgent.sh
echo "service proprietaryAgent restart" >> /var/tmp/restartAgent.sh
chmod 755 /var/tmp/restartAgent.sh

nohup /var/tmp/restartAgent.sh &
exit 0

まだトラブルシューティングが必要ですが、私はここに近いと思いますが、元の質問に戻ります。私がこれに取り組むべき「より良い」方法はありますか?

遺伝子

最後に試したことがうまくいくはずです。コマンドを別のファイルに書き込むことをバイパスして、代わりに次のようなことを行うことができます。

nohup bash -c "sleep 10 ; service opsware-sas restart opswgw" &

もう1つのオプションは、atコマンドを使用して将来のジョブをスケジュールすることです。例えば:

at -f /path/to/script.sh now + 1 minute

service opsware-sas restart opswgw事前に作成されたコマンド(または親スクリプトによって作成された一時的なスクリプト)を呼び出す外部スクリプトが必要になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

pytoexeconverterでPythonスクリプトをexeに変換した後も、プロセスはバックグラウンドで実行されています

分類Dev

バックグラウンドプロセスからスクリプトを終了しますか?

分類Dev

バックグラウンドプロセスからスクリプトを終了しますか?

分類Dev

新しいバックグラウンドtmuxウィンドウでコマンドを実行し、プロセスが終了するのを待ちます

分類Dev

PythonスクリプトをWindowsバックグラウンドプロセスとして実行する

分類Dev

バックグラウンドスクリプトが強制終了されたらアクションを実行します

分類Dev

phpはバックグラウンドプロセスを実行します

分類Dev

バックグラウンドに置いた後、Linuxで実行中のプロセスに戻します

分類Dev

Tclスクリプトがバックグラウンドプロセスで実行されているかどうかを検出します

分類Dev

sshでバックグラウンドプロセスを開始し、実験スクリプトを実行してから停止します

分類Dev

バックグラウンドプロセスを実行し、いくつかの中間処理の後にそれを強制終了します

分類Dev

ssh接続が閉じられた後、バックグラウンドでJavaを経由してbashスクリプトを実行します

分類Dev

Bashスクリプト-プロセスを実行し、適切な場合はバックグラウンドに送信します。

分類Dev

親が最初に終了した場合、バックグラウンドプロセスは完了しますか?

分類Dev

Python 2.7:最後のバックグラウンドプロセスを強制終了します

分類Dev

すべてのバックグラウンドプロセスを迅速に完了した後、関数を実行します

分類Dev

Pythonスクリプトがバックグラウンドプロセスとして実行されているかどうかを検出する方法

分類Dev

バックグラウンドでプロセスを開始し、タスクを実行してから、バックグラウンドでプロセスを強制終了します

分類Dev

スクリプトからバックグラウンドプロセスを開始し、スクリプトが終了したときにそれを管理します

分類Dev

出力をログファイルにリダイレクトし、同時にプロセスをバックグラウンドで実行できますか?

分類Dev

コマンドラインからPHPスクリプトをバックグラウンドプロセスとして実行する

分類Dev

ターミナルを閉じた後、バックグラウンドでプロセスを実行しています

分類Dev

bash:バックグラウンド関数プロセスをサイレントに終了します

分類Dev

VBAでスクリプトを実行した後、Cmdウィンドウを終了します

分類Dev

Pythonを使用してバックグラウンドで実行されるプロセスを作成します

分類Dev

プロセスをバックグラウンドで実行し、すべてが処理されたかどうかを確認します

分類Dev

onActivityResultを実行した後、アプリがバックグラウンドになります

分類Dev

bashスクリプト内でsshセッションを終了した後、リモートマシンでプロセスを実行し続けます

分類Dev

バックグラウンドプロセスでsshスクリプトを実行する

Related 関連記事

  1. 1

    pytoexeconverterでPythonスクリプトをexeに変換した後も、プロセスはバックグラウンドで実行されています

  2. 2

    バックグラウンドプロセスからスクリプトを終了しますか?

  3. 3

    バックグラウンドプロセスからスクリプトを終了しますか?

  4. 4

    新しいバックグラウンドtmuxウィンドウでコマンドを実行し、プロセスが終了するのを待ちます

  5. 5

    PythonスクリプトをWindowsバックグラウンドプロセスとして実行する

  6. 6

    バックグラウンドスクリプトが強制終了されたらアクションを実行します

  7. 7

    phpはバックグラウンドプロセスを実行します

  8. 8

    バックグラウンドに置いた後、Linuxで実行中のプロセスに戻します

  9. 9

    Tclスクリプトがバックグラウンドプロセスで実行されているかどうかを検出します

  10. 10

    sshでバックグラウンドプロセスを開始し、実験スクリプトを実行してから停止します

  11. 11

    バックグラウンドプロセスを実行し、いくつかの中間処理の後にそれを強制終了します

  12. 12

    ssh接続が閉じられた後、バックグラウンドでJavaを経由してbashスクリプトを実行します

  13. 13

    Bashスクリプト-プロセスを実行し、適切な場合はバックグラウンドに送信します。

  14. 14

    親が最初に終了した場合、バックグラウンドプロセスは完了しますか?

  15. 15

    Python 2.7:最後のバックグラウンドプロセスを強制終了します

  16. 16

    すべてのバックグラウンドプロセスを迅速に完了した後、関数を実行します

  17. 17

    Pythonスクリプトがバックグラウンドプロセスとして実行されているかどうかを検出する方法

  18. 18

    バックグラウンドでプロセスを開始し、タスクを実行してから、バックグラウンドでプロセスを強制終了します

  19. 19

    スクリプトからバックグラウンドプロセスを開始し、スクリプトが終了したときにそれを管理します

  20. 20

    出力をログファイルにリダイレクトし、同時にプロセスをバックグラウンドで実行できますか?

  21. 21

    コマンドラインからPHPスクリプトをバックグラウンドプロセスとして実行する

  22. 22

    ターミナルを閉じた後、バックグラウンドでプロセスを実行しています

  23. 23

    bash:バックグラウンド関数プロセスをサイレントに終了します

  24. 24

    VBAでスクリプトを実行した後、Cmdウィンドウを終了します

  25. 25

    Pythonを使用してバックグラウンドで実行されるプロセスを作成します

  26. 26

    プロセスをバックグラウンドで実行し、すべてが処理されたかどうかを確認します

  27. 27

    onActivityResultを実行した後、アプリがバックグラウンドになります

  28. 28

    bashスクリプト内でsshセッションを終了した後、リモートマシンでプロセスを実行し続けます

  29. 29

    バックグラウンドプロセスでsshスクリプトを実行する

ホットタグ

アーカイブ