mac生存指南:linux中crontab定時啓動關閉

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分鐘的時候給進程關了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章