filenameにtimestampを付ける
shellでファイル名にタイムスタンプを付ける
test_$(date +%Y%m%d_%H%M%S).log
指定ユーザーでシェルを実行しログを出力する
nohup su - user1 -c "/tmp/test.sh &>/tmp/test_$(date +%Y%m%d_%H%M%S).log" &
nohupは、terminalが閉じられても実行し続ける。
&>は、stdout, stderrともにファイルに出力する。
最後の&は、バックグラウンドで実行する。
nohupの使い方
nohup /tmp/test1.sh &>/tmp/test1.log &
標準出力に表示される内容はカレントディレクトリに nohup.out というファイル名で記録されるが、&>でファイルにリダイレクトするとstdout, stderrがファイルに出力される。
nohupを付けてコマンドを実行するとterminalが閉じられてもkillされることなく実行され続ける。
以下のtest1.shで動作を確認する。
# cat test1.sh#!/bin/bash
sleep 10
echo "std1" >&1
echo "std2" >&2
exit
stdout, stderr両方をリダイレクトする(&>)
# nohup /tmp/test1.sh &>/tmp/12.log &
# cat 12.log
nohup: 入力を無視します
std1
std2
リダイレクトしない
# nohup /tmp/test1.sh &
# nohup: 入力を無視し、出力を 'nohup.out' に追記します[1]+ 終了 nohup /tmp/test1.sh
# cat nohup.out
std1
std2
stdout, stderrを別々のファイルにリダイレクトする(1>stdout_log 2>stderr_log)
# nohup /tmp/test1.sh 1>1.log 2>2.log &
# cat 1.log
std1
# cat 2.log
nohup: 入力を無視します
std2
どこにもログを出力しない(&>/dev/null)
# nohup /tmp/test1.sh &>/dev/null &
コメント
コメントを投稿