之前一直在Linux上使用crontab,今天换到了Ubuntu上踩了不少小坑,今天总结一下。
默认情况下Ubuntu里都装好了crontab,我们直接使用crontab来编辑命令:
结果出现了这个页面,当时第一反应就是这个怎么是这样。。。
这里一定要选对,之前一直选了2,超级难操作。后来发现可以使用 select-editor 重新进行选择
root@tl-virtual-machine:/var/spool/cron/crontabs# select-editor
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.tiny
还是选3vim.tiny,不要相信2那里写的easiest,是骗人的。
编辑完后文件保存在了 /var/spool/cron/crontabs
我们使用crontab -e 定时一个任务
然后使用crontab -l 查看一下:
这里 *****代表每分钟执行一次,但是我保存帐号一直没有执行。因此我需要查看crontab的log,但是默认是不开启的。
于是需要 vim /etc/rsyslog.d/50-default.conf
把cron.*这句话前面的注释给拿掉
更新完后重新加载配置文件,重启服务
使用 cat /var/log/cron.log查看log,我们可以看到craontab是执行了我的配置的
我的脚本是重定向一个日期命名的文件,输出出来。但是为什么一直看不到文件出现呢。
后来问题找到了 原来是我这里没有指定路径
指定了路径之后,一切正常。刚开始还以为环境变量的问题,固在第二行加了那个path。
下面总结一下常用的craontab的命令:
* * * * * command 每1分钟执行一次command 3,15 * * * * command 每小时的第3和第15分钟执行 3,15 8-11 * * * command 在上午8点到11点的第3和第15分钟执行 3,15 8-11 */2 * * command 每隔两天的上午8点到11点的第3和第15分钟执行 3,15 8-11 * * 1 command 每个星期一的上午8点到11点的第3和第15分钟执行 30 21 * * * /etc/init.d/smb restart 每晚的21:30重启smb 45 4 1,10,22 * * /etc/init.d/smb restart 每月1、10、22日的4 : 45重启smb 10 1 * * 6,0 /etc/init.d/smb restart 每周六、周日的1 : 10重启smb 0,30 18-23 * * * /etc/init.d/smb restart 每天18 : 00至23 : 00之间每隔30分钟重启smb 0 23 * * 6 /etc/init.d/smb restart 每星期六的晚上11 : 00 pm重启smb * */1 * * * /etc/init.d/smb restart 每一小时重启smb * 23-7/1 * * * /etc/init.d/smb restart 晚上11点到早上7点之间,每隔一小时重启smb 0 11 4 * mon-wed /etc/init.d/smb restart 每月的4号与每周一到周三的11点重启smb 0 4 1 jan * /etc/init.d/smb restart 一月一号的4点重启smb 01 * * * * root run-parts /etc/cron.hourly 每小时执行/etc/cron.hourly目录内的脚本 说明:run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了每1分钟执行一次command