crontab 的使用及注意事項

1.crontab的基本用法
Usage: crontab [-u user] [-e|-l|-r]
Crontab 的格式說明以下:
* 逗號(‘,’) 指定列表值。如: 「1,3,4,7,8″
* 中橫線(‘-’) 指定範圍值 如 「1-6″, 表明 「1,2,3,4,5,6″
* 星號 (‘*’) 表明全部可能的值
*/15 表示每 15 分鐘執行一次
# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# |  +————- hour (0 – 23)
# |  |  +———- day of month (1 – 31)
# |  |  |  +——- month (1 – 12)
# |  |  |  |  +—- day of week (0 – 7) (Sunday=0 or 7)
# |  |  |  |  |
# *  *  *  *  *  command to be executed
2.crontab與環境變量
不要假定cron知道所須要的特殊環境,它其實並不知道。因此你要保證在shelll腳本中提供全部必要的路徑和環境變量,除了一些自動設置的全局變量。因此注意以下3點:
1)腳本中涉及文件路徑時寫全局路徑;
2)腳本執行要用到java或其餘環境變量時,經過source命令引入環境變量,如:
cat start_cbp.sh
#!/bin/sh
source /etc/profile
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &
3)當手動執行腳本OK,可是crontab死活不執行時。這時必須大膽懷疑是環境變量惹的禍,並能夠嘗試在crontab中直接引入環境變量解決問題。如:
0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
3.其餘應該注意的問題
1)新建立的cron job,不會立刻執行,至少要過2分鐘才執行。若是重啓cron則立刻執行。
2)每條 JOB 執行完畢以後,系統會自動將輸出發送郵件給當前系統用戶。日積月累,很是的多,甚至會撐爆整個系統。因此每條 JOB 命令後面進行重定向處理是很是必要的: >/dev/null 2>&1 。前提是對 Job 中的命令須要正常輸出已經做了必定的處理, 好比追加到某個特定日誌文件。
3)當crontab忽然失效時,能夠嘗試/etc/init.d/crond restart解決問題。或者查看日誌看某個job有沒有執行/報錯tail -f /var/log/cron。
4)千萬別亂運行crontab -r。它 從Crontab目錄( /var/spool/cron) 中刪除用戶的Crontab文件。刪除了該用戶的全部crontab都沒了。
—————————————————————————————–
/etc/profile, /etc/bashrc, .bash_profile和.bashrc的差異
用戶登錄Linux操做系統的時候,」/etc/profile」, 「~/.bash_profile」等配置文件會被自動執行。執行過程是這樣的:登錄Linux系統時,首先啓動」/etc/profile」,而後啓動 用戶目錄下的」~/.bash_profile」,若是」~/.bash_login」和」~/.profile」文件存在的時候也會在執行」~ /.bash_profile」後被依次調用。
——————
cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
alias vi=vim
經過上面腳本能夠看到~/.bash_profile文件先調用~/.bashrc,而後再把PATH加載。
——————
下面是一些區別:
/etc/profile:此文件爲系統的每一個用戶設置環境信息,當用戶第一次登陸時,該文件被執行,並從/etc/profile.d目錄的設置文件中搜集shell的設置;
/etc/bashrc:爲每個運行bash shell的用戶執行此文件,當bash shell被打開時,該文件被讀取;
~/.bash_profile:每一個用戶均可使用該文件輸入專用於本身使用的shell信息,當用戶登陸時,該文件僅僅執行一次!默認狀況下,他設置一些環境變量,執行用戶的.bashrc文件,
~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登陸時及每次打開新的shell時,該文件被讀取;
~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件;
——–
/etc/profile是全局性的功能,其中設置的變量做用於全部用戶,~/.bash_profile中設置的變量能繼承/etc/profile中的變量並做用於用戶。
~/.bash_profile 是交互式、login 方式進入 bash 運行的;~/.bashrc 是交互式 non-login 方式進入 bash 運行的。
相關文章
相關標籤/搜索