crontabを使用せずにバックグラウンドでスクリプトを継続的に実行する方法スクリプトは私がログアウトした後でも実行しなければならず、システムの再起動後に起動しなければ受け入れられます。私はUNIXには新しくありません。crontabを使用せずにバックグラウンドでunixスクリプトを実行する方法を教えてください。
答えて
&オペレータを使用してバックグラウンドで開始します。
(a)の実行が完了するか、(b)は、あなたがそれまたは(c)システムを再起動殺すまでこれが継続されます./abc.sh &これを行うためのいくつかの方法が、neatest方法はあり
screenを使用することです。これにより、マシン上に永続的に存在するセッションを作成し、再接続して長時間実行されているプロセスの進行状況を確認することができます。
あなたは、これはあなたのようなタスクを実行することができますnohup
を使用することができますscreen
を使用したくない場合は、次の
nohup mytask &
あなたの仕事は今、バックグラウンドで実行され、ログをオフに生き残るだろう、 screen
とは異なり、もう一度それを制御する方法はありません。
上記のようにバックグラウンドで起動するだけでなく、 'nohup'を使用する必要があります。これは、たとえあなたが端末を閉じても、実行を継続することを意味します。これは、あなたがデーモンとしてスクリプトを実行することができる方法である./abc.sh &
if [ "x$1" != "x--" ]; then
$0 -- 1> /dev/null 2> /dev/null &
exit 0
fi
nohupを。最初にあなたの脚本(父親)は自分自身のコピー(子供)を作成し、父親のプロセスとして考慮します。子供がまだ走っている間、父はそれ自身を殺します。あなたがそのようなことをしたらどうなるのでしょうか?子プロセスはinitプロセスにアタッチされます。したがって、ログアウトしてもスクリプトは実行されます。 "&"演算子を使わずに起動することもできます。なぜなら、父親は、1ミリ秒後に殺されるからです。
あなたのコンピュータ上で実行されているプログラムのように、もう一度それを制御することができます。
実際の「デーモン」プログラムではありませんが、エミュレーションのようなものです。ログイン時に起動したい場合は、起動時に起動するだけでは(ブートではなくログオンを意味します)、簡単に入れてください。.xinitrc
このソリューションの主な利点は、あなたのスクリプトは "nohup"のような他のプログラムに依存しません。これは本当に悪いと思います。
ありがとうございます
PS:上記のコマンドに関する情報が必要な場合は、私に尋ねてください。それはちょうど "パラメータ"のものです。
どうしたらいいのか教えてください。実際には、一定の条件を連続的にチェックする必要がある小さなスクリプトがあります。その条件が満たされるとすぐにプログラムを実行する必要があります。これはできますか?私はスクリプトが5分ごとに実行されるcrontabを使用することを考えましたが、現在はcrontabなしで実行したいと考えています – Atul
それが継続的に実行されるスクリプトでない場合は、cronを使用する必要があります。 私の投稿の最初に与えた条件の説明は次のとおりです: プログラムの最初の引数が " - "でない場合:引数 " - "を指定して同じスクリプトを実行し、エラーは別の場所にリダイレクトされます/ dev/nullはゴミ箱のフォルダです)と標準出力です。 その後、終了します。 無限に実行するには[true]を長押しします。あなたのwhileループでは、スリープ機能を必要な時間(あなたのために5分)だけ追加し、その後は通常のbashスクリプトです。 ここに例があります:http://pastebin.com/us76BRKj – Depado
runing中にnohupでこれを実行する必要がありますか? – Atul
他にも触れたように、nohupを使用すると、プロセスがハングアップ信号を受け取らないようにする必要があります(no-h-up)。しかし
、あなたが
prompt> nohup process &
として、そもそもバックグラウンドでプロセスを起動する場合は、プロセスがオフに開始するために必要とされる任意のデータを入力することができないという欠点があります。これは、プロセスが必要とするパスワード/クレデンシャルまたは他の入力である可能性があります。
この要件がある場合は、最後に「&」を付けずに起動し、入力してCtrl-Zを押してプロセスをスリープ状態にします。バックグラウンドに送信するには、プロンプトで「bg」と入力してEnterキーを押します。
prompt> nohup process
Enter password:
(Now press Ctrl-Z)
[1]+ Stopped process
prompt> bg
[1]+ process &
ログオフしても、プロセスはバックグラウンドで引き続き実行されます。
また、bashまたはzshを使用していて、nohupを使用してプロセスを開始していない場合は、起動して再起動することはオプションではないので、組み込みのdisownコマンドを使用できます。最初にプロセスを一時停止し、バックグラウンド処理します。そして、ハングアップ信号が届かないようにします。
prompt> process
Enter password:
(Now press Ctrl-Z)
[1]+ Stopped process
prompt> bg
[1]+ process &
prompt> disown -h
注:あなたが実行している他のバックグラウンドジョブを持っていれば、あなただけのこの特定のジョブを否認するジョブ仕様を提供する必要があります。代わりに、あなたが見たい場合は、[1] [2]あなたが一時停止し、バックグラウンドにプロセスを送ったとき、あなたは代わりにdisown -h %2
言うだろうの
prompt> disown -h %1
。
+1事実の後にnohupを使う方法について。私はそれを知らなかった。 – Benj
ありがとうございます。また、最初にnohupで起動していないプロセスに対してSIGHUPが送信されないようにするための説明を追加しました。 –
- 1. スクリプトの実行方法を教えてください。
- 2. Rubyスクリプトの実行をバックグラウンドでスケジュールする方法を教えてください。
- 3. gulpからPowerShellスクリプトを実行する方法を教えてください。
- 4. バックグラウンドでのMKMapSnapshotterの使用方法を教えてください。
- 5. javax.scriptingを使用してスクリプトを実行する方法を教えてください。
- 6. MySQL:selectを実行する前に必ず更新を実行する方法を教えてください。
- 7. djangoアプリを流行の中でバックグラウンドで実行する方法を教えてください。
- 8. Perlを使わないマシンでPerlスクリプトを実行する方法を教えてください。
- 9. データドージョアタッチイベントの実行方法を教えてください。
- 10. Springアプリケーションの実行方法を教えてください。
- 11. Golang:インタラクティブコマンドの実行方法を教えてください。
- 12. react_routerサンプルの実行方法を教えてください。
- 13. XPathにUTF8を使用させる方法を教えてください。
- 14. EclipseにNetBeansキーバインディングを使用させる方法を教えてください。
- 15. Jenkinsがプロセスを表示せずに実行する方法を教えてください。
- 16. アプリがバックグラウンドに入ったときにスウィフトソケットIOを実行する方法を教えてください。
- 17. ブックマークレットを一度だけ実行する方法を教えてください。
- 18. アプリをバックグラウンドでシミュレーションする方法を教えてください。
- 19. アンドロイドアプリケーションをスリープモードで実行する方法を教えてください。
- 20. KIT DataManagerでステージングプロセスを実行する方法を教えてください。
- 21. Springデータを返さずにクエリを実行する方法を教えてください。
- 22. Google Appsスクリプトのテスト方法を教えてください。
- 23. ウィンドウを使用せずにシステムをシャットダウンする方法を教えてください。
- 24. PHP JSON APIを使用してJavaScriptプラットフォームでXSSを実行する方法を教えてください。
- 25. crontab -eを使用せずにcrontabを更新する方法
- 26. RubyでPsychにインラインモードを使用する方法を教えてください。
- 27. Mochaでテストを実行する前にbefore()を実行する方法を教えてください。
- 28. 大胆なキーワードを実行する方法を教えてください。
- 29. Celeryタスクの実行を延期する方法を教えてください。
- 30. chrome.tabs.onUpdated.addListenerの使用方法を教えてください。
これは正しくありません。ログアウトするとこれが止まります。これを防ぐには 'nohup'を使うことができますが、私は画面を優先します。 – Benj