歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下定時執行工具 crontab 使用

Linux下定時執行工具 crontab 使用

日期:2017/2/28 15:56:40   编辑:Linux教程

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分鐘才執行。www.linuxidc.com 如果重啟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都沒了。
5)在crontab中%是有特殊含義的,表示換行的意思。如果要用的話必須進行轉義\%,如經常用的date ‘+%Y%m%d’在crontab裡是不會執行的,應該換成date ‘+\%Y\%m\%d’`。
—————————————————————————————–
/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 運行的。

Copyright © Linux教程網 All Rights Reserved