在linux 下经常会用到定时任务,比如我们要定时备份服务器的数据,备份数据库服务器,可能要定时发送邮件、定时重启服务或者定时更新系统、定时更新软件等等,这些都要使用定时任务来完成,在 linux 下可以使用 crontab 命令来设定定时任务。
语法介绍
crontab命令说明
1、使用权限:
root用户和crontab文件的所有者
2、语法:
crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
3、说明:
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
4、参数:
- -e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
- -r [UserName]: 删除目前的时程表
- -l [UserName]: 列出目前的时程表
- -v [UserName]:列出用户cron作业的状态
5、时程表的格式如下:
m h dom mon dow command
其中 m 是表示分钟,h 表示小时,dom 表示一个月份中的第几日,mon 表示月份,dow 表示一个星期中的第几天。program 表示要执行的程式。
- 当 m 为 * 时表示每分钟都要执行 program,h 为 * 时表示每小时都要执行程式,其余类推
- 当 m 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,h 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
- 当 m 为 */n 时表示每 n 分钟个时间间隔执行一次,h 为 */n 表示每 n 小时个时间间隔执行一次,其余类
- 当 m 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,h 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推
- 使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
- 由于unix版本不一样,所以部分语法有差别,例如在hp unix aix 中设定间隔执行如果采用*/n 方式将出现语法错误,在这类unix中 ,间隔执行只能以列举方式,详请见例子。
使用方法
首先使用 crontab -e 命令来新建一条定时任务。
root@lixinxing--Ideapad:~# crontab -e
如果是首次新建定时任务,他会让你选择使用的文本编辑器。
select-editor
我选择的是 nano ,这里可以根据自己的喜好选择自己熟悉的编辑器。
打开后有这样的提示
# For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
我们可以在最后一行加上新建的定时任务,比如“每隔1分钟将当前的时间写入 /home/lixinixng/date.txt”,我们可以这样新建定时任务。
*/1 * * * * date >> /home/lixinxing/date.txt
新建后保存退出。提示有新的定时任务新建:
crontab: installing new crontab
然后我们查看下定时任务是否在运行。使用命令查看 date.txt 文件:
root@lixinxing--Ideapad:~# tail -f /home/lixinxing/date.txt
可以看到每隔 1 分钟会将时间写入到文件中去,并回不断的刷新,看到的是这样:
root@lixinxing--Ideapad:~# tail -f /home/lixinxing/date.txt 2015年 06月 14日 星期日 12:32:01 CST 2015年 06月 14日 星期日 12:33:01 CST 2015年 06月 14日 星期日 12:34:01 CST 2015年 06月 14日 星期日 12:35:01 CST 2015年 06月 14日 星期日 12:36:01 CST
这样定时任务就成功新建了,当然你也可以建立其他的定时任务,更多示例请看这儿。
示例
0 */2 * * * /sbin/service httpd restart
意思是每两个小时重启一次apache●50 7 * * * /sbin/service sshd start
意思是每天7:50开启ssh服务●50 22 * * * /sbin/service sshd stop
意思是每天22:50关闭ssh服务●
0 0 1,15 * * fsck /home
每月1号和15号检查/home 磁盘●
1 * * * * /home/bruce/backup
每小时的第一分执行 /home/bruce/backup这个文件●
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \
; 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
●30 6 */10 * * ls
意思是每月的1、11、21、31日是的6:30执行一次ls命令
原创文章,转载请注明: 转载自科技爱好者博客
本文链接地址: linux下使用 crontab 设定定时任务 (https://www.tujing.site/668)
如果博客对您有帮助,请给我 赞助
《linux下使用 crontab 设定定时任务》有1个想法