linux設定定時任務 crontab

2021-08-21 19:25:25 字數 3973 閱讀 6956

linux設定定時任務

crontab命令概述

crontab命令用於設定週期性被執行的指令,並將其存放在/etc/crontab檔案,以供之後讀取和執行。

cron系統排程程序,可以使用它在每天的非高峰負荷段執行作業,或在一周或一月中不同時段執行,cron是系統主要的排程程序,可以無需人工干預的情況下執行作業。

檢查是否安裝了crontab,如果提示未安裝請自行安裝,crontab安裝包在系統光碟裡面的pacekage資料夾,也可以進入此**找相對應的crontab安裝包。

crontab預設開機自啟,ubuntu,centos系統通用。

方式一:

# /etc/init.d/crond start            啟動服務

# /etc/init.d/crond stop             停止服務

# /etc/init.d/crond restart          重啟服務

# /etc/init.d/crond reload           過載配置檔案

# /etc/init.d/crond status           檢視服務狀態(可檢視是否在執行定時任務)

方式二(ubuntu16.04適用):

# service cron start                 啟動服務

# service cron stop                  停止服務

# service cron restart               重啟服務

# service cron reload                過載配置檔案

# service cron status                檢視服務狀態(可檢視是否在執行定時任務)

方式三:

# /sbin service cron start           啟動服務

# /sbin service cron stop            停止服務

# /sbin service cron restart         重啟服務

# /sbin service cron reload          過載配置檔案

# /sbin service cron status          檢視服務狀態(可檢視是否在執行定時任務)

常用操作:

# crontab –l                        顯示crontab檔案(顯示已設定的定時任務)

# crontab –e                        編輯crontab檔案(編輯定時任務)

# crontab –r                        刪除crontab檔案(刪除定時任務)

# crontab –ir                       刪除crontab檔案提醒使用者(刪除定時任務)

補充說明:

在編輯crontab檔案中寫入需要執行的命令和時間,該檔案中每行都包括六個域,其中前五個域是指定命令被執行的時間,最後乙個域是要被執行的命令。每個域之間使用空格或者製表符分隔。

格式如下:

minute hour day-of-month month-of-year day-of-week commands

合法值為:00-59 00-23 01-31 01-12 0-6 (0 is sunday) 

除了數字還有幾個特殊的符號:"*"、"/"和"-"、","

"*"代表所有的取值範圍內的數字

"/"代表每的意思,"/5"表示每5個單位

"-"代表從某個數字到某個數字

","分開幾個離散的數字

注:commands 注意以下幾點

要是存在檔案,要寫絕對路徑。

即使是列印也不會顯示在顯示屏,在後台執行,最好重定向日誌。

使用案例:

# crontab -e (編輯crontab檔案)

輸入內容

*/1 * * * * root echo 「hello world!」 >> /root/test.txt

(用root許可權,每分鐘執行一次命令,輸出hello world! 並寫入 /root/test.txt)

過載crontab檔案

# service cron reload

重啟crontab服務

# service cron restart

進入/root/test.txt檢視輸出結果

說明:

/etc/crontab下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五個目錄和crontab,cron.deny二個檔案。

cron.daily                      是每天執行一次的job

cron.weekly                     是每個星期執行一次的job

cron.monthly                    每月執行一次的job

cron.hourly                     是每個小時執行一次的job

cron.d                          是系統自動定期需要做的任務

crontab                         是設定定時任務執行檔案

cron.deny                       檔案就是用於控制不讓哪些使用者使用crontab的功能

編寫shell指令碼

#vim /root/test.sh

輸入內容

#!/bin/bash

echo 「hello world」

編寫crontab檔案

crontab –e

輸入內容

*/1 * * * * root /root/test.sh

(用root許可權每分鐘執行/root/test.sh指令碼)

過載crontab檔案

# service cron reload

重啟crontab服務

# service cron restart

等待任務執行結果(可用service cron status命令追蹤任務)

注:

用編譯crontab檔案的方式執行指令碼,有些linux命令可能會無法執行(待解決)。

推薦配置crontab全域性檔案來執行shell指令碼

vim /etc/crontab

新增內容(例子)

0 2 * * 0   root cd /root/zentao && docker-compose down && docker-compose up --build

(每個星期日凌晨2:00重啟禪道)

*/1 * * * * root /home/lenovosh/work/bianyi.sh

(每分鐘執行 指定的bianyi.sh指令碼檔案)

10 14 1 * * root /home/lenovosh/work/bianyi.sh

(每個月的1號14:10執行 指定的bianyi.sh指令碼檔案)

1 0 * * 1,3,5 root /home/lenovosh/work/bianyi.sh

(每週一、三、五凌晨00:01執行 指定的bianyi.sh指令碼檔案)

0 0 * * * * root shutdown –a now

(每天零點準時關機)

過載crontab檔案

# service cron reload

重啟crontab服務

# service cron restart

等待任務執行結果(可用service cron status命令追蹤任務)

linux定時任務cron

一 cron格式 其格式如下 minute hour day month dayofweek command 分鐘 小時 天 月 天每星期 命令 比如 15 ls 表示每15分鐘執行一次ls 即每個小時的第0 15 30 45 60分鐘執行ls命令 25 8 11 ls 每天8 11點的第25分鐘執...

Cron 定時任務 時間設定

crontriggers往往比 trigger更有用,如果您需要基於日曆的概念,而非 trigger完全指定的時間間隔,的發射工作的時間表。crontrigger,你可以指定觸發的時間表如 每星期五中午 或 每個工作日9 30時 甚至 每5分鐘一班9 00和10 00逢星期一上午,星期三星期五 即便...

cron設定定時任務詳解

定時任務cron job被用於安排那些需要被週期性執行的命令。利用它,你可以配置某些命令或者指令碼,讓它們在某個設定的時間內周期性地執行。cron 是 linux 或者類 unix 系統中最為實用的工具之一。cron 服務 守護程序 在系統後台執行,並且會持續地檢查 etc crontab檔案和 e...