cronjob이 마지막으로 실행된 시간의 타임스탬프가 포함된 로그 파일을 추가하고 싶습니다. 현재 제가 사용하고 있는 코드입니다
crontab -l > mycron
echo ""${var1}" "${var2}" "${var3}" "${var4}" "${var5}" tar -czf "$fsrc"/* > ./"$fdest"/"$fname"">> ~/cronlog.log 2>&1 >>mycron
crontab mycron
rm mycron
로그 파일이 생성되고 작업이 예상대로 실행되지만 로그 파일에는 아무것도 없습니다. 로그 파일을 최신 상태로 유지하려면 어떻게 해야 합니까?
감사해요
답변1
에코 라인을 사용하십시오.
[zbrady@myserver ~]$ cat test1.sh
var1=0
var2=1
var3=2
var4=3
var5=4
fsrc=abc
fdest=def
fname=ghi
>mycron
echo ""${var1}" "${var2}" "${var3}" "${var4}" "${var5}" tar -czf "$fsrc"/* > ./"$fdest"/"$fname"">> ~/cronlog.log 2>&1 >>mycron
cat mycron
[zbrady@myserver ~]$ ./test1.sh
0 1 2 3 4 tar -czf abc/* > ./def/ghi
약간 수정된 버전을 사용합니다.
[zbrady@mysever ~]$ cat test2.sh
var1=0
var2=1
var3=2
var4=3
var5=4
fsrc=abc
fdest=def
fname=ghi
>mycron
if ! crontab -l |grep ^HOME=
then echo HOME=$HOME > mycron
fi
crontab -l >> mycron
echo "${var1} ${var2} ${var3} ${var4} ${var5} tar -czf ./$fdest/$fname $fsrc/* >> $HOME/cronlog.log 2>&1" >> mycron
cat mycron
[zbrady@myserver ~]$ ./test2.sh
HOME=/home/myuser
0 1 2 3 4 tar -czf ./def/ghi abc/* >> /home/myuser/cronlog.log 2>&1
귀하의 인용문이 약간 이상하여 echo 문에 혼란을 야기합니다. 나는 또한 crontab이 맨 ~
위에 있는지 $HOME
확인하십시오 .HOME=/home/myuser
내가 발견한 또 다른 문제는 tar를 출력 파일 이름으로 리디렉션하려고 한다는 것입니다. -f 플래그 뒤에 아카이브 이름을 지정한 다음 >> tar stdout을 로그 파일로 보내야 합니다.