(154) プログラムをバックグラウンド実行&全ログをファイル出力したい。

投稿者: | 2024年2月8日

53 views

【1】やりたいこと

(1) Windowsパソコンで Terminalソフトを起動して Linuxマシンにリモート接続する。
(2) Terminal上で処理時間が 24時間を超えるプログラムの実行を開始する。
(3) Windowsパソコンをシャットダウンする。
 → SSHセッションが切れて、(2)のプログラムがシャットダウンする…

を、回避したい。

【2】やってみる

(1) hungup signalを無視させる。

SSHセッション切断によるプログラム終了を回避するため、nphup コマンドで、ハングアップシグナルを無視させる。

nohup my_command &

(2) ログを出力させ続けたい。

ログファイルには、以下の両方を出力させたい。
・stdout : 標準出力
・stderr : 標準エラー出力

nohup my_command > output.log 2>&1 &

2>&1 は、stderr(discriptor 2)を stdout(discriptor 1)にマージさせる指定

これにより、上記【1】の手順は以下のように変わる。

(1) Windowsパソコンで Terminalソフトを起動して Linuxマシンにリモート接続する。
(2) Terminal上で処理時間が 24時間を超えるプログラムの実行を開始する。
(3) Windowsパソコンをシャットダウンする。
 → SSHセッションが切れても、(2)のプログラムは動き続ける。
(4) 24時間後、Windowsパソコンを起動し、SSHで Linuxマシンにリモート接続する。
(5) ログを参照し、プログラムの実行結果を確認する。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です