linux计划任务详解程序员

13.1 例行性命令概述
例行性命令相当于windows中的计划任务,是按照固定的规律与时间执行一些常规的操作,比如定时关闭服务器与发送电子邮件,并且是在后台进行操作。
13.1.1 例行性命令的种类
1. at    仅执行一次的,主要做一些突发的事件。
2. cron  工作将持续做下去,周期性的事件。
13.1.2 常见的例行性命令
1. 登陆日志的数据轮换。
2. rpm数据库的建立。
3. 建立locate数据库。
4. 程序分析。
5. 检查登录文件。
6. 指纹数据库的比较,分析最近更改过的内容。

13.2 用户at一次性任务分配
13.2.1 at服务启动

at服务默认不打开at服务,需要手动打开。
chkconfig –level 35 atd on     打开at服务并开机自启动
/etc/init.d/atd start
service atp restart
13.2.2 at工作原理
at的工作记录文件在/var/spool/at目录下面,并且以用户名来区分是属于哪个用户的文件,例如:redhat用户就在/var/spool/at/redhat下面。
系统默认所有用户都可以使用at,如果不想让谁使用,可以找到以下文件/etc/at.allow与/etc/at.deny,进行相关编辑。
一般情况下:
先找allow,写在里面的用户才能用at,或deny里面没有的用户才能使用at。如果没有这两个文件的话,只有root用户才能使用。
FC5只有at.deny且里面为空,所以所有用户都可以使用at,具体系统应根据相关的情况进行确认。
13.2.3 at任务分配
at -m time
-m   任务完成后以电子邮件形式通知用户
示例:
at 15:20 2009-1-20

at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -r now         命令最好使用绝对路径
at> <EOT>          ctrl+d
job 1 at 2009-01-20 15:20

13.2.4 at任务管理
示例:
atq  查询有多少at工作任务。
2       2009-01-20 17:00 a root

atrm 2   删除刚才创建的工作任务。

13.3 用户cron周期性任务分配
13.3.1 cron服务启动

cron服务默认是开启的。
chkconfig –list |grep crond     查年crond服务的启动情况
/etc/init.d/crond start
service crond restart
13.3.2 cron工作原理
cron的工作记录文件在/var/spool/cron目录下面,并且以用户名来区分是属于哪个用户的文件,例如:redhat用户就在/var/spool/cron/redhat下面。
与at一样。
/etc/cron.allow
/etc/cron.deny
fc5只有cron.deny
不要直接编辑/var/spool/cron/redhat配置文件。Cron的每一项任务的执行都会在/var/log/cron日志中有记录。
13.3.3 cron任务分配
crontab  命令是用户用于建立计划任务的命令是/usr/bin/crontab
-u       root用户帮助其它用户建立
-e       编辑crontab内容
-l       查年crontab内容
-r       删除crontab内容
crontab文件中参数格式:
分  时  日  月  周   命令串
时间参数意义:
*   代表任意时间。
,  代表分隔如出2,3表示2,3都行。
–   表示一段时间范围内。2-4表示234
/n  表示每隔单位时间。
命令串:要加入绝对路径,否则不能成功。
参数示例:
59 23 1 5 *  5月1日23:59
30 16 * * 5  星期五的16:30
*/5 * * * *  每五分钟执行一次

可以配合sleep命令,控制时间

示例:
crontab -e 
0  12  *  *  *  /sbin/shutdown -r  表示任何月日的12点都执行重启

13.3.4 cron任务管理
示例:
crontab -l   查看crontab内容

# DO NOT EDIT THIS FILE – edit the master and reinstall.
# (/tmp/crontab.1820 installed on Tue Jan 20 16:16:34 2009)
# (Cron version — $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0  12  *  *  *  shutdown -r

crontab -r   全部删除crontab中的内容

13.4 系统周期性任务分配
13.4.1 系统cron服务启动

用户与系统cron服务都是/etc/init.d/crond 
crontab -e 是针对用户来进行计划性任务来进行分配的。对于系统计划任务只需要编辑/etc/crontab配置文件就可以了,可以用root用户进行编辑。
通常cron服务最低检测限制是分钟,所以cron每分钟去读取一次/etc/crontab 以及/var/spool/cron目录中的内容进行执行。

13.4.2 系统cron服务配置
cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/1805.html

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论