少し繰り返し聞こえるかもしれませんが、まず私の言葉を聞いてください。
アクティブなstdinがあり、時には起動時にいくつかの入力を必要とするシェルスクリプトを実行しています。年中無休で24時間実行し、失敗した場合にコマンドを入力するか、メッセージが表示されたら「y」と入力して再起動する必要があります。私は2つの方法を試しました。 nohupを使用してCtrl + Zをクリックしてbgと入力すると、ジョブは停止して実行されていないと表示されます。実行時にのみfg
有効になります。この問題を解決する方法についての手がかりはありますか?
PS私もやってみましたが、scriptcommand &
やはり「中止」で終わりました。
システムサービスとして設定するのは合理的ですか?
ベストアンサー1
説明したように、入力に依存するプログラムはターミナルマルチプレクサ内で起動する必要がありますtmux
。https://en.wikipedia.org/wiki/Tmux)またはscreen
(https://www.gnu.org/software/screen/)。端末ウィンドウのテキストベースのバージョンだと思います。
screen my-program
その後、使用my-program
できます。分離キーストロークの組み合わせを使用すると、仮想Ctrl画面コンソールから起動したシェルに戻りますが、プログラムはまだバックグラウンドで実行されますA Ctrl。Dその後、をscreen -r
使用して仮想コンソールに再接続できます。
画面(およびプログラム)は、プログラムが終了するかサーバーが再起動されるまで実行され続けます。
tmux
非常に似ていますが、より多くのオプションと機能があり、他のキーボードショートカットを使用します。