Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Can';似乎不能用bash脚本终止进程_Linux_Bash_Raspberry Pi - Fatal编程技术网

Linux Can';似乎不能用bash脚本终止进程

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=$

我一直试图用批处理脚本杀死一个进程,但我似乎无法让它工作。我在网上阅读了很多教程,尝试了不同的方法,但我似乎无法让它杀死进程

如何运行:(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=$(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