PuTTYまたはOTHER-PuTTYを終了した後もコマンドを実行し続ける[複製]


13

実行する必要があるコマンドがいくつかあります。これらのコマンドは、インターフェイスを終了した後でも継続的に実行する必要があります。Linux GUIにアクセスできるとき、次のようなことを実行します。

cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e  "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &

どんな助けも大歓迎です。



これらのサービスをデーモンとして実行していない理由はありますか?
SevenSidedDie 14年

コマンドは、ほぼ100%のアップタイムで「永久に」実行されるサービス、またはしばらくして終了すると予想される長時間実行される処理タスクを目的としていますか?どちらの場合も、すべての回答は「機能」しますが、適切な推奨事項は異なります。
ペティス14年

Linuxのどの特定のディストリビューションを使用していますか?実行set -m;すると、CentOSとRHELでログアウトした後もスクリプトが実行され続けることがわかりました。
ArtOfWarfare

回答:


33

試してみる

nohup Background_ScriptX&

nohupは、端末が閉じられたときにプロセスが終了しないようにします。&記号は、プロセスをバックグラウンドにプッシュします。

これがお役に立てば幸いです。


nohupは間違いなく仕事をしています
ピット14年

助けてくれてうれしい。
イーモントラバーズ14年

15
画面には、上の1つの明確な利点があるnohupをするnohupはは(など、それを殺すことを選択した後、その標準出力を読み取るために次の日の朝など)実行中の命令に戻ることはできません。 画面では、まさにそれを行うことができます。
アンドレアスF 14年

1
nohupは、出力を処理可能なファイルに送信します。
ブライアンノブラウフ14年

新しいしている人のためにnohupnohupをして、ハングアップ( - 、それは基本的に「何のハングアップ」ませんHUP)信号は無視されます。
Dan7119 14年

20

後日出力を読みたい場合は、次を使用できますscreen

screen -d -m my_command

これにより、後で(screen -r)に接続してstdout / stderrの出力を読み取ることができる切り離されたターミナルが提供されます。


2
+1。たとえば、端末(たとえば、パテ)を閉じてから再度開いて画面(screen -r)に再接続すると、プログラムで生成されたすべての出力が得られ、それ以外の場合は "欠落"します。さらに、screenは、分割画面など、非常に多くの驚くべきことを実行できます!:)
アルベルトサンティーニ14年

6

nohupコマンドを使用できない場合の別のオプションは、disownコマンドを使用することです

最初にjobs、ターミナルで実行してバックグラウンドタスクを表示できます。そこからジョブ番号を取得できます。

ここで実行するだけdisown %[job number]で、プロセスは現在のターミナルから切り離され、ログアウトしても生き続けます。

サイドノート:正しい質問をしていることを確認してください。サンプルのヒントとして実際のサービスを実行している場合は、選択したOSでデーモンを作成する方法を調べてください。これは、再起動後もプロセスが実行されるようにし、他のサービスとの一貫性を保つためです。

お役に立てれば。


3

screen言及されて以来:そこには他の端末マルチプレクサがあります。私はtmuxとても気に入っています。たとえば、他のスーパーユーザーの質問、tmux vs screenを比較してください。


0

また、試すこともできます: setsid Setsidはバックグラウンドプログラムでも機能し、端末/ sshセッションが切断された後も実行を続けることができます。

次のように使用します。

setsid program-to-background

マンページ:http : //man7.org/linux/man-pages/man2/setsid.2.html

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