需要对本地的某些程序做自动备份,定时为每天7点进行备份,使用crontab命令实现。
1、crontab -e
直接输入命令crontab -e会直接打开一个编辑器窗口,一般为vi,直接在编辑器中写入:
# m h dom mon dow comman
0 7 * * * /root/user/backup.sh
编辑保存命令与vi的一致。
保存后有些人说需要重启cron,但是我好像不需要重启:service cron restart
前面五个值分别为分、时、日、月、周,百度可以搜到很多用法,基本用法有:
m:0-59,*表示每分钟执行一次,*/5表示每隔5分钟执行一次;
h:0-23,*表示每小时执行一次;
d:1-31,*表示每天执行一次:
m:1-12,*表示每个月执行一次;
w:0-6,0为星期天,*表示每星期执行一次;
每分钟执行一次只需要五个*,输入* * * * * command
上述的意思就是每天的7点钟开始执行,执行时间可能会有一点偏差,但是不会偏差很大。
参考:https://www.jb51.net/LINUXjishu/19905.html
查看目前拥有的定时任务:crontab -l
删除所有的定时任务:crontab -r
只需要删除一个任务需要使用crontab -e进行编辑。
2、vi /etc/crontab
还有一种方式是直接编辑crontab,总感觉这个方法会比较靠谱,使用方法与crontab -e差不多,但是多了一个user的字段:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
与上一个命令一样,在其他系统定时任务后面新加一条命令即可:
0 7 * * * root /root/user/backup.sh
保存退出。
参考:http://www.cnblogs.com/xd502djj/p/4292781.html
ps:可以先使用* * * * *来确认定时是否可用,在定时任务的脚本中,需要先cd到一个确定的目录,之前尝试的时候一直看不到效果,原因是他不会将脚本所在的位置当做当前path,默认path是/root
我测试时的脚本,可参考:
crontab -e:
* * * * * /root/user/test.sh
vi /etc/crontab:
* * * * * root /root/user/test.sh
test.sh:
cd /root/user
DATE=$(date +"%y-%m-%d_%H:%M:%S")
mkdir $DATE