qod*_*nja 16 logging centos cron date centos6
我正在玩一些日期的变化,比如
DATE = $(date)
Run Code Online (Sandbox Code Playgroud)
但这也不起作用
crontab -e
CRONLOG=/tmp/log/crontab.log
DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S`
* * * * * echo $DATEVAR >> /tmp/log/crontab.log
*/2 * * * * echo "$DATEVAR hello" >> ${CRONLOG}
*/1 * * * * echo 'every minute' >> ${CRONLOG}
Run Code Online (Sandbox Code Playgroud)
这只是按原样输出文本......
我想在 crontab.log 中创建一个日志条目,每次更新都带有时间戳
我如何在 CentOS 6 上执行此操作?
更新
DATEVAR=date +20%y%m%d_%H%M%S
*/1 * * * * /bin/echo [CRON] $($(DATEVAR)) >> /tmp/log/crontab.log
Run Code Online (Sandbox Code Playgroud)
当我尝试时只呈现 [CRON] 而没有呈现 =/
cyb*_*x86 32
Cron 不是 shell - 它不像 shell 那样解析命令。因此,您的变量被分配为静态文本。
我知道这个问题的三种解决方案:
选项 1: 使用 shell 脚本生成您的命令,包括您想要的任何变量和逻辑 - 并从 cron 调用该 shell 脚本。
* * * * * /path/to/myscript.sh
Run Code Online (Sandbox Code Playgroud)
哪里myscript.sh:
DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S`
echo $DATEVAR >> /tmp/crontab.log
Run Code Online (Sandbox Code Playgroud)
选项 2: 直接在您的命令中包含 date 命令,并且由于整个命令被传递到 shell,日期将被处理并替换为实际日期。
DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S`
echo $DATEVAR >> /tmp/crontab.log
Run Code Online (Sandbox Code Playgroud)
选项 3: 在 cron 中设置字符串变量,并将其传递给要处理的命令(注意 - 百分号不需要转义,变量本身包装在 $() 中以在单独的 shell 中执行它 -反引号应该一样):
* * * * * /bin/echo `date +20\%y\%m\%d_\%H\%M\%S` >> /tmp/crontab.log
Run Code Online (Sandbox Code Playgroud)
(在上述所有情况下,您当然可以对日志路径使用变量,而不是对其进行“硬编码”。)
| 归档时间: |
|
| 查看次数: |
35588 次 |
| 最近记录: |