다음을 테스트했지만 운이 없었습니다. 다른 아이디어가 있나요?
#cron test, I would like to generate a stderr logfile name based on $0, but $0 value is "/bin/bash"
#why do I want this? Because some program names are quite long, and for standardization
04 10 * * * ~/bin/cron-test >> /tmp/blah 2>>~/.cronlogs/$(basename $0) # $0 is "/bin/bash"
05 10 * * * ~/bin/cron-test >> /tmp/blah 2>>~/.cronlogs/$(basename $1) # $1 is empty?
06 10 * * * ~/bin/cron-test >> /tmp/blah 2>>~/.cronlogs/$(basename $2) # $2 is empty?
답변1
출력을 특정 위치로 보내는 래퍼 스크립트를 작성할 수 있습니다.
$ cat logwrap.sh
#!/bin/bash
logname=$(basename -- "$1").log
exec "$@" 2>> "~/.cronlogs/$logname"
이제 logwrap.sh id some command
실행은 some command
출력을 로 보내 /work/logs/some.log
므로 출력은 다음으로 보내집니다 /work/logs/cron-test.log
.
04 10 * * * /path/to/logwrap.sh ~/bin/cron-test