crontab(定時任務操作)


定時任務顧名思義就是在某一時間點自動進行任務操作。
在做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服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM