定时任务

来源:互联网 发布:物联网 人才需求数据 编辑:程序博客网 时间:2024/05/16 05:27
1、Linux常见的例行性工作
  • 登录档的轮替:系统会记录所发生的一切信息,但信息会越来越大,所以要将新旧信息分离
  • 登录文件分析logwatch:系统经常发生错误,logwatch就是用来分析错误信息
  • 建立locate数据库:文件名数据库放置在/var/lib/mlocate,系统会定时updatedb
  • whatis数据库建立
  • RPM软件登录文件的建立
  • 移除暂存档:系统通过tmpwatch来移除软件在运行过程中的暂存档
  • 与网络服务有关的分析行为

2、仅执行一次
2.1、atd
要使用仅执行一次的工作排程,系统上就必须要有负责这一次排程的服务,atd就是。
(1)安装atd
如果系统中没有at或atd命令,使用yum -y install at安装一下就行
(2)启动atd服务
/etc/init.d/atd restart
设置开机启动 chkconfig atd on

2.2、at
(1)at工作执行原理
使用at指令产生所要运作的工作,并将这个工作以文本文件的方式写入/var/spool/at目录内,然后等待atd服务取用与执行
(2)at的使用限制
为了系统的安全起见,对于at命令的使用是有限制的,我们通过/etc/at.allow与/etc/at.deny这2个档案进行at的使用限制。
①先去查找是否有/etc/at.allow这个文件,如果有,则其中的用户可以使用at,不在这个文件里的用户就不能使用at(即使没有写在/etc/at.deny中)
②如果/etc/at.allow不存在,就寻找/etc/at.deny这个文件,在这个文件中的用户不能使用at,不在这个文件中的用户就可以使用at
③如果以上2个文件都不存在,那么只有root可以使用at
以上可以看出/etc/at.allow的管理方式比/etc/at.deny严格

2.3、单一工作排程
(1)at的使用
①at -【mldvfq】 时间
-m 任务完成后向使用者发送email
-l 相当于atq,列出系统上面该用户的所有at排程
-d 相当于atrm,可以取消一个在at排程中的工作,后面接工作编号
-f 指定包含具体指令的任务文件
②at -c 工作号码
-c 列出后面接的工作的实际指令内容
③时间格式
  • now + 数字 minutes/hours/days/weeks
  • HH:MM yyyy-mm-dd
④输入at之后,会出现at shell环境,按enter键结束一行指令,按ctrl+d结束输入。由于指令的执行与PATH有关,所以建议使用绝对路径来表示文件或指令。
(2)通过终端机装置查看echo内容
如果在at后使用echo输出内容,是看不到的,因为标注输入输出都会传到mailbox里,借助终端装置可以实现打印echo内容。
①查看当前用户登录终端
tty或who am i
②echo 内容 > /dev/tty*

2.4、batch的使用
(1)如果你是在一个非常忙碌的系统下运作at,使用batch可以指定工作在较闲的时候进行。batch也是利用at进行工作排程,只不过它会在CPU负载小于0.8的时候,才进行用户所下达的工作任务。
(2)batch用法与at一样

3、循环执行工作排程
3.1、crontab
(1)使用限制
与at一样,出于安全问题,我们也要限制crontab的使用者账号
①先去查找是否有/etc/cron.allow这个文件,如果有,则其中的用户可以使用crontab,不在这个文件里的用户就不能使用crontab(即使没有写在/etc/cron.deny中)
②如果/etc/cron.allow不存在,就寻找/etc/cron.deny这个文件,在这个文件中的用户不能使用crontab,不在这个文件中的用户就可以使用crontab
(2)crontab执行原理
使用crontab建立的工作排程都会被记录到/var/spool/cron/用户名/中,cron执行的每一项工作都会被记录到/var/log/cron这个登录档中
(3)/etc/crontab里是系统的任务调度的配置文件

3.2、crontab使用
(1)crontab 【-u 用户名】 【-l | -e | -r】
-u 只有root才能进行这个任务,亦即帮其他使用者建立/移除crontab工作排程
-e 编辑crontab的工作内容
-l 查阅crontab的工作内容
-r 移除所有crontab的工作内容,若只要移除一项,请用-e
(2)使用crontab -e每行的格式
项分时日月周指令范围0-590-231-311-120-7--
其中:周这项的0或7都代表星期日
还有一些辅助字符:
*代表任意时刻,分隔段,例如m,n代表第m和第n-区间,例如m-n表示从m到n/n常用来与*搭配,表示每隔n时间的意思
(3)crontab服务是默认开启的,如果没有开启需要手动开启
  • 查看crontab服务状态:service crond status
  • 启动服务:/sbin/service crond start
  • 关闭服务:/sbin/service crond stop
  • 重启服务:/sbin/service crond restart
  • 重新载入配置:/sbin/service crond reload
(3)系统定时任务
①crontab -e编辑的是用户的定时任务,如果是系统级的定时任务,只要编辑/etc/crontab这个文件就可以了,cron服务会每分钟去读取一次这个文件。有些时候修改完文件不会立即执行,是因为有的系统是把文件独到内存中的,所以有时候需要重启一下cron服务/etc/init.d/crond restart
②任务的执行
方式一:直接执行命令
* * * * * 用户名 指令
方法二:指定特定目录执行
* * * * * 用户名 run-parts 脚本存放目录
注:
  • 任务的执行需要指定用户,一般是root
  • run-parts是Linux提供的脚本辅助执行命令
  • 在/var/log/cron中可以查看是否有木马
  • 周与日,月不可同时并存

4、anacron
(1)anacron并不能指定何时执行某项任务,而是以天为单位或者是在开机后立刻进行anacron的动作,它会去侦测停机期间应该进行但是没有进行的crontab任务,并将任务执行一遍后停止。
(2)anacron执行原理
anacron会去读取时间记录文件,并分析现在的时间与时间记录文件所记载的上次anacron时间,2者比较后若发现有差异,那就是在某些时刻没有进行crontab。
(3)anacron语法
①anacron 【-sfn】 【job。。。】
-s 依据时间记录文件判断开始连续执行各项job
-f 强制执行,而不去判断时间记录文件的时间戳
-n 立刻执行未执行的任务,而不考虑等待时间
②anacron -u job。。。
-u 仅更新时间记录文件的时间戳
job:由/etc/anacrontab定义的各项工作名称
任务的时间戳记录文件放在/var/spool/anacron/下面
0 0
原创粉丝点击