當前位置:首頁 » 編程軟體 » linux定時任務腳本

linux定時任務腳本

發布時間: 2023-02-20 05:30:54

1. linux下編寫定時任務crontab

linux下的crontab服務:
1、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用
在linux平台上如果需要實現任務調度功能可以編寫cron腳本來實現。
以某一頻率執行任務
linux預設會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. cron.monthly
6. cron.weekly

如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。
示例:
每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh

2、cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。由於Cron 是Linux的內置服務,如果它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置

你也可以將這個服務在系統啟動的時候自動啟動:
在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start
現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了

查看服務是否已經運行用 ps -ax | grep cron

3、crontab命令
查看該用戶下的crontab服務是否創建成功, 用 crontab -l 命令
命令 which php 查看linux下安裝的php的路徑
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:

crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任務調度的crond常駐命令crond 是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啟動此 任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。

crontab命令選項:
-u指定一個用戶
-l列出某個用戶的任務計劃
-r刪除某個用戶的任務
-e編輯某個用戶的任務

4、cron文件語法:
分 小時 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范圍,0表示周日一般一行對應一個任務)

5、 新增調度任務
新增調度任務可用兩種方法:
1)、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。
2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。

6、 查看調度任務
crontab -l //列出當前的所有調度任務
crontab -l -u jp //列出用戶jp的所有調度任務

7、 刪除任務調度工作
crontab -r //刪除所有任務調度工作

8、 任務調度執行結果的轉向
例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
註:2>&1 表示執行結果及錯誤信息。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號
HOME=/ //使用者運行的路徑,這里是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
02 4 * * * root run-parts /etc/cron.daily //每天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行 /etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每月去執行/etc/cron.monthly內的腳本
大家注意」run-parts」這個參數了,如果去掉這個參數的話,後面就可以寫::要運行的某個腳本名,而不是文件夾名了。

總結:
編寫定時任務的兩種方式:1.sudo vim /etc/crontab 2. sudo crontab -e
查看定時任務的兩種方式:1.sudo cat /etc/crontab 2.sudo crontab -l

*/1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ && ./back_coupon.sh 2 10 >> /dev/null 2>&1

查看定時任務是否運行:
sudo tail -f /var/log/cron //定時任務日誌(查看剛才設置的任務是否執行)

註:腳本有可執行許可權

sh a.sh(不需要執行許可權)
./sh (需要執行許可權)

1.當shell腳本具有可執行許可權時,用sh filename與./filename執行腳本是沒有區別的。./filename是因為當前目錄沒有在PATH中,所有"."是用來表示當前目錄的。

2. Kali-linux 定時執行任務Crontab的簡單設置

1.修改crontab文件添加或修改定時任務

直接編輯文件:nano /etc/crontab

或使用crontab命令:crontab -e

2.語法介紹:

裡面已經有一些test示例,照著添加或修改就行,這里做點簡單介紹:

time user command

分                 時             天           月               星期                    用戶              命令

minute         hour         day         month         dayofweek         user              command

A. 時間 time:

minute: 分鍾,從 0 到 59 之間的任何整數

hour: 小時,從 0 到 23 之間的任何整數

day: 日期,從 1 到 31 之間的任何整數(如果指定了月份,必須是該月份的有效日期)

month: 月份,從 1 到 12 之間的任何整數(或使用月份的英文簡寫如 jan、feb 等等)

dayofweek: 星期,從 0 到 7 之間的任何整數,這里的 0 或 7 代表星期日(或使用星期的英文簡寫如 sun、mon 等等)

command: 要執行的命令(command是linux終端可以直接執行的命令。)

這里一些符號可以表示以上特殊數值:

*表示所有有效值

-表示範圍, 比如1-4(從1到4)

,表示散數數值, 比如1,2,4,7...

/表示每隔,比如 */19 (每隔19 )

看一些簡單的例子,以下是我自己的一個crontab文件:

root@mtx:~#crontab -l

# /etc/crontab: system-wide crontab

# Unlike any other crontab you don't have to run the `crontab'

# command to install the new version when you edit this file

# and files in /etc/cron.d. These files also have username fields,

# that none of the other crontabs do.

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow usercommand

#17 ** * *root    cd / && run-parts --report /etc/cron.hourly#每小時的17分

#25 6* * *roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )#每天6點25分

#47 6* * 7roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )#每年7月份里每一天的6點47分

#52 61 * *roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )#每個月1號的6點52分

*/4 *   * * *   root    /home/Tool/httpslow/httpslow.sh &#每4分鍾

#

B. 命令 command

命令command直接是linux終端可以執行的命令或可執行腳本的絕對位置

3.使用方法:

crontab crontab_file (-u user)#如crontab /etc/crontab -u root (root用戶執行默認配置文件)

crontab -l#查看當前正在運行的crontab服務

crontab -r#刪除用戶crontab配置文件

crontab -i#刪除前給出提示

crontab -h#查看幫助

/etc/init.d/cron start/stop/restart/reload#啟動/停止/重啟/重新載入 crontab服務

簡單的臨時重復命令完全可以有其他方案代替:

while true;do clear && echo '您的ip地址是:' && wget -qo- ifconfig.me/ip;sleep 120;done

#每2分鍾刷新一次外網ip地址,並列印出來」

watch -n 5 netstat -nus#顯示網路流量,每5秒刷新一次

。。。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:746
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1010
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:716
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:878
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:774
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1124
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:349
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:227
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:911
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:873