您的位置:首页 > 其它

系统延时任务与定时任务

2018-01-24 20:28 190 查看
一、延时任务

  在Linux中延时任务是临时的,可以指定某一个任务在将来的特定时间运行

1、at命令

  基本操作格式:
[root@loveyu ~]# at now+1min
at> date<EOT>   #EOT代表Ctrl+D来保存这个延时动作
job 2 at 2017-07-29 12:12

at -l|atq 这两个命令都是用来查看当前的延时任务
atrm | at -d +任务号  这个命令都是用来取消定时任务
at -c +任务号 查看延时任务的内容
at -f file 延时任务执行文件中的动作。注意文件不是脚本
at now+1min 延时1分钟
at -m 延时命令没有输出也发邮件给执行者,默认没有输出不发邮件。
at -M 延时命令即使有输出也不发邮件给执行者
2、at执行命令权利设定

  /etc/at.deny   #用户黑名单,此名单中的用户不能执行at命令

  /etc/at.allow  # 用户白名单,此文件默认不存在,建立后所有用户均没有at命令执行权限,此名单中的用户才有at命令执行权限。

二、定时任务

    定时任务是永久的,在系统中每分钟做任务扫描,他的任务程序是crond    
[root@loveyu ~]# ll /etc/|grep cron
-rw-r--r--.  1 root root   541 Jul 19  2011 anacrontab   
drwxr-xr-x.  2 root root   4096 May  1 20:43 cron.d   
drwxr-xr-x.  2 root root   4096 Apr  5 21:54 cron.daily    #每天都要执行一次的定时任务
-rw-r--r--.  1 root root   0 Jul 19  2011 cron.deny
drwxr-xr-x.  2 root root   4096 Apr  5 21:51 cron.hourly   #每小时都要执行一次的定时任务
drwxr-xr-x.  2 root root   4096 Apr  5 21:53 cron.monthly  #每月都要执行一次的定时任务
drwxr-xr-x.  2 root root   4096 Sep 27  2011 cron.weekly   #每周都要执行一次的定时任务
-rw-r--r--.  1 root root   457 Sep 27  2011 crontab
[root@loveyu cron.d]# cat /etc/crontab 
SHELL=/bin/bash       #执行定时任务的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin  #全局路径
MAILTO=root           #邮件的接收者 
HOME=/
#下面为定时任务前五个 "*"号的意思
# For details see man 4 crontabs
# 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


1、发起方式一:使用crontab命令发起

原理是在/var/spool/cron/ 对应用户的名称的文件中添加你的定时任务。
[root@loveyu ~]# ll /var/spool/cron/
total 16
-rw-r--r-- 1 root root 285 May  3 20:13 \
-rw------- 1 root root  22 Jul 29 13:06 feitian
-rw------- 1 root root  44 Jul 29 13:08 loveyu
-rw------- 1 root root 476 Jul 29 13:04 root

crontab  -u指定这个定时任务属于哪个用户
crontab  -l列出当前用户的定时任务
crontab  -e 编辑当前用户的定时任务
     1》一般crontab定时任务语法
*
*号,表示任意时间都,实际就是“每”时间的意思,如00 23 * * * cmd表示每月内周每日的23:00执行cmd任务。需要注意的
是:每个时间为上的*表示每,如果位上是*就是该位上时间的取值范围,小时上*等价于00-23
-
减号,表示分隔符,表示一个范围内,区间段,如17-19点表示每天的17,18,19的00分指向任务
,
逗号,表示分隔时间段的意思;30 17,18,19 * * * /bin/sh/scripts/feitian.sh,表示每天17、18/19点的半点执行
/scripts/feitian.sh脚本,可以和-结合使用
/m
n代表述职,即每隔n个时间单位;例如每10分钟执行一次任务可以写成*/10 * * * * cmd ,其中*/10*,*的范围是0-59
也可以写成0-59/10;


    2》举例

05 * * * *每小时的正点过5分钟
05 02 8 * * *每天2.05am
30 08 1 * *每月第一天8:30pm
00 07 25 12 *12月25日7:00am
30 16 * * 5每个星期五4:30pm
*/5 * * * *每5分钟执行一次
*/10 9-17 1,15 *在每月第一天和第15天9:00am到5:00pm之间每隔10分钟执行一次
0 0 0 0 jan 01月1日午夜和1月的每个星期日
[root@loveyu ~]# crontab -u  loveyu  -e
crontab: installing new crontab
[root@loveyu ~]# crontab -u  loveyu  -l
*/1 * * * *  echo "feitian" >> /mnt/fenghui
#每分钟将feitian这个字符串添加到fenghui这个文件中


2、发起方式二:使用vim/etc/cron.d/filename

    这种方式和上面crontab差不多,但是完全和crontab没有关系,就是在时间的后边多了一个用户,也就是这个定时任务的拥有者。 
    

* * * * * root touch /mnt/file  ##表示每分钟在/mnt目录下建立一个文件file


3、crontab命令的执行权利的设定

  /etc/cron.deny   ##用户黑名单,此名单中的用户不能执行crontab命令(直接在文件中写用户名) 

   /etc/cron.allow   ##用户白名单,此名单默认不存在,建立后所有用户均没有at命令执行权限,此名单中的用户才有crontab命令执行权限. 
 

三、系统中临时文件

   系统中服务在正常运行时会产生临时文件,他会在在系统中/usr/lib/tmpfiles.d/目录下存放,系统的临时文件的配置配置是/usr/lib/tmpfiles.d/*.conf,自己创建的临时文件配置文件必须以.conf结尾。

   临时文件配置的编写方式是:
文件类型  文件名    文件权限 文件所有人 文件所有组 文件至少存在的时间
  d      /mnt/westos     777       root    root       10s
 ##表示在/mnt目录下创建临时目录westos,并且十秒内不能被删除 
  systemd-tmpfiles --create  /usr/lib/tmpfiles.d/*  ##执行临时文件配置
  systemd-tmpfiles --clean  /usr/lib/tmpfiles.d/*   ##清理临时文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: