リモートで継続的にジョブを実行する

リモートで継続的にジョブを実行する

私はLinuxに初めて触れましたが、かなり基本的な質問をすることもできます。 Linuxで連続プログラムを実行するには?

基本的にウェブサイトの内容を継続的に確認するプログラムがあります。この計画は数日間実施される予定です。私はこのプログラムを実行したいコンピュータに対する管理権限を持っておらず、このコンピュータへの排他的なアクセス権もありません。つまり、他のユーザーが物理的にログインできます。さらに、予期せぬ災害が発生しない限り、コンピュータは私のプログラムの実行中に実行され続けます。

私はマシンにSSHで接続してプログラムを実行できることを知っています。しかし、タイムアウトの問題は言うまでもなく、これを完了するには2番目のコンピュータが必要なので(これは私がやっている作業の目的を崩すため)望ましくありません。

起動後に接続を確立せずにコンピュータからリモートでプログラムを実行する方法はありますか?

答え1

定期的に発生する必要がある場合に使用しますcron(たとえば、サイトを毎時間、1日に1回、またはそれ以上または頻繁に確認する必要がありますが、まだランダムに定義されていない)。

しかし...代わりに、後でコマンドを実行したいかもしれません。、このために後で実行されるコマンドを後で日付/時間に一度実行できるデーモンを使用しようとしますat(5時で家に帰りたいのですが4時間プロセスを持つ方が良い)。夜中には再びこれは起こりません)。

nohup前述のようにすぐに実行したいが、後で確認するためにセッションに再接続したくない場合は、screenこれを使用してください。 /後で確認するため。tmuxnohupscreentmux

答え2

次の 2 つの作業を行う必要があります。

  1. 実行コマンドを使用してくださいnohup。これにより、接続が切断されたときにリモートコンピュータがコマンドを終了するのを防ぎます。
  2. &を追加してバックグラウンドでコマンドを実行します。これは必ずしも必要ではありませんが、正常に切断したり他の操作を実行できるようにコマンドをブロックするのではなく、シェルに戻ります。

したがって、コマンドの場合command

nohup command &

答え3

nohupプログラムと対話せずにプログラムを実行できる場合、これは確かに正しいアプローチです。たとえば、後でアクセスできるファイルにすべての出力メッセージとエラーメッセージを記録する場合です。プログラムの実行中に残されたエラーメッセージがあるかどうかを確認してくださいnohup.out。 (修正してくれてありがとう、マイケル!)

プログラムの実行中にプログラムと対話する必要がある場合は、GNU画面より良い方法かもしれません。ログアウトしてもコンピュータをシャットダウンしない限り、実行中の仮想端末を作成できます。これはチュートリアルです使用して発見しました。

関連情報