前言
我会用该命令在每周末删除旧备份文件,已经创建新的备份文件。
还会用它定期执行DDNS的脚本,因为自己的ipv4公网IP不是固定的,需要经常更新。
Step1. 启动cron
服务&rsyslog
服务
cron
是计划任务服务,该服务默认启动,若没有可以自行启动sudo cron -f &
rsyslog
是日志管理服务,该服务默认启动,若没有可以自行启动sudo service rsyslog start
。其日志文件位于/var/log/syslog
Step2. 新增定时任务
crontab -e # 编辑cron的配置文件
首次执行会询问默认编辑器,我这里选择vim。
格式1:m(minute) h(hour) dom(day of month) mon(month) dow(day of week) command
举例:0 5 * * 1 tar -czf /var/backup/home.tgz /home/ # 每周一凌晨5点备份一次数据
格式2:*/m(minute) h(hour) dom(day of month) mon(month) dow(day of week) command # 间隔执行
*/1 * * * * tar -czf /var/bachups/$(date +\%Y\%m\%d-\%H\%M\%S).tgz /home/ # 每分钟备份一次数据
# $(date +\%Y)是时间的固定写法
# “%”在crontab有结束命令行的意思,\对其转义
退出编辑后,会输出crontab: installing new crontab
表示已配置新的计划任务。
每使用
crontab -e
添加新的计划任务,都会修改/var/spool/cron/crontabs
下用户对应的crontab文件,所以用户与用户之间的计划任务是隔离的(若需要root权限执行就使用sudo
编辑/etc/crontab
就可以了,该文件都是root权限的计划任务)
然后查看日志验证是否成功执行,sudo tail -f /var/log/syslog
若命令执行出错,会打印
(CRON) info (No MTA installed, discarding output)
,因为cron
执行错误时,会将信息发送到邮件服务器去,而这里没有安装邮件服务器。
Step3. 确认定时任务生效
在/etc
下有cron
相关的目录:cron.d cron.daily cron.hourly cron.monthly cron.weekly crontab
,中间4个目录下的脚本分别会每天、每小时、每月、每周执行一次。这个是cron.daily
下的文件:
其他命令
crontab -l # 查看计划任务,其实就是查看文件/var/spool/cron/crontabs/$USER
crontab -r # 移除所有计划任务,就是删除/var/spool/cron/crontabs/$USER