Skrip berikut dalam crontab tidak boleh
0 1 * * * (cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +%Y%m%d_%H%M%S`.log
Apabila dilaksanakan, log /var/log/messages menunjukkan:
Sep 22 22:50:01 ebsapp CROND[13389]: (applprod) CMD ((cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +)
Nampaknya perintah itu telah dipotong.
Jadi saya merangkum semua arahan untuk dilaksanakan ke dalam skrip dan meletakkannya dalam crontab untuk dilaksanakan.
Tetapi apabila saya menyemak halaman manual crontab kemudian, saya mendapati bahawa % mempunyai makna istimewa dalam crontab:
The "sixth" field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a new- line or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
Masalahnya kini jelas bukan kerana perintah crontab itu dipenggal , tetapi ianya Ia mempunyai makna lain, dan penyelesaiannya adalah untuk melarikan diri %. Skrip yang diubah suai menjadi:
03 23 * * * (cd /u01/prod; rsync -avz app 192.168.0.192:/u01/prod/) &>/home/applprod/backuplog/rsync_`date +\%Y\%m\%d_\%H\%M\%S`.log