Linux 版本:CentOS 7
[weizhong@bja /tmp]
$ll apis_response_time_analysis.pid
-rw-r--r-- 1 weizhong users 5 Jan 22 09:40 apis_response_time_analysis.pid
[weizhong@bja /tmp]
$cat apis_response_time_analysis.pid
20795
[weizhong@bja /tmp]
$sudo ps -ef | grep 20795
weizhon+ 24876 9196 0 11:41 pts/2 00:00:00 grep --color=auto 20795
我找不到 PID,然后我尝试通过我的帐户将其杀死。但是,它说不允许操作代替没有这样的过程
[weizhong@bja /tmp]
$kill -9 20795
-bash: kill: (20795) - Operation not permitted
[weizhong@bja /tmp]
$kill -9 20795123 <--- a pid not exists
-bash: kill: (20795123) - No such process
然后我尝试用它杀死它sudo
,我执行了
[weizhong@bja /tmp]
$sudo kill 20795 <-- no output
[weizhong@bja /tmp]
$sudo kill -9 20795
kill: sending signal to 20795 failed: No such process
然后我再次通过我的帐户执行
[weizhong@bja /tmp]
$kill 20795
-bash: kill: (20795) - No such process
我确定 pid 20795 是由我的账户生成的。目前我找不到 20795,但是当我杀死它时,返回Operation not permitted
而不是No such process
,我想知道为什么,以及为什么我的进程需要被 sudo 杀死
答案1
您不是您尝试终止的进程的所有者。这就是ps
输出未列出进程 20795(参见@kamil-maciorowski 回答)以及sudo
终止 20795 的要求的原因。
您可以使用ps aux
列出所有进程,包括不属于您的进程。您还可以使用-p
参数来显示最适合您需求的特定进程:
ps -up 20795
你会看到类似这样的内容:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
foo 20795 0.0 0.0 14728 1888 tty3 Ss+ 12:03 0:00 bar
我猜想该用户将是 root(提升权限)或可能是另一个特定的系统用户。然后您需要sudo
终止一个不属于您的进程。并且您成功终止了它。空的答案sudo kill 20795
表明它成功了。
答案2
请注意,您仅ps -ef | grep 20795
返回了grep
本身 – 匹配的是命令行,而不是PID
。没有PID
您指定的 进程。
我猜这个数字可能不正确。它可能与其他人的线程 ID 匹配,从而sudo kill
杀死了其他人的整个进程,这不是你想要的。