如何在Linux实现计划任务

在Windows系统下,可以通过设置计划任务,让该任务按照设定的时间启动运行,解决了人工干预的烦恼,在Linux下也有类似的功能,它就是crontab

crontab是什么

crontab可以让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。它是linux系统下一个自动执行指定任务的系统程序。例如,你想在每晚零时开始让爬虫抓取网页,就可以用cron来自动执行。

部分参数说明

crontabfile[-uuser]-用指定的文件替代目前的crontab。

crontab-1[user]-列出用户目前的crontab.

crontab-e[user]-编辑用户目前的crontab.

crontab-d[user]-删除用户目前的crontab.

crontab-c dir- 指定crontab的目录。

注意:

-u user用来指定该user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

crontab文件的格式:M H D m d COMMAND.

M:分钟(0-59)

H:小时(0-23)

D:天(1-31)

m:月(1-12)

d: 一星期内的天(0~6,0为星期天)

COMAND为你要运行的程序,这个程序被送入shell执行

一些实例

0 23* * * /home/peter/crawl.sh

每晚的23:00 开始运行/home/peter/crawl.sh (*表示该项为所有时段)

45 4 1,10,20 * * /home/peter/crawl.sh

每月1号、10号和20号的4:45 执行 /home/peter/crawl.sh

10 1 * * 6,0 /home/peter/craws.sh

每周六、周日的1:10运行 /home/peter/crawl.sh

0,30 18-23 * * * /home/peter/crawl.sh

每天18:00-23:00之间每隔30分钟运行/home/peter/crawl.sh

以指定用户的身份来运行程序

如果你想以用户peter的身份每小时的第15分钟运行某个程序,可以使用

15 * * * * peter /home/peter/crawl.sh 

其中的星号(*)是通配符,表示cron将忽略这个字段

如果你想每两小时就运行某个程序,可以在小时字段里使用 */2。它将会在2点,4点,6点……22点,24点运行。

cron语句中还可以使用逗号(,)来指定多个时间。例如你想在每小时的15分和30分运行某个程序,可以在分钟字段使用 15,30:

15,30 * * * * peter /home/peter/crawl.sh

实现定时task的两种方式

一种是编辑一个文件,用crontab载入

一种是用crontab -e 直接编辑生效

crontab错误的几种原因

如果你的crontab没有按照你的意愿执行,那么就需要检查如下几点

COMMAND的路径是否有问题

Shell脚本是否有问题

该用户是否有执行权限

相关推荐