例行性任务的建立
例行性任务分两种:一种是循环执行。如windows中的排程。 另一种是一次性执行,只执行一次。
一、循环执行任务的建立(cron监控程序)
cron监控程序的配置文件分两组:一组是全局的基本配置,系统例行执行的任务,直接编辑:/etc/crontab 进行配置。
一组是单个用户自定义的例行执行任务,用crontab命令进行配置。用crontab命令编辑的任务会存放到/var/spool/cron/username中。
(一)系统例行任务执行的配置
1、 /etc/crontab文件详解:
vi /etc/crontab进行配置
SHELL=/bin/bash //告诉系统要用哪个shell环境,这里是bash shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin //path变量定义用来执行命令的路径
MAILTO=root //每次cron脚本工作时,将邮寄消息mailto定义的用户名。如为空,则不寄。
HOME=/ //设置执行命令和脚本时使用的主目录,此处是根目录。
# run-parts
01 * * * * root run-parts /etc/cron.hourly // /etc/cron.hourly中的脚本或可执行文件每小时运行一次
02 4 * * * root run-parts /etc/cron.daily // /etc/cron.daily中的脚本或可执行文件每天的4时02分运行一次
22 4 * * 0 root run-parts /etc/cron.weekly // /etc/cron.weekly中的脚本或可执行文件每同星期天的4时22分运行一次
42 4 1 * * root run-parts /etc/cron.monthly // /etc/cron.monthly中的脚本或可执行文件每月的1日4时42分运行一次。
上述crontab文件中的各项的意思分别为:
前五项依次表示为:分钟 小时 日期 月份 星期
root:表示执行后面脚本的用户为身份为root用户,可改为其他用户
run-parts :表示用run-parts脚本来执行后面目录下的所有可执行文件。
/etc/cron.hourly:目录表示存有可执行文件和脚本的目录。
2、crontab中各项特殊符号详解:
(1) "*" 代表任何有效值
(2) "," 隔开一系列的数。如:1,3,8 只表示1,3,8这三个数。
(3) 整数数字之间的 "-" 号是表示一个范围,如: 3-8,即3到8这段之间。
(4) "/" 表示"/"前面这段时间内,每隔"/"后面的这段时间运行一次。 例: 0-59/2 在分钟内表示,每隔2分钟运行一次。即0-59分钟表内,隔2分钟就执行一次。
(5) week中, 0和7表示星期天。
例: 42 8,16,23 1-20 */3 * cat /proc/meninfo>>/tmp/meninfo //即每隔3个月的1到20号的8点42,16点42,23点42分,把 /proc/meninfo中的内容输入到 /tmp/meninfo中。
3、系统用户需建立非每小时,每周,每月执行的例行任务的话,而是根据自已的调度时间进行调度执行的话,还可以编辑文件放在/etc/cron.d目录下。语法与上面一样。例:touch update 先建一个文件,然后在这个文件里按以上格式进行编辑即可。
4、注意事项:最好不要修改crontab中原文。有其他执行时间的例行工作,可增加一行进行编辑,并更改执行行命令的目录。并把需执行的可执行文件放在新的目录下即可。 也可以在行尾直接增加执行命令。
(二)非根用户例行任务执行的配置
根用户以外的用户需使用cron设定例行任务时,需用crontab -e命令进行编辑,格式与上面所讲一样。编辑完后默认会保存在/var/spool/cron/username目录下。
1、根用户以外的其他用记登录系统
2、crontab -e 编辑
3、编辑完后自动保存在/var/spool/cron/username下。username为创建任务的用户名。
注意:不要用vi命令编辑该文件
(三)控制对cron的使用。可以编辑:/etc/cron.allow (允许执行cron的用户) 和 /etc/cron.deny文件(不允许使用cron的用户)。
格式都是每行一个用户。都不允许空格。当/etc/cron.allow文件存在时,则只有这个文件中列出的用户可以使用cron,即使 cron.deny文件存在也被忽略。
当只有cron.deny存在时,文件中的用户被禁止。
(四)cron守护进程每分钟检查/etc/crontab文件、/etc/cron.d目录、/var/spool/cron目录中的改变。如发现改变就会被载入。所以改变了某个crontab后,不必重启进程。
(五) crontab [-u username][-ler]
-e:编辑crontab中的工作内容
-l:查看crontab中的工作内容
-r:删除crontab中的工作内容
-u:只有root用户能执行。帮其他用户建cron。
二、一次性执行任务
at和 batch
(一)at
at是用来在指定时间内调度一次性的任务。
要在某一指定时间内调度一项一次性作业:
1、at [-m ] time
-m: 当执行任务后发邮件给用户
time: 是执行的时间。
例: at 1:00 5/12/03 //在2003年5月12日1点钟前完成任务。 月也可以是英文月份。
at now + 5 minutes //从现在开始后的5分钟执行任务。 还可以接小时,天数,星期。
hour
days
weeks
在键入at 命令+时间后,出现提示符。在提示符后键入要执行的命令。可执行多条命令,只是在每条命令完成后按回车键。
输入完所有命令后按回车键。最后输入ctrl+D 键退出。也可以提示符后输入脚本。
2、atq 查询运行的at任务
3、atrm 任务号 //删除运行的at任务。用atq先查出任务号
(二)bath
at是按时间确定执行时间,bath是当系统承载量降到0.8以下时捃行一次性任务。
bath命令后,即出现提示符,在提示符后输入脚本或命令。
转载于:https://blog.51cto.com/kuangkuang/258727