(7)定时任务
程序:我们使用的命令就是程序。程序放在磁盘中。
进程:
就是指系统中正在执行的程序。放在内存中。
每个进程启动时,系统会指定一个唯一的数字给每个进程,数值称为进程(ID)
每个进程都可能以两种方式存在:前台和后台。
crond :
是linux系统中用来定期执行命令或者指定程序任务的一种服务或者软件。
crond 服务默认情况(每分钟),会检查系统中是否有需要执行的定时任务,
如果有,就会根据事先定义好的规则来执行这个定时任务。
秒级任务
1)crond 无能为力可以通过方法来改进。
2)需要自己写守护进程shell循环
linux定时任务分类:
1)系统自身的定期任务的执行
2)用户执行的定时任务
linux定时任务分类
a)at 适合执行一次就结束的调度任务,依赖于atd服务,不常用。
b)anacron 适合于非7*24小时开机的服务器准备的,开机执行的,
检测停机期间没有执行的任务,在开机后一次性执行一遍。
c)crond crond 服务默认情况每分钟,会检查系统中是否需要有执行
的定时任务,如果有就会根据事先定义好的规则来执行定时任务。
依赖的服务有crond。
注: crond 是一个定时任务守护进程
crontab 是用户用来设置定时任务规则的命令
crontab:
crontab -l 查看crontab的文件内容
crontab -e 编辑crontab文件内容
(crontab {-l | -e}实际上就是在操作 /var/spool/cron/ root [当前用户名 ])
所以:
crontab -l === cat /var/spool/cron/root
crontab -e === vi /var/spool/cron/root
默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于
/var/spool/cron 中,其crontab 配置文件对应的文件名与登陆的用户名一致,
如 root 用户的定时任务配置文件为 /var/spool/cron/root
定时任务的指令使用格式:
用户的定时任务规则一般分为6个段(每个段通过空格来分隔,系统的定时任务为/etc/crontab,
分为7段,空格来分隔),前五段为时间的设定段,第6段为所要执行的命令或者脚本任务段。
用户的定时任务:
* * * * * cmd
分 时 日 月 周 cmd
0-59 0-23 01-31 01-12 0-7
符号定义:
* 号: 就是每的意思,表示任意时间都。
00 23 * * * cmd :表示每天的 23:00 都执行cmd任务
定时任务规则如果到小时,就表示每天执行 cmd 任务
分位上的 * 等价于 0-59
— 号:表示分隔符,表示时间范围
00 17-19 * * * cmd :表示每天晚上 17,18,19整点分别执行的意思。
,号: 表示分隔时段的意思
30 17,18,19 * * * /bin/sh/scripts/oldboy.sh:
表示 每天17,18,19点的半点时刻执行 /bin/sh/scripts/oldboy.sh 的脚本
/n: 表示 每隔n单位时间
*/10 * * * * :表示每隔10分钟执行一次任务。
systemctl vs chkconfig
http://www.maybe520.net/blog/1865/
注:周和日尽量不要同时用
例子:
每分钟打一次名字的全拼到 某个文件中
1)crontab -e (编辑 /var/spool/cron/root[当前用户])
添加:
# print a name
* * * * * echo old boy >> /server/log/oldboy.log > /dev/null 2>&1
注:/dev/null 2>&1 等价于 1>/dev/null 2>/dev/null
将标准输出和错误输出到黑洞
2)创建目录
mkdir-p /server/log/
3)监视
tail -f /server/log/oldboy.log
系统的定时任务:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed