1. 程式人生 > >Mac下根據程序名定時殺死/守護程序方式重啟程序

Mac下根據程序名定時殺死/守護程序方式重啟程序

以Mac下殺死和重啟pycharm程式為例編寫指令碼,使用的是python3.6環境

一、殺死程序

ps -ef | grep pycharm | awk '{print $2}' | xargs kill -9  # ps -ef | grep pycharm | awk '{print $2}' | xargs執行之後,會將所有含有pycharm都程序號列出來

二、啟動程序

/Applications/PyCharm.app/Contents/MacOS/pycharm

三、建立一個shell檔案,假設命名未re_s.sh,內容如下,作用是用來殺死程序,延時5s,啟動程序 (|| 和&& 的區別,參考此博主的部落格https://www.cnblogs.com/clam/archive/2012/12/17/2821684.html)

#!/bin/bash

echo 're start' `date` >> /Users/007/Desktop/test/log.log &&  # 日誌中記錄指令碼開始時間

ps -ef | grep pycharm | awk '{print $2}' | xargs kill -9 ||  # 殺死程序,此處可以省略||,(用|| 而沒用&& ,因為此命令執行後會出現kill: xxxx: No such process 錯誤,|| 的意思是出現錯誤後執行接下來的語句,而&&是沒有錯誤的情況下執行接下來的語句)

sleep 5s &&  # 延時5s

/bin/bash /Users/007/Desktop/test/re_start.sh &&  # 啟動程序

echo 're end' `date` >> /Users/007/Desktop/test/log.log  # 寫入日誌

四、建立用來啟動程式程序的指令碼,這裡假設命名為re_start.sh

#!/bin/bash

echo 'start' `date` >> /Users/007/Desktop/test/log.log &&

/Applications/PyCharm.app/Contents/MacOS/pycharm >>/Users/007/Desktop/test/log.log 2>&1 &  # 守護程序的方式啟動

echo 'end' `date` >> /Users/007/Desktop/test/log.log

五、都設定好之後,執行re_s.sh檔案即可

# 整合後的程式碼

#!/bin/bash

echo 're start' `date` >> /Users/007/Desktop/test/log.log &&  # 日誌中記錄指令碼開始時間

ps -ef | grep pycharm | awk '{print $2}' | xargs kill -9 ||  # 殺死程序,此處可以省略||,(用|| 而沒用&& ,因為此命令執行後會出現kill: xxxx: No such process 錯誤,|| 的意思是出現錯誤後執行接下來的語句,而&&是沒有錯誤的情況下執行接下來的語句)

sleep 5s &&  # 延時5s

/Applications/PyCharm.app/Contents/MacOS/pycharm >>/Users/007/Desktop/test/log.log 2>&1 &  # 守護程序的方式啟動

echo 're end' `date` >> /Users/007/Desktop/test/log.log  # 寫入日誌