簡體   English   中英

似乎無法使用bash腳本殺死進程

[英]Can't seem to kill a process with bash script

我一直在嘗試使用批處理腳本殺死進程,但似乎無法使其正常工作,我已經在線閱讀了很多教程並嘗試了不同的方法,但似乎無法殺死進程

運行方式:(crontab)

* * * * * /home/pi/status.sh > /home/pi/logs/status.log 2>&1

日志:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100    10  100    10    0     0     73      0 --:--:-- --:--:-- --:--:--   153^M100    10  100    10    0     0     72      0 --:--:-- --:--:-- --:--:--   $
/home/pi/status.sh: 6: /home/pi/status.sh: 18645: not found

status.sh:

Bridge=$(curl http://www.mywebsite.com/dir/cache/timestamp.txt)
timestamp=$( date +%s )

total=`expr $timestamp - $Bridge`

if (($total > 300));
then
#p=$(pidof cgminerEU)
#sudo killall -9 cgminerEU
#sudo kill -9 $(pidof cgminerEU)
sudo pkill -f cgminerEU
fi

有關過程

pi@raspberrypi ~ $ ps ax | grep cgminerEU
26018 ?        Ss     0:13 SCREEN -dm ./cgminerEU
26019 pts/0    Ssl+  89:32 ./cgminerEU
30989 pts/2    S+     0:00 grep --color=auto cgminerEU

/home/pi/status.sh:6:/home/pi/status.sh:18645:未找到意味着它正在嘗試殺死pid 18645? 對不起,我是bash腳本的新手,這一切都很混亂

我懷疑您會發現這是由於比賽條件造成的。

  1. 如果殺死screencgminerEU將立即死亡,反之亦然
  2. 您已使pkill向兩個進程發送信號

pkill正在努力殺死第二個進程,然后再死掉。

我建議您嘗試從pkill刪除-f ,以使其僅按進程名稱而不是完整的命令行殺死。

這樣,它將僅殺死cgminerEU進程,而不殺死cgminerEUscreen進程( cgminerEU ,它將死為依賴項)。

PS: curl帶有-s以避免通過電子郵件發送進度指示器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM