点击 Ubuntu 16.04 bash 脚本随机交替输出行为

点击 Ubuntu 16.04 bash 脚本随机交替输出行为

我编写并测试了以下点击 Ubuntu 16.04 bash 脚本,目的是通过直接杀死 pgrep 返回的进程 id 然后删除锁文件来彻底杀死单声道服务 RecorderManager.exe 进程。

#!/bin/bash
PID=$(exec pgrep -lx "Recorder Manage")
echo $PID
NUMBER=$(echo $PID | tr -dc '0-9')
echo $NUMBER
kill -9 $NUMBER
rm /tmp/My_Recorder.exe.lock

经过多次测试后,我发现这个 bash 脚本的行为是随机的,交替出现:有时它输出“Killed!”,有时它输出“10931 My_Recorder.exe”,后跟 10931。

为什么会发生这种随机行为以及我们如何解决它?

答案1

脚本本身的名称是什么?与图案相符吗Recorder Manage?如果是这样,pgrep除了您正在寻找的过程之外,还需要找到脚本本身,这将使其实际上成为首先列出哪个的垃圾拍摄。

kill -9另外,除非绝对必要,否则不要使用;只需使用killsendSIGTERM而不是SIGKILL,这将允许被杀死的进程自行清理,包括其自己的 PID 文件。

相关内容