Linux系统管理之定时任务
编辑Linux系统管理之定时任务
at定时任务
确定 at
安装
-
chkconfig --list |grep atd
检查 at 服务是否安装 -
service atd restart
启动atd
服务;
很多服务 例如 httpd ,d是deamon 守护进程的意思,将这个程序当做系统的服务运行在系统的后台;
at的访问控制
/etc/at.deny
可以为空,但是一定要有;不然只有root用户可以使用
at 命令
at [选项] 时间
-
选项 :
-m
当at工作完成之后,无论命令是否有输出,都用email通知执行at命令的用户 -
-c 工作号
显示该at工作的实际内容
时间:
-
HH:MM
例如:02:30
_HH:MM YYYY-MM-DD
例如:02:30 2019-03-07
_HH:MM [am|pm] [month] [date]
例如:02:30 July 25 -
HH:MM [am|pm] +[minutes|hours|days|weeks]
例如:now + 5 minutes -
例子1
at now + 2 minutes
在两分钟之后执行hello.sh脚本at> /root/hello.sh >> /root/hello.log
#!/bin/bash
echo "helloooooo " >> /root/hello.log
# chmod 755 hello.sh
# ./hello.sh
- 例子2 在指定的时间重启,不推荐重启这样的复杂操作由计算机完成,一旦重启失败,影响正常工作,重启建议直接由管理员完成
# at 02:00 2019-03-07
/bin/sync #数据同步将内存缓存写入磁盘
/sbin/shutdown -r now
提示:若是退格键无效,使用ctrl +退格键
其他的at管理命令
atq
查询当前服务器上的at工作,at -c [任务号]
查看具体的工作内容atrm [工作号]
删除指定at任务
crontab 循环定时任务
crond 服务管理与访问控制
service crond restart
启动服务chkconfig crond on
查看crond服务是否正确安装是否启动chkconfig --list |grep cron
*service crond status
查看服务运行状态
cronfd访问控制
如果配置文件中既有allow也有deny,则deny生效allow不生效,若是只有deny,那么写入deny的用户无法使用,对root用户无效
deny可以为空,但是一定要有;
用户的crontab设置
-
crontab [选项]
-e
编辑crontab定时任务 ,默认以当前登录的用户绑定在命令当中,需要考虑到当前用户的权限,权限不够的命令无法正确执行-l
查询crontab任务*-r
删除当前用户所有的crontab任务
-
例子
crontab -e
进入crontab 编辑界面 ,会打开vim编辑捏工作 -
***** 执行的任务
可以是单独的命令,也可以是写好了的shell脚本 -
*/5 **** /bin/echo "111" >> /tmp/test
每五分钟输出一段字符到指定文件 -
55**2 /sbin/shutdown -r now
每周二的五点五分 重启 -
05**2 /root/bak.sh
每周二的五点整执行一次备份,因为4-5点的访问流量最少注意:定时任务的最小识别时间是分钟,最大识别时间是月,不能识别秒和年单位
crontab其他常用命令
-
crontab -l
查看root用户的crontab任务 -
crontab -r
删除root用户所有的定时任务,如果只想清除一个 直接crontab -e
编辑任务然后清除即可crontab命令的注意事项
whereis [命令] 查看命令的路径;定时任务执行的环境变量不一定和当前用户的环境变量完全一致,所以要写绝对路径
系统的crontab设置
-
crontab -e 是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务,可是有些定时任务需要系统执行,这时我们需要编辑
/etc/crontab
这个配置文件了- 可以自由定义用户身份而不用必须绑定当前的用户上* centos 5 中的配置文件,简化脚本书写,直接写在相应的配置文件中,方便管理直接可以查看到在什么样的时间执行了什么样的工作
- 在linux的演进过程中配置文件发生了改变,较高版本的linuxcrontab不再管理cron.weekly等配置文件,由更加先进的anacron管理
执行系统定时任务的方法
- 可以自由定义用户身份而不用必须绑定当前的用户上* centos 5 中的配置文件,简化脚本书写,直接写在相应的配置文件中,方便管理直接可以查看到在什么样的时间执行了什么样的工作
-
手工执行定时任务,crontab命令定义
-
系统定时任务
- 第一种是把需要定时执行的脚本复制到/etc/cron.{hourly|daily|weekly|monthly}文件中的任意一个
- 第二种是修改
/etc/crontab
文件
vim /etc/crontab
5 5 * * * root /root/hello.sh
#以root用户的身份每天五点零五分执行脚本
手工命令执行脚本任务执行起来只能通过
crontab -e
查询,修改配置文件的方式直接查看编辑文件即可,其实也差不多;
推荐直接使用周期配置文件的方式定义定时任务,更加稳定可靠;管理方便,打开就能看到定时任务;因为anacron机制,有一个补救措施
anacron 配置
- anacron 是用来保证在系统关机的时候错过的定时任务,可以在系统开机之后运行;
注意:只有在配置文件中配置的定时任务才会执行,通过命令编辑的命令是不会执行的,所以推荐使用配置文件来定义系统定时任务;
不需要用户参与,方便且可靠
anacron的检测周期
-
anacron 会使用一天,七天,一个月作为检测周期
-
在系统的
/var/spool/anacron/
目录中存在cron.{daily|weekly|monthly}
文件,用于记录上次执行cron的时间 -
小时的时间间隔较短,不支持这种方式
-
和当前时间作比较,如果两个时间的差超过了anacron的指定时间差值,证明有cron任务被执行
centos 6.x的区别
-
在老的centos版本中,
/etc/cron.{daily|weekly|monthly}
这些目录既会被cron调用,也会被anacron调用,容易重复执行 -
在centos 6.x中只会被anacron调用,避免了重复执行
* 也就是cron的配置文件里面不再调用`/etc/cron.{daily|weekly|monthly}`这些文件 * centos6.x中anacron不再是服务,而是系统命令 * 之前需要检测当前服务是否在运行,如果没有运行则需要启动,现在直接作为系统命令执行即可
anacron配置文件
- anacron调用定时任务的配置,保证正常执行,不会受到服务器宕机影响
- 分别配置超过一天一个星期一个月调用的命令
nice 命令指定优先级,这里其实使用的默认的优先级;run-parts 就是指的命令的执行以run-parts脚本调用,这个工具使用C语言编写,执行效率比shell略高
-
以cron.daily工作为例来说明执行过程,一开机就检测上一次的执行时间,时间差超过一天一星期一个月分别调用指定的定时任务脚本
其实anacron命令不需要用户调用,了解定时任务的执行原理即可;
-
但是有一个缺点:执行的时间不确定,有个强制延迟和随机延迟,不可控,但是给了系统宕机一个补救措施
- 0
- 0
-
分享