我正在编写一个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