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@:/#
求问大神何解?
killall 命令是通过进程名或命令名来杀死进程的,它首先会查找进程名或命令名匹配的进程,并尝试向这些进程发送指定的信号。在您的情况下,进程名已经被修改为 "queue-server",但是 killall 命令尝试使用原始进程名 "diary-queue-server" 来匹配进程,因此无法成功杀死进程。
相反,您可以使用 pkill 命令来杀死进程,该命令可以通过进程名、命令名或其它匹配进程的属性来匹配进程。使用 pkill 命令,您可以使用 -f 选项来匹配整个命令行,而不仅仅是进程名或命令名,这样就可以杀死进程名已经被修改后的进程,例如:
pkill -f queue-server
这应该可以杀死您的脚本进程。