使用pid杀死正在运行的sh脚本

时间:2019-02-25 14:43:39

标签: bash sh

我制作了一个自动点击器,想知道如何使用它来杀死它 杀死[pid]

我的自动点击器的工作方式如下:

while true [1]; do
   xdotool click --repeat 10000 --delay 150 1
done

我用来尝试终止运行过程的代码:

ps -ef | grep AutoClicker | grep -v grep | xargs kill -9 

我在另一篇文章中找到了此代码,但是我没有运气。

3 个答案:

答案 0 :(得分:1)

pkill -f AutoClickerkill $(pgrep -f AutoClicker)

答案 1 :(得分:1)

如果您运行代码:

ps -ef | grep AutoClicker | grep -v grep | xargs kill -9 

您应该收到kill的错误消息。

kill需要一个进程ID列表,而不是用户名,时间和随机字符串。

您需要使用以下方法过滤除pid之外的所有内容:

ps -ef | grep AutoClicker | grep -v grep | awk '{print $2}' | xargs kill

答案 2 :(得分:0)

使用您自己的“ PID文件”代替搜索进程ID。我将用sleep代替xdotool进行演示。

echo $$ > /tmp/my.pid

while true [1]; do
   echo "clicking"
   sleep 5
done

# rm -f /tmp/my.pid

我可以在另一个终端窗口或后台运行此脚本。重要的是/tmp/my.pid包含此正在运行的脚本的进程ID。您可以通过以下方式停止它:

kill $(</tmp/my.pid)

这会中断while循环。需要弄清楚如何删除PID文件...