可以,然后呢
我需要编写一个脚本,它将 pid 作为参数,并提供命令名称、与进程相关的各种网络连接,并且还将提供最多三个祖先进程和最多三代后代进程的信息。
我不想要这个问题的答案,但我确实想要一些指导,告诉我如何最好地让自己走上正确的道路来完成这个任务。
这就是我开始做的:
#!/bin/bash
#get pid from user
PID=$1
#echo pid and find a way to describe process to user
echo $PID #whatever it is = #whatever the command name is
#network portion
sudo netstat -p grep $PID
#this return information related to the process itself
ps -ef f|egrep "(UID|$PID)"
最后一行代码至少会返回一些对我来说有价值的东西:我可以获得一些与流程相关的信息,树状层次结构等等。
我不具备很多技术知识,所以我知道这段代码对于这项任务来说是否看起来很糟糕/无法使用。如果我需要从头开始并提出不同的想法,我会的。任何帮助或指导将不胜感激。
答案1
您可以通过以下方式获取父进程的PID:
PID=1234
ps -o ppid --no-headers -p "$PID"
或与
awk '/^PPid:/ { print $2 }' /proc/$PID/status
你可以将它放入一个变量中
PPID="$(awk '/^PPid:/ { print $2 }' /proc/$PID/status)"