선택한 답변이 여러 세션에서 제대로 작동하지 않으며 사용자 정의 로그 파일 이름을 지정할 수 없습니다.
여러 화면 세션의 경우 이것은 내 공식입니다.
각 프로세스에 대한 구성 파일을 작성하십시오.
logfile test.log
logfile flush 1
log on
logtstamp after 1
logtstamp string "[ %t: %Y-%m-%d %c:%s ]\012"
logtstamp on
"즉석에서"수행하려는 경우 logfile
자동으로 변경할 수 있습니다 .
\012
"new line"을 의미합니다. 사용 \n
하면 로그 파일에 출력됩니다 : source .
"-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에 로그 파일을 만듭니다.