直接输入命令可以执行,但在 cron 不执行

2015-11-07 09:46:36 +08:00
 Devin

命令如下:
cp /var/log/xxxxx.log /var/log/xxxxx$(date +%Y%m%d).log

直接输入可以无误执行,在 cron 里
0 23 * * 7 cp /var/log/xxxxx.log /var/log/xxxxx$(date +%Y%m%d).log

syslog 有记录,但不执行, log 如下
(root) CMD (cp /var/log/xxxxx.log /var/log/xxxxx$(date +)
(CRON) info (No MTA installed, discarding output)

4088 次点击
所在节点    Linux
14 条回复
kn007
2015-11-07 09:48:39 +08:00
不要嵌套命令
zho6
2015-11-07 09:50:54 +08:00
没有环境变量
加上命令的全路径 就可以了
Infernalzero
2015-11-07 10:06:20 +08:00
0 23 * * 7 cp /var/log/xxxxx.log /var/log/xxxxx`date +\%Y\%m\%d`.log

%要转义,%在 crontab 里是换行的意思,或者把命令写到个 shell 文件中,然后 crontab 里去调用那个 shell
dangyuluo
2015-11-07 10:24:22 +08:00
jhaohai
2015-11-07 10:29:09 +08:00
cron 里还是有不少坑的,建议加 cron job 之前先用 sudo -uroot 跑一下
Devin
2015-11-07 10:42:38 +08:00
@Infernalzero you are right! %要转义 十分感谢!
iyaozhen
2015-11-07 11:38:25 +08:00
搭车问个问题,我有许多周期性任务需要管理,用 cron 的话不利于前端配置和管理。任务存在 mysql 表里面的,自己写个 python 死循环脚本每秒去扫描全表?
znoodl
2015-11-07 11:47:12 +08:00
看楼主用 cron 管理日志,问个问题,用 logrotate 管理日志怎么样?有用过吗?
Ansen
2015-11-07 11:49:02 +08:00
@iyaozhen cron 触发脚本 至于脚本怎么执行任务 执行多少任务 由你决定
skydiver
2015-11-07 11:51:04 +08:00
跑个题,这个需求不是应该用 logrotate 么
eccstartup
2015-11-07 11:55:51 +08:00
试试
/bin/cp
/bin/date

命令的执行记录可以在相关用户的 shell 里执行
mail
命令查看
fxxkgw
2015-11-07 13:10:18 +08:00
学习了
RockyLee
2015-11-07 13:15:30 +08:00
@znoodl 很好用
salmon5
2015-11-07 13:25:30 +08:00
@znoodl logrotate 真心不是网上那几篇文章夸大的那么好,用 shell 自定义很灵活,比如文件名、日志截取时间,晚上那个人的文章过分的夸大了 logrotate 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/234336

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX