私は次のような状況にあります。
ルートはScript_A.sh
サーバー上で実行され、トリガーされるまでスリープモードのままです。トリガーされると、関数が呼び出され、Script_B.sh
サーバー上で関数が繰り返され、何をすべきかが決まります。ジョブリストが作成されると、プロセス所有者Script_C.sh
(su - $sUser -c "/path/to/correct/script.sh"
)に送信されます。
su - $sUser -c "/path/to/correct/script.sh"
私の質問:これをバックグラウンドで実行する方法はありますか? 3番目のスクリプトを順番に実行したくありません。
答え1
&
いつものように最後に置くのが私にとって効果的です。
su - "$sUser" -c "/path/to/script.sh" &
それでも問題が解決しない場合は、問題の詳細を含めるように質問を編集する必要があります。
答え2
コマンドを追加することは、&
バックグラウンドでコマンドを実行する方法です。だから:
su - $sUser -c "/path/to/correct/script.sh" &
または、スクリプトがスクリプトBからSIGHUP(停止信号)を受信しないようにするには、次のようにします。disown
su - $sUser -c "/path/to/correct/script.sh" & disown
これを使用するときに必要な正確な効果をもたらすかどうかは100%確信できませんsu
。このnohup
コマンドは端末への出力を停止するため、この種の労力にも役立ちますが、特定の状況によって異なります。
この回答&
disown
、およびの使用に関する追加の説明がありますnohup
。