Linux Can';似乎不能用bash脚本终止进程
我一直试图用批处理脚本杀死一个进程,但我似乎无法让它工作。我在网上阅读了很多教程,尝试了不同的方法,但我似乎无法让它杀死进程 如何运行:(crontab) 日志: status.sh:Linux Can';似乎不能用bash脚本终止进程,linux,bash,raspberry-pi,Linux,Bash,Raspberry Pi,我一直试图用批处理脚本杀死一个进程,但我似乎无法让它工作。我在网上阅读了很多教程,尝试了不同的方法,但我似乎无法让它杀死进程 如何运行:(crontab) 日志: status.sh: Bridge=$(curl http://www.mywebsite.com/dir/cache/timestamp.txt) timestamp=$( date +%s ) total=`expr $timestamp - $Bridge` if (($total > 300)); then #p=$
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脚本,而且它非常混乱,我怀疑您会发现这是由于竞争条件造成的
屏幕
,cgminerEU
将立即死亡,反之亦然pkill
向这两个进程发送信号pkill
正在竞相在第二个进程死亡之前杀死它
我建议您尝试从pkill
中删除-f
,使其仅按进程名而不是完整的命令行终止
这样,它将只杀死cgminerEU
进程,而不会杀死同名的屏幕
进程(无论如何,它将作为依赖项而消亡)
PS:
curl
有一个-s
以避免收到进度指示器的电子邮件。18645:未找到表示它试图杀死pid 18645?-确切地在运行kill$PID之前,您可以通过运行ps ax
调试正在发生的事情,以查看是否正确检测到$PID。另外,脚本开头的set-x
也会很有帮助。。我做了调试,一切正常,除了它试图杀死一个不存在的进程,我试图直接通过ssh运行该文件。/status.sh,它运行并杀死了它,所以它是一个cronjob,一定把它搞糟了:\
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