ホームページ  >  記事  >  運用・保守  >  Linux の crontab の % が特別な意味を持っていることをご存知ですか?

Linux の crontab の % が特別な意味を持っていることをご存知ですか?

藏色散人
藏色散人転載
2021-09-06 17:26:012143ブラウズ

次のコラム Linux システム チュートリアル では、Linux での crontab での % の使用法とその特別な意味を紹介します。 Linux での

Linux の crontab の % が特別な意味を持っていることをご存知ですか?

% の crontab 使用率

crontab の次のスクリプトは、

 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

中に実行できません実行すると、/var/log/messages ログに次のように表示されます。

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 +)

コマンドが切り詰められているようです。

そこで、実行するすべてのコマンドをスクリプトにカプセル化し、実行用に crontab に置きました。

しかし、後で crontab のマンページを確認したところ、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.

問題は明らかになりました。crontab コマンドが切り詰められているわけではありませんが、は別の意味があると理解され、解決策は % をエスケープすることです。変更されたスクリプトは次のようになります:

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

以上がLinux の crontab の % が特別な意味を持っていることをご存知ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。