php脚本指定的进程名无法使用killall杀掉?

php 脚本代码如下:

<?php

cli_set_process_title('diary-queue-server');

while(true) {......}

启动后,在终端通过 ps -ef|grep queue-server 是可以查到这个进程的,但是通过

killall diary-queue-server

却无法杀掉这个进程,提示:

root@:/# ps -ef|grep diary-qu
root         865     773  0 15:46 pts/1    00:00:00 diary-queue-server
root         884     817  0 16:04 pts/2    00:00:00 grep --color=auto diary-qu
root@:/# killall diary-queue-server
diary-queue-server: 未找到进程
root@:/# 

求问大神何解?

阅读 1.7k
1 个回答
✓ 已被采纳

killall 命令是通过进程名或命令名来杀死进程的,它首先会查找进程名或命令名匹配的进程,并尝试向这些进程发送指定的信号。在您的情况下,进程名已经被修改为 "queue-server",但是 killall 命令尝试使用原始进程名 "diary-queue-server" 来匹配进程,因此无法成功杀死进程。

相反,您可以使用 pkill 命令来杀死进程,该命令可以通过进程名、命令名或其它匹配进程的属性来匹配进程。使用 pkill 命令,您可以使用 -f 选项来匹配整个命令行,而不仅仅是进程名或命令名,这样就可以杀死进程名已经被修改后的进程,例如:

pkill -f queue-server
这应该可以杀死您的脚本进程。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏