crontab 定時執行 任務
格式: * * * * *
分別對應表示: 分鍾(0-59) 小時(0-23) 日(1-31) 月份(1-12) 星期(0-6)
星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執行該命令操作。 逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9” 中杠(-):可以用整數之間的中杠表示一個整數范圍,例如“2-6”表示“2,3,4,5,6” 正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。 同時正斜線可以和星號一起使用, 例如*/5,第一個位置就是每隔5秒,如果用在minute字段,表示每多少分鍾。
時間格式示例:
每五分鍾執行 */5 * * * * 每小時執行 0 * * * * 每天執行 0 0 * * * 每周執行 0 0 * * 0 每月執行 0 0 1 * * 每年執行 0 0 1 1 *
crontab 問題:
1、crontab中的輸出配置: crontab中經常配置運行腳本輸出為:>/dev/null 2>&1,來避免crontab運行中有內容輸出。 2、shell命令的結果可以通過'> '的形式來定義輸出; /dev/null 代表空設備文件 > 代表重定向到哪里,例如:echo "test" > test.txt 1 表示stdout標准輸出,系統默認值是1,所以">/dev/null"等同於"1>/dev/null" 2 表示stderr標准錯誤 & 表示等同於的意思,2>&1,表示2的輸出重定向等同於1 3、重定向輸出語句的含義: 1>/dev/null 表示標准輸出重定向到空設備文件,也就是不輸出任何信息到終端,不顯示任何信息。 2>&1 表示標准錯誤輸出重定向等同於標准輸出,因為之前標准輸出已經重定向到了空設備文件,所以標准錯誤輸出也重定向到空設備文件。 4、crontab 中 % 是表示換行,創建時間命令必須寫成 \% date '+%Y%m%d' 要寫成: date '+\%Y\%m\%d' 5、環境變量問題導致crontab 任務執行不了 : 加入環境變量 0 * * * * ./etc/profile;/bin/sh java.sh 6、crontab 的日志位置一般位於/var/log/cron,利用下面的語句即可查看日志。 tail -f /var/log/cron
環境變量延伸:
/etc/profile
/etc/bashrc
.bash_profile
.bashrc
用戶在登陸Linux操作系統的時候,"/etc/profile", "~/.bash_profile" 等配置文件會被自動執行。 執行過程 -- 首先啟動 "/etc/profile", 然后啟動用戶目錄下的 "~/.bash_profile", 如果"~/.bash_login" 和 "~/.profile" 文件存在的時候也會在執行 "~/.bash_profile" 后被依次調用。 /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 運行的;