Linux中怎么通过PID号找到对应的进程名及所在目录

有时候通过top命令可以看到有个别进程占用的内存比较大,但是top无法直接查看到进程名以及进程所在的目录。所以我们可以通过以下方法来定位。

首先需要知道PID号,可以通过top命令获取。

然后我们可以用ps看以下大致信息(ps出来的信息个人觉得比较乱,不是很方便查找)

 
[root@iZbp13806tx36fgoq7bzk1Z 28990]# ps -aux |grep -v grep|grep 28990
200      28990  0.7 14.0 5112056 1128224 ?     Ssl  Sep26 231:10 /opt/java/bin/java -server -Dinstall4j.jvmDir=/opt/java -Dexe4j.moduleName=/opt/sonatype/nexus/bin/nexus -XX:+UnlockDiagnosticVMOptions -Dinstall4j.launcherId=245 -Dinstall4j.swt=false -Di4jv=0 -Di4jv=0 -Di4jv=0 -Di4jv=0 -Di4jv=0 -Xms1200m -Xmx1200m -XX:MaxDirectMemorySize=2g -Djava.util.prefs.userRoot=/nexus-data/javaprefs -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass -XX:+LogVMOutput -XX:LogFile=../sonatype-work/nexus3/log/jvm.log -XX:-OmitStackTraceInFastThrow -Djava.net.preferIPv4Stack=true -Dkaraf.home=. -Dkaraf.base=. -Dkaraf.etc=etc/karaf -Djava.util.logging.config.file=etc/karaf/java.util.logging.properties -Dkaraf.data=../sonatype-work/nexus3 -Djava.io.tmpdir=../sonatype-work/nexus3/tmp -Dkaraf.startLocalConsole=false -Di4j.vpt=true -classpath /opt/sonatype/nexus/.install4j/i4jruntime.jar:/opt/sonatype/nexus/lib/boot/nexus-main.jar:/opt/sonatype/nexus/lib/boot/org.apache.karaf.main-4.0.9.jar:/opt/sonatype/nexus/lib/boot/org.osgi.core-6.0.0.jar:/opt/sonatype/nexus/lib/boot/org.apache.karaf.diagnostic.boot-4.0.9.jar:/opt/sonatype/nexus/lib/boot/org.apache.karaf.jaas.boot-4.0.9.jar com.install4j.runtime.launcher.UnixLauncher run 9d17dc87   org.sonatype.nexus.karaf.NexusMain
[root@iZbp13806tx36fgoq7bzk1Z 28990]# 
 

通过上面的信息我们也可以找出这是一个java进程,在/opt/sonatype/nexus/bin/nexus目录下,当然可以有别的更简单直接的方法.

得知PID之后可以直接进入/proc/28990

Linux系统中,有多种根据PID删除对应进程的方法: - **使用Python脚本**:可以编写Python脚本,利用`os.kill`函数结合`signal.SIGKILL`信来杀死指定PID进程。示例代码如下: ```python import os import signal def kill_process(pid): a = os.kill(pid, signal.SIGKILL) print('已杀死pid为%s的进程, 返回值是:%s' % (pid, a)) # 示例调用 # pid = 1234 # kill_process(pid) ``` 此代码通过`os.kill`函数向指定PID进程发送`SIGKILL`信,强制终止该进程,同时会打印出已杀死的进程PID和返回值[^3]。 - **使用Python递归删除进程树**:如果要删除包含指定PID及其子进程进程树,可以使用Python的`psutil`库编写递归函数。示例代码如下: ```python import psutil def execuateCmd(cmd): # 这里需要实现命令执行逻辑,示例中简单返回占位信息 return 0, "", None def killProcessTree(pid): rootProc = psutil.Process(pid) print("childProcess:" + str(rootProc.pid) + " " + str(rootProc.gids())) procs = rootProc.children() for proc in procs: if len(proc.children()) == 0: cmd = "kill -9 " + str(proc.pid) status, output, p = execuateCmd(cmd) print("exe over " + cmd) else: killProcessTree(proc.pid) cmd = "kill -9 " + str(rootProc.pid) status, output, p = execuateCmd(cmd) print("exe over " + cmd) # 示例调用 # pid = 1234 # killProcessTree(pid) ``` 这段代码会递归地查找并杀死指定PID进程的所有子进程,最后杀死根进程[^1]。 - **使用命令行**:在命令行中可以直接使用`kill -9`命令来删除指定PID进程。例如,要删除PID为1234的进程,可在终端输入: ```bash kill -9 1234 ``` `kill -9`会向进程发送`SIGKILL`信,强制终止进程,这种方式简单直接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITSDSDFSDF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值