linux 定时任务,crontab

一、crontab 定时任务:

1、crontab后跟参数详解:

crontab -l : 查看服务是否创建成功

crontab -r : 删除目前的时程表

crontab -e 定时任务编辑

crontab -i:在删除用户的crontab文件时给确认提示

crontab -u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;

1) 在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。

2)直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务

root查看自己的cron设置:crontab -u root -l

root想删除fred的cron设置:crontab -u fred -r

2、查看服务是否已经运行

ps -ef |grep crontab

ps -ef |grep cron

0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc #分 时 日 月 周 |《==============命令行=======================》|

代表意义

分钟

小时

日期

月份

命令

数字范围

0~59

0~23

1~31

1~12

0~7

就命令啊

特殊字符

代表意义

*(星号)

代表任何时刻都接受的意思,例如:一内那个日、月、周都是*,就代表着不论

何月、何日的礼拜几的12:00都执行后续命令的意思

,(逗号)

代表分隔时段的意思,例如:如果要执行的工作是3:00与6:00时,就会是 :

 0 3,6 * * * command

时间还是有五列,不过第二列是3,6,代表3与6都适用

-(减号)

代表一段时间范围内,例如:8点到12点之间的每小时20分钟都进行一项工作“

20 8-12 * * * command

/n(斜线)

n:代表数字,即:每隔n单位间隔的意思,例如:每5分钟进行一次:

*/5 * * * * command

也可写成:0-59/5

*/10 * * * * /bin/bash /home/unzip_file.sh 每隔10分钟执行一次

3、cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

一般启动服务用  /sbin/service crond start 

根用户的cron服务可以用 sudo service crond start

/sbin/service crond start    //启动服务

/sbin/service crond stop     //关闭服务

/sbin/service crond restart  //重启服务

/sbin/service crond reload   //重新载入配置

/sbin/service crond status   //查看服务状态 

ntsysv //查看crontab服务是否已设置为开机启动

chkconfig –level 35 crond on //加入开机自动启动

4、任务调度的crond常驻命令

1)crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

2) linux任务调度的工作主要分为以下两类:

a、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

b、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,

这些 工作可由每个用户自行设置

3)Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:文件含义

/etc/cron.deny 该文件中所列的用户不允许使用Crontab命令

/etc/cron.allow 该文件中所列的用户允许使用Crontab命令

/var/spool/cron/ 是所有用户的crontab文件

/var/spool/cron/crontabs

二、at命令实现定时任务

1、假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。

    at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。

2  at命令执行流程如下

语法:# at [参数] [时间]

at> 执行的指令

退出at命令 ctrl+d

  # at 2:05 tomorrow

at>/home/kyle/do_job

  at> Ctrl+D

命令前提:

需要开启atd进程(在redhat中atd是默认随系统启动而启动)

3、 AT Time中的时间表示方法

  Minute    at now + 5 minutes   任务在5分钟后运行

  Hour      at now + 1 hour      任务在1小时后运行

  Days      at now + 3 days      任务在3天后运行

  Weeks     at now + 2 weeks     任务在两周后运行

  Fixed     at midnight          任务在午夜运行

  Fixed     at 10:30pm           任务在晚上10点30分

!!注意:linux默认为不启动,而ubuntu默认为启动的。

4、检查是否启动,用service atd检查语法,

ps -ef | grep atd //查看是否开启atd

service atd status //检查atd的状态,

service atd start //启动atd服务。

删除系统中由at建立的正在等待被执行的任务

atrm 任务的工作号

例如: atrm 17

5、查看at执行的具体内容:

一般位于/var/spool/at目录下面, 用vi打开,在最后一部分就是你的执行程序

6、常见参数

-m :当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出

-I :atq的别名。  列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)

-d :atrm的别名。 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)

-v :显示任务将被执行的时间。  列出所有已经完成但尚未删除的指定

-c :打印任务的内容到标准输出

-V :显示版本信息

-q :后面加<列队> 使用指定的列队

-f :后面加<文件> 从指定文件读入任务而不是从标准输入读入

-t :后面<时间参数> 以时间参数的形式提交要运行的任务

猜你喜欢

转载自blog.csdn.net/xuejinyan123/article/details/81289005