1. 程式人生 > >Linux 系統延時任務和定時任務

Linux 系統延時任務和定時任務

linux基礎運維學習

一、延時任務

在Linux中延時任務是臨時的,可以指定某一個任務在將來的特定時間運行

1、at命令

基本操作格式:

[[email protected] ~]# 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

[[email protected] ~]# 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
[[email protected]
/* */ 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/ 對應用戶的名稱的文件中添加你的定時任務。

[[email protected] ~]# 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;
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月的每個星期日
[[email protected] ~]# crontab -u  loveyu  -e
crontab: installing new crontab
[[email protected] ~]# 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/*   ##清理臨時文件



本文出自 “13122323” 博客,請務必保留此出處http://13132323.blog.51cto.com/13122323/1952782

Linux 系統延時任務和定時任務