定時清除linux指定名稱的程序

2021-10-02 02:37:46 字數 1719 閱讀 4487

因為專案的問題,時不時會出現多個超時執行程序,影響系統執行。

寫了乙個殺程序的指令碼,然後定時去執行它。

1  編寫殺程序的指令碼    /root/kill_service.sh

#!/usr/bin/bash

# 檢查tesseract 程序,如果超過30秒,就把它kill掉

# 該程式需要寫入定時任務(每10分鐘執行一次)

# 每隔10分鐘執行一次

# */10 * * * * sh /root/kill_service.sh

# 需要監控的程序名稱(例如tesseract)

pro_name=tesseract

# 程序歸屬的使用者

username=root

# 超時時間30秒(假定認為該程序超過30秒,就認為該程序超時,需要kill掉)

interval=30

ps -eo pid,user,etime,cmd | grep $ |grep -v grep | awk '' | while read line

do #獲取程序pid

pid=`echo $line | awk ''`

#獲取程式執行時間,

miao=`echo $line | awk -f: ''`

fen=`echo $line | awk -f: '' | awk -f' ' ''`

let "second=miao+fen*60"

#判斷程序執行的時間是否超過指定週期$interval

if [ $second -ge $interval ];then

echo "555 $line kill $elapsed second $etime ssss"

# 殺死該程序

kill -9 $pid

fidone

2. 設定時任務,定時執行上面的指令碼

切換到root 使用者下執行

#檢視定時任務

crontab -l

#編輯定時任務

vim /etc/crontab

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=root

# for details see man 4 crontabs

# example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) or jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

#每隔2分鐘執行一次

*/2 * * * * sh /root/kill_service.sh &>> /root/log/kill_service.log

# 啟動定時任務

crontab /etc/crontab

linux使用指令碼殺死指定名稱的程序

如題,linux下要殺死程序首先是ps ef列出程序,得到程序pid 然後kill 9 程序號 殺死指定程序 這裡我不說使用killall pkill殺死程序,因為我的是乙個嵌入裝置,不支援這些命令 網上看到的查詢程序的後面都是使用awk的,不巧的是這個裝置也不支援awk 本來想使用那個指令碼來殺死...

linux使用指令碼殺死指定名稱的程序

如題,linux下要殺死程序首先是ps ef列出程序,得到程序pid 然後kill 9 程序號 殺死指定程序 這裡我不說使用killall pkill殺死程序,因為我的是乙個嵌入裝置,不支援這些命令 網上看到的查詢程序的後面都是使用awk的,不巧的是這個裝置也不支援awk 本來想使用那個指令碼來殺死...

小TIPS 殺掉指定名稱的程序

要殺某個指定名稱的程序,用到getprocesses方法以及kill方法,這點用在殺掉比如vba程式設計中的象word,excel等程序裡是很有效果的 sub processkill byval processname as string dim pprocess as process pproce...