linux下使用 crontab 设定定时任务

在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/

crontab linux

我们可以在最后一行加上新建的定时任务,比如“每隔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

tail -f
这样定时任务就成功新建了,当然你也可以建立其他的定时任务,更多示例请看这儿。

示例

  • 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 设定定时任务 (http://blog.lxx1.com/668)

如果博客对您有帮助,请给我 打赏


科技爱好者

工科学生大四在读,专业嵌入式开发,喜欢计算机,喜欢单片机,喜欢各种各样美好的东西,相信科技正在改变世界!

这是我的 个人博客

One thought on “linux下使用 crontab 设定定时任务

发表评论

电子邮件地址不会被公开。 必填项已用*标注