linux之計畫任務

2021-08-20 19:29:14 字數 4659 閱讀 5423

在進行計畫任務之前,一定要確保伺服器的時間是準確無誤的,否則將造成計畫任務失敗或者無法達到預期效果,尤其是在大規模的集群環境中,更顯得尤為重要,所以我們首先要學會的就是同步伺服器時間。

centos6:

ntpdate 172.x.x

.x 將時間與伺服器同步

vim /etc/ntp.conf 修改此檔案

server 172.x.x

.x iburst 新增此行

chkconfig ntpd on 下次開機自動啟動ntpd服務

service ntpd start 開啟ntpd服務

service ntpd status 檢查ntpd服務狀態

centos7:

ntpdata 172.x.x

.x 將時間與伺服器時間同步

vim /etc/chrony.conf 修改此檔案

server 172.x.x

.x iburst 加上此行

systemctl enable chronyd 下次啟動自動開啟chronyd服務

systemctl start chronyd 開啟chronyd服務

systemctl status chronyd 檢查chronyd服務狀態

at命令用於指定乙個定時任務,在某個特定的時間節點執行一次。at命令也可以用於刪除已經設定好的定時任務,與at命令相關的命令有atq,atrm,batch命令。at和batch名均是從標準輸入中或指定的檔案中讀取相關的命令,並在指定的時間執行對應的命令,其執行過程中使用的shell為/bin/sh。在執行at命令前,需要確保系統啟動了atd服務。

centos7:

systemctl status atd      # 確認處於active(running)狀態

systemctl start atd # 如果服務未開啟,請開啟atd服務

如果at.allow和at.deny檔案不存在,則只有root使用者才允許使用at命令

at.allow檔案的優先順序大於at.deny檔案

-f:指定包含具體指令的任務檔案;

-q:指定新任務的佇列名稱;

-l:顯示待執行任務的列表;

-d:刪除指定的待執行任務;

-m:任務執行完成後向使用者傳送e-mail。

例1:三天後的下午 5 點鐘執行/bin/ls

[root@localhost ~]# at 5pm+3 days

at> /bin/ls

at> job 7

at2018-01-08

17:00

例2:明天17點鐘,輸出時間到指定檔案內

[root@localhost ~]# at 17:20 tomorrow

at> date >/root/2013.

logat> job 8

at2018-01-06

17:20

例3:使用atq命令來檢視系統沒有執行工作任務

[root@localhost ~]# atq

82018-01-06

17:20

a root

72018-01-08

17:00

a root

例4:刪除已經設定的任務

[root@localhost ~]# atq

82018-01-06

17:20

a root

72018-01-08

17:00

a root

[root@localhost ~]# atrm 7

[root@localhost ~]# atq

82018-01-06

17:20

a root

例5:顯示已經設定的任務內容

[root@localhost ~]# at -c 8

#!/bin/sh

# atrun uid=0 gid=0

# mail root 0

umask 22此處省略n個字元

date >/root/2018.

log

而crontab命令是用於設定、移除或顯示相關為crond守護程序服務的週期性任務。linux系統缺省會安裝crond守護程序, 並在開機的時候自動啟動。每個使用者屬於自己的crontab,並且儲存在/var/spool/cron目錄下。

setvice crond status   # 檢視crond的服務狀態

service crond start # 啟動服務

service crond stop

# 關閉服務

service crond restart # 重啟服務

service crond reload # 重新載入配置

linux下的任務排程分為兩類:系統任務排程和使用者任務排程。

系統任務排程:系統週期性所要執行的工作,比如寫快取資料到硬碟、日誌清理等。

在/etc目錄下有乙個crontab檔案,這個就是系統任務排程的配置檔案。

內容如下

[root@localhost ~]# cat /etc/crontab

shell=/bin/bash

path=/sbin:/bin

:/usr/sbin

:/usr/bin

mailto=root

# 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

# run-parts

前三行分別定義了crontab任務執行時使用的shell、環境變數及郵件的收件人。

其後的注釋介紹了crontab任務的使用格式及各個選項的含義。

接著緊跟的四行週期性任務,分別代表每小時、每天、每週、每月執行一次的週期任務,

其執行身份為root,並且使用run-parts bash指令碼抓取隨後緊跟的目錄下的指令碼來執行。

2.使用者任務排程

使用者定期要執行的工作,比如使用者資料備份、定時郵件提醒等。使用者可以使用 crontab 工具來定製自己的計畫任務。所有使用者定義的crontab檔案都被儲存在/var/spool/cron目錄中。其檔名與使用者名稱一致,使用者許可權檔案如下:

-e:編輯該使用者的計時器設定;

-l:列出該使用者的計時器設定;

-r:刪除該使用者的計時器設定;

-u《使用者名稱》:指定要設定計時器的使用者名稱。

例1:每1分鐘執行一次command

* * * * * command

例2:每小時的第3和第15分鐘執行

3,15 * * * * command

例3:在上午8點到11點的第3和第15分鐘執行

3,15

8-11 * * * command

例4:每隔兩天的上午8點到11點的第3和第15分鐘執行

3,15

8-11 */2 * * command

例5:每個星期一的上午8點到11點的第3和第15分鐘執行、

3,15

8-11 * * 1

command

例6:每晚的21:30重啟passwd

3021 * * * /etc/init.d/passwd restart

例7:每月1、10、22日的4 : 45重啟passwd

4541,10,22 * * /etc/init.d/passwd restart

例8:每週

六、週日的1:10重啟passwd

101 * * 6,0 /etc/init.d/passwd restart

例9:每天18 : 00至23 : 00之間每隔30分鐘重啟passwd

0,30

18-23 * * * /etc/init.d/passwd restart

例10:每週三凌晨

三、五點10分執行指令碼,輸出當前時間,時間格式為 2017-12-28

10:00:00

vim date.sh

#!/bin/bash

date +'%f %t'

103,5 * * 3 root /bin/bash date.sh

Linux之計畫任務

1 at 一次性任務配置,其任務只能在指定的時間執行一次,前提是atd服務開啟。root localhost at 17 45 2017 05 30 設定任務 at ls a.txt at job 3 at 2017 05 30 17 45 root localhost atq 檢視一次性任務 ro...

Linux之計畫任務

crond就是計畫任務,類似於我們平時生活中的鬧鐘。定點執行。計畫任務主要分為以下兩種使用情況 1 系統級別的定時任務 臨時檔案清理 系統資訊採集 日誌檔案切割 2 使用者級別的定時任務 定時向網際網路同步時間 定時備份系統配置檔案 定時備份資料庫的資料 檔案說明 etc crontab cront...

Linux筆記之計畫任務

計畫任務有一次性和長期性之分 part 1 一次性任務 引數 作用at 時間 安排一次性任務 atq 或 at l 檢視任務列表 at c 序號 瀏覽任務與設定環境 atrm 序號 刪除任務 root okaka desktop at 14 45 at service network restart...