背景
最近chatGLMのトレーニングをしているのですが、トレーニングに2時間近くかかることが多いのですが、ネットワークが不安定なため、理由もなくsshが切断され、トレーニングをやり直すことも多く、時間の無駄です。
解決
バックグラウンドでコマンドを実行する方法を教えます ssh接続が切断されても、バックグラウンドでシェルスクリプトが黙って実行されます!
バックグラウンド実行
まず、バックグラウンドでシェル コマンドを実行し、出力をファイルに出力するには、リダイレクト記号「">」を使用して出力をファイルにリダイレクトします。たとえば、「command.sh」という名前のシェル スクリプトがあると仮定すると、次のコマンドを使用してそれをバックグラウンドで実行し、出力を「output.txt」という名前のファイルに出力できます。
nohup command.sh > output.txt 2>&1 &
このコマンドは次のことを意味します。
nohup
: バックグラウンドでコマンドを実行するために使用されます。command.sh
: 実行するシェルスクリプトの名前。> output.txt
: コマンドの出力を「output.txt」という名前のファイルにリダイレクトします。ファイルが存在しない場合は、新しいファイルが作成され、ファイルがすでに存在する場合は、新しい出力がファイルの末尾に追加されます。2>&1
: 標準エラー (2) を標準出力 (1) とマージし、コマンドのエラー出力もファイルに出力されるようにします。&
: コマンドをバックグラウンドで実行します。
ビュー・ログ
「output.txt」ファイルの内容を表示するには、tail
次のコマンドを使用できます。
tail -n 100 output.txt
このコマンドの意味は、「output.txt」ファイルの末尾から始まる 100 行のコンテンツを表示することです。tail
コマンドのオプションは、-n
表示する行数と-f
表示するファイル名を指定します。
通常、バックグラウンドで実行されるプログラムは情報を出力しませんが、tail コマンドを使用すると、出力されたログをフォアグラウンドでリアルタイムに表示できます。