選択した回答は、複数のセッションではうまく機能せず、カスタムログファイル名を指定できません。
複数のスクリーンセッションの場合、これは私の公式です。
プロセスごとに構成ファイルを作成します。
logfile test.log
logfile flush 1
log on
logtstamp after 1
logtstamp string "[ %t: %Y-%m-%d %c:%s ]\012"
logtstamp on
「オンザフライ」で実行したい場合は、logfile
自動的に変更できます。
\012
使用したとして、「改行」を意味\n
:ログ・ファイルに印刷されますソースを。
「-c」および「-L」フラグを使用してコマンドを開始します。
screen -c ./test.conf -dmSL 'Test' ./test.pl
それでおしまい。最初のフラッシュ後に「test.log」が表示されます。
...
6 Something is happening...
[ test.pl: 2016-06-01 13:02:53 ]
7 Something else...
[ test.pl: 2016-06-01 13:02:54 ]
8 Nothing here
[ test.pl: 2016-06-01 13:02:55 ]
9 Something is happening...
[ test.pl: 2016-06-01 13:02:56 ]
10 Something else...
[ test.pl: 2016-06-01 13:02:57 ]
11 Nothing here
[ test.pl: 2016-06-01 13:02:58 ]
...
「ログオン」が構成ファイルにある場合でも、「-L」が引き続き必要であることがわかりました。
画面で使用される時間フォーマット変数(%mなど)のリストが見つかりませんでした。これらのフォーマットのリンクがある場合は、以下に投稿してください。
追加
「オンザフライ」で実行したい場合は、次のスクリプトを使用できます。
#!/bin/bash
if [[ $2 == "" ]]; then
echo "Usage: $0 name command";
exit 1;
fi
name=$1
command=$2
path="/var/log";
config="logfile ${path}/${name}.log
logfile flush 1
log on
logtstamp after 1
logtstamp string \"[ %t: %Y-%m-%d %c:%s ]\012\"
logtstamp on";
echo "$config" > /tmp/log.conf
screen -c /tmp/log.conf -dmSL "$name" $command
rm /tmp/log.conf
これを使用するには、それを保存し(screen.sh)、+ x権限を設定します。
./screen.sh TEST ./test.pl
...そして./test.plを実行し、/ var / log / TEST.logにログファイルを作成します