crontab 定時任務操作

2021-09-25 00:04:38 字數 2443 閱讀 6134

定時任務顧名思義就是在某一時間點自動進行任務操作。

在做pgsql的備份利用crontab進行定時操作, 使用起來比較方便。故分享

具體的定時編輯命令:crontab -e

首先從crontab的檔案分析使用策略,root使用者下,在/etc下有乙個檔案crontab,其內容如下

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

shell=/bin/bash

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

該 檔案下的前四行內容為crontab的環境變數,shell變數的值指定系統使用的shell環境(該樣例為bash shell),path變數定義了執行命令的路徑。cron的輸出以電子郵件的形式發給mailto變數定義的使用者名稱。如果mailto變數定義為空字元 串(mailto=""),電子郵件不會被傳送。執行命令或指令碼時home變數可用來設定基目錄。

注:以上系統會預設可以不用修改任何!

在root使用者下,可以直接vim /etc/crontab檔案進行指令碼的新增定時任務指令碼,而在其他普通使用者下可以通過crontab –e 進行指令碼的新增

編輯完成,可以用crontab –l進行檢視指令碼資訊

定時命令指令碼解析:

從**中可以看出指令碼格式如下:

minute hour day month week user-name command

minute---分鐘 (0-59)

hour------小時(0-23)

day--------日期(1-31)

month---月份(1-12)

week----星期(0-6) //0代表星期天

除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值範圍內的數字,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。以下舉幾個例子說明問題:

以具體例子進行分析定時指令碼:

pgslq.sh為需要執行的指令碼,內容為需要進行的備份操作或者其他任務指令碼

1 * * * * /home/postgres/pgsql.sh

表示的是每小時的第一分鐘執行該指令碼

2 3 * * * /home/postgres/pgsql.sh

表示每天的3點零2分執行該指令碼

1 1 * * 0 / home/postgres/pgsql.sh

表示的是每週的1點1分進行指令碼的執行

1 1 1 * * / home/postgres/pgsql.sh

表示的是每月的1點1分進行指令碼的執行

比較容易犯的錯誤是通常會把每小時的第一分鐘按做每分鐘執行一次,這點要注意兩者的區別:

1 * * * * /home/postgres/pgsql.sh

表示的是每小時的第一分鐘執行該指令碼

*/1 * * * * /home/postgres/pgsql.sh

表示的是每一分鐘執行該指令碼

因此這裡要記住」/」這個符號帶來的區別

「-」的用法:

0 10 * * 1-3 / home/postgres/pgsql.sh

表示的是每個周一到週三的早上10點執行該指令碼

0 10 * * 1、3、5 / home/postgres/pgsql.sh

表示的是每週的周

一、週三、周五的早上10點執行該指令碼

這些大致就是定時任務的幾乎常見的可能性定時指令碼。

在**中看到user-name這個表示的使用者該指令碼所在的使用者,一般情況下在做專案不可能會有root使用者進行編寫,所以我們可能直接在普通使用者下進行定時指令碼的編寫,直接執行crontab –e,編寫定時任務。

每 次編輯完某個使用者的cron設定後,cron自動在/var/spool/cron下生成乙個與此使用者同名的檔案,此使用者的cron資訊都記錄在這個檔案 中,這個檔案是不可以直接編輯的,只可以用crontab -e 來編輯。cron啟動後每過一分鐘讀一次這個檔案,檢查是否要執行裡面的命令。因此此檔案修改後不需要重新啟動cron服務。

crontab 定時任務操作

定時任務顧名思義就是在某一時間點自動進行任務操作。在做pgsql的備份利用crontab進行定時操作,使用起來比較方便。故分享 具體的定時編輯命令 crontab e 首先從crontab的檔案分析使用策略,root使用者下,在 etc下有乙個檔案crontab,其內容如下 root myzk ca...

crontab定時任務

今天工作項有個任務是讓ubuntu定時執行某個指令碼,對postgresql資料庫進行定時備份。linux 系統都有個cron定時任務的機制。今天做些筆記,以便日後翻查。注意 cron機制是有個使用者系統的概念的,即分系統cron和使用者cron,每個使用者所執行的cron任務可能不同。1.以roo...

crontab定時任務

基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59 每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示日期1 31 第4列表示月份1 12 第5列標識號星期0 6 0表示星期天 第6列要執行的命令 我的需求是定時備份mongodb 編寫任務執行的指令碼ba...