2012-04-23 16 views
2

簡単な質問:端末を実行していない状態でスクリプトを実行する方法はありますか?スクリプトをバックグラウンドで実行しますか?

詳細と背景:私はアプリの.logファイルを読み込んでそこから情報を取り出し、ログの情報から情報と統計情報を提供するアプリを持っていました。 アプリへのアップデートによって、.logファイルが書き込まれ、情報が削除され、予測できなかった方法でログが複製される方法が変更されました。

ログとのインターフェースをとるように設計されたアプリは、このような変更をチェックするためにコード化されていません。ログの変更後に情報を収集しようとすると、作業が停止します。

"hack"はtail -fを実行するように考案されており、新しいファイルを指すようにアプリケーションを16進化しています。 (「ハック」が動作します) 私はバックグラウンドでテールを実行して、ユーザーが中断しないようにしたいと思います...

-説明。私はより詳細な質問は私に正確な答えを得るだろうと思った。

ありがとうございます!あなたがシェルを終了した後のプロセスに再接続できるようにする必要がある場合

〜¥oseph

+0

少なくとも一見、あなたは['nohup'](http://ss64.com/bash/nohup.html)を探しているようです。 –

+0

http://stackoverflow.com/questions/3430330/best-way-to-make-a-shell-script-daemon – subbul

+0

@jerryそれらのマニュアルページを見てみると、nohupはまさに何をするのでしょうか私は必要としています。私はこのことについて検索しているときに&演算子を見つけましたが、端末が殺された場合にループが生き残ることはありません。 @ subbuスタートストップを見ても、それがデアモンに変わるのはわかりませんが、ターミナルの方法がうまくいかなかったらアイデアでした。もしnohupが私が病気を探しているのでなければ、 "B"を計画してください。私はこれらの両方を見渡し、それらをテストします。私は結果を投稿に更新します。ありがとう! –

答えて

5

答えは依存します。プロセスが非インタラクティブで、単純に放置されている場合は、 "nohup program &"で処理しなければなりません。しかし、それはあなたがシェルを閉じた後にあなたがプログラムとやりとりを続けさせることはありません。

対話型プログラムの場合は、画面または他の端末マルチプレクサの1つを使用することをお勧めします。あなたはあなたに新しいシェルを与える "screen"を始めます。これはあなたが望むどんなプログラムであれ、通常の方法で "nano myfile.txt"と言うことを始めます。

シェルを終了したいがプログラムを実行したままにするには、C-a d( 'Detach')を押して画面から切り離す。バックグラウンドで実行し続けますが、ログアウトしても実行され続けます。

その後、新しいシェルを開き、 "screen -r"(再接続)と入力すると、ここでどこにいるかがわかります。

スクリーンでは、1つの端末ウィンドウで複数の異なるシェルを実行することもでき、全体的にはきれいなツールです。見てみな。

関連する問題