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]
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 0 | 1月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 系統延時任務和定時任務