crontab -e 會進入編輯模式。
我的是nano編輯器。
使用Ctrl+O來保存所做的修改
使用Ctrl+X來退出
基本格式 :
- command: 分 時 日 月 周 sh 文件
- 命令 第1列表示分鐘1~59 每分鐘用或者 */1表示
- 第2列表示小時1~23(0表示0點)
- 第3列表示日期1~31
- 第4列表示月份1~12
- 第5列標識號星期0~6(0表示星期天)
- 第6列要運行的命令
如上圖所示:
第一行表示,在每月每週每日的8點到21點的5,15,25,35,45,55分,執行 start_prod.sh 腳本
第二行表示,在每月每週每日的10點,23點的0分,執行process_prod.sh 腳本
如何查看運行成功呢:
我這裏是建了一個文件腳本 main.py :
用 run.sh 來執行:
每次執行寫一個日期寫入txt中。
crontab腳本: 8點到21點每一分鐘執行一次
通過tail來看是不是執行了:
下面步入正題:
我這裏業務上要實現的是一個,在每天的 指定時段中 每15 分鐘執行一次任務,然後每次執行10分鐘的時候,如果任務還在繼續就殺掉任務。沒有則繼續。
我之前的文件叫 main.py,就那個寫時間的py文件。
tail -f /root/test.txt
我把時間改成半小時執行一次了。
1。我以上面爲例子,這裏的思路是通過進程名來找到進程的id。
ps -ef|grep main.py
上面是不對的,因爲我們的py腳本是一瞬間寫完的,所以我在文件裏面又加上了time.sleep(40)
然後等到一分鐘整的時候,我們來輸入下面命令繼續查看:
“grep -v grep”是在列出的進程中去除含有關鍵字“grep”的進程。
ps -ef|grep -w main.py|grep -v grep
有了。
“cut -c 9-15” 是截取輸入行的第9個字符到第15個字符,而這正好是進程號PID。
下面的文件名中的引號不加也行。
ps -efww|grep -w ‘main.py’|grep -v grep|cut -c 9-15
“xargs kill -9”中的xargs命令是用來把前面命令的輸出結果(PID)作爲“kill -9”命令的參數,並執行該命令。
ps -efww|grep -w ‘main.py’|grep -v grep|cut -c 9-15|xargs kill -9
“kill -9”會強行殺掉指定進程,這樣就成功清除了同名進程。
ps -efww|grep -w main.py|grep -v grep|cut -c 9-15|xargs kill -9。
成功了。
那我們把這句話也加入到 crontab中。
先寫個sheel腳本,
叫做 kill.sh:
然後跑下看看: ok
現在到crontab -e 中:
我想了想,把這個time.sleep放到寫時間的外面。
方便我們測試。
tail -f 查看下當前文件內容:
然後我修改了下時間:
成了。這樣就是每5,15,20,25,30分鐘跑1次,跑1分鐘的時候給進程關了。