如何找到在另一个终端中启动的命令的进程 ID?

如何找到在另一个终端中启动的命令的进程 ID?

如果我sleep 30在一个 PuTTY 窗口中运行,如何从另一个 PuTTY 窗口中找到 sleep 命令的进程 ID?

答案1

命令pgrep

如果您的发行版有正则表达式命令已安装(例如从过程package),然后您可以使用该命令按模式查找进程ID。例如:

# Find the sleep commands belonging to the current user.
pgrep -u $LOGNAME sleep

此命令将查找属于当前用户的所有匹配项,无论该进程是在当前终端还是其他终端中启动,因此它将适用于您的 PuTTY 用例。

测试pgrep命令

您也可以非常简单地在单个 TTY 或 PTY 上测试这一点。考虑:

$ sleep 30 & pgrep -u $LOGNAME sleep
[1] 24021
24021

在这个例子中,睡觉被放入后台,Bash 报告后台作业的作业 ID 和 PID。然后正则表达式在进程列表中找到相同的PID,并将PID发送到标准输出。显然,数字应该匹配。

多场比赛

请注意,如果当前用户有多个睡觉命令运行,然后正则表达式将正确报告多个 PID。例如,以下命令返回后台作业的 PID%1%2

$ sleep 30 & sleep 30 & pgrep -u $LOGNAME sleep
[1] 24063
[2] 24064
24063
24064

答案2

ps -u "your_login" | grep "sleep" | awk '{print $1}'

相关内容