I scheduled following cron job:
root@alexus:~# crontab -l | grep ^\@hourly
@hourly OUT=`/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10% --critical=5%` ; if [ $? != 0 ] ; then echo $OUT ; fi
root@alexus:~# OUT=`/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10% --critical=5%` ; if [ $? != 0 ] ; then echo $OUT ; fi
root@alexus:~# cat /etc/issue.net
Ubuntu 14.04.3 LTS
root@alexus:~#
Run Code Online (Sandbox Code Playgroud)
and even though I'm able to run EXACTLY same one liner within shell, whenever job gets executed via cron, I get following email:
主题:Cron OUT=`/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10 /bin/sh: 1: 语法错误:反引号替换中的 EOF
每个主题行,似乎%
符号后的所有内容都丢失了。
如何在不破坏脚本的情况下正确转义它?
你需要检查你的crontab(5)
手册页。cron 的一些实现将%
用作命令字段中的换行符,因此您可以将数据传递给 stdin 上的命令
* * * * * >$HOME/cron.cat.out cat%hello%world
Run Code Online (Sandbox Code Playgroud)
然后“cron.cat.out”包含两行:
hello
world
Run Code Online (Sandbox Code Playgroud)
你需要
@hourly OUT=$(/usr/lib/nagios/plugins/check_disk --include-type=ext4 --warning=10\% --critical=5\%) || echo "$OUT"
# ...................................................................................^..............^
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10549 次 |
最近记录: |