crontab 里 % 引发的问题

写个 crontab ,命令是类似这样的

/path/to/script `date +%Y-%m-%d`

直接运行很正常,但是在 crotnab 里就出错。

/bin/sh: -c: line 1: unexpected EOF while looking for matching ``‘
/bin/sh: -c: line 2: syntax error: unexpected end of file

google 了好一阵才找到答案。原来 crontab 里的 % 是有特殊意义的,在这里需要转义。man 5 crontab 可以看到,

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 就出错了。

解决办法:可以在 % 前面都加个 \ ,对于这个例子,写成 date +\%Y-\%m-\%d。

crontab 里 % 引发的问题

时间: 2024-08-07 16:47:15

crontab 里 % 引发的问题的相关文章

crontab 里无法执行expdp

编辑个脚本 xxx.sh #!/bin/shrq=`date +%Y%m%d`filename="test$rq"expdp system/*** directory=expdump dumpfile=$filename.dmp logfile=$filename.log schemas=test content=data_only 手工可以执行OK,满以为都OK 结果放进了CRONTAB里 第二天却没有执行,被叼毛叼了几句! 原因可能有: 1 环境问题  最好来个  source ~

crontab里shell脚本将top信息写入文件

crontab里shell脚本将top信息写入文件: 注: 1.top -n 1代表执行1次退出(默认top是不退出的),-d 1代表每1秒执行1次 2.crontab里需加/bin/bash # crontab -e */5 * * * * /bin/bash /usr/local/bin/top.sh # vi top.sh #!/bin/bash Date=`date +%Y%m%d` Date2=`date +%Y%m%d_%H%M` Date3=`date +%Y%m%d -d "7

Crontab里调用python脚本不成功的解决方案

crontab里经常会调用一些程序,但是很多时候调用python是不成功的,但是手动则是OK的,在看日志(/var/log/cron)的时候,却是显示正常,这种情况怎么破呢?其实主要就是这么几个地方: 1)轻易不要用if __name__ == "__main__": 很多主管都习惯让自己手下人把脚本写成模块化,然后潇洒的走一个整合,但是crontab对这个方法似乎不是很灵光,因为python运行的时候是从if __name__ == "__main__"开始执行,

Crontab 里解决脚本冲突的问题

Linux里的Crontab是一个好东西,但是它的默认最小执行频率是1分钟,但是我们在实际生产环境里有的时候遇到的脚本执行时间是大于1分钟的,这样就会出现一个很尴尬的情况,就是在1分钟过后,系统进程会出现多个脚本,neck and neck式的在后台运行,比如这样: 从上面的图可以看到,10点36分log499.sh没有执行完毕,10点37又开始了执行了一个新的log499.sh脚本.这种脚本冲突肯定不是我们所希望的,那么如何才能保证后台只是在一段时间里只执行一个脚本呢? 这个时候我们就要使用文

crontab 里如何使用 date +‘%Y%m%d‘ 创建带日期的日志文件

今天遇到一个crontab问题,就是在crontab -e 编辑时,想要把shell脚本输出重定向到一个含有日期的日志文件中.但是直接写不识别date +'%Y%m%d' ,不起作用,后来发现自己的写法不对,并且导致shell脚本不执行正确写法为:$(date +"\%Y\%m\%d")而不是这样:date +'%Y%m%d' 原文地址:https://blog.51cto.com/wangyan112/2399638

crontab调用python时出现ImportError: No module named XXX的问题

在 http://chenx1242.blog.51cto.com/10430133/1884415 里写了一个监控mq的脚本,把这个脚本加入crontab里进行时刻监控,于是#crontab -e,添加语句: * * * * * cd /目录  &&  python  mq脚本名.py  >/root/mq.log 2>&1 将执行的结果发送到/root/mq.log里,打开一看里面出现了这样的错误: 但是在shell里单独执行是OK的,于是添加了 source /e

Linux之crontab笔记

引用竹子博客 前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令. 一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当

【转】每天一个linux命令(50):crontab命令

原文网址:http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html 前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令. 一.crond简介

crontab使用进程锁解决冲突

想到一个问题,如果在crontab里有个定时任务设置为一分钟执行一次,但是它执行的时间可能会超过一分钟,此时crontab一分钟后会再次运行该脚本吗?这样会不会出现冲突呢?网上找了下,说可以用Linux中的进程锁控制crontab执行的并发问题. 给一个shell脚本加锁,使用flock命令. 一般格式:flock [-sxun][-w #] fd#flock [-sxon][-w #] file [-c] command... 常用选项:-s, --shared :获得一个共享的锁.-x, -