在 bash 中获取进程的用户名和进程 ID



我正在编写一个bash脚本,我需要在其中找出进程的用户ID。举个例子,让这个过程本身就是bash。

我尝试了ps aux | grep ba[s]h但返回了以下内容:

1000      2745  0.0  0.1  28360  5440 pts/1    Ss   10:11   0:01 bash

我看到显示的用户 ID 1000,但我想要用户名。

如果用户名长度超过 8 个字符 (OR) ID 没有名称,则可能会发生这种情况。但是,如果您希望ps输出中的用户名,请尝试此操作,

ps -eo uname:20,pid,pcpu,pmem,sz,tty,stat,time,cmd | grep '[b]ash'

如果你在 Linux 上,如果你只需要一个数字 pid(或者可以接受它),你可以解析出/proc条目。下面是mysqld过程的示例:

grep -e '^Uid:' /proc/$(pidof mysqld)/status | cut -f 2

到目前为止我找到的最短方法($PID - 检查过程的 ID):

ps -p $PID -o euid=

下面是 gedit 进程的示例

grep -w Pid /proc/$(pidof gedit)/status | cut -f 2

相关内容

  • 没有找到相关文章

最新更新