バックグラウンドで長いコンピューティングタスクを実行したいと思います。私は選ぶscreen
。しかし、画面がリダイレクトを許可していないことがわかりました。例えば
screen -dmS name ls>ls.dat
生成されませんls.dat
。
幸いscreen -L
、画面のログがファイルに出力されます。ただし、pkill screen
まったく新しい画面を実行しても、古いログファイルに追加されます。
新しい画面を起動するときに古いログファイルを強制的に上書きする方法はありますか?
答え1
画面がログを覆うように強制することはできないと思います。screenlog.%n
デフォルトでは%n
画面ウィンドウ番号に書き込まれます(したがって、各ウィンドウには独自のログがあります)。ファイルが存在する場合は、ファイルに追加されます。
ただし、タイムスタンプを含む別のファイル名を使用するように指示できるため、screen
毎回新しいログファイルをインポートしますが、古いログを管理する必要があります。
.screenrc
次の行を入力できます。
logfile /path/to/log/screenlog-%n-%Y%m%d-%c:%s
%n
ウィンドウ番号()、年、月、日、時間を含むログファイルを生成します。
bash
または、screenを実行する前にログファイルを削除するエイリアスを作成できます。たとえば、次のようになります。
alias screen='rm /path/to/log; screen'
screen
現在のディレクトリのログファイルに影響を与えるには、/path/to/log/
上記のコマンドから削除します。
最後に、達成したい目標に応じて、Linuxツールはscript
ログインよりも便利ですscreen
。 man script
より多くの情報を知りたいです。