web-dev-qa-db-ja.com

bashでプロセスのユーザー名とプロセスIDを取得します

プロセスのuserIDを見つける必要があるbashスクリプトを書いています。例として、プロセスをbash自体にします。

私は試した ps aux | grep ba[s]hしかし、以下が返されました:

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

UserID 1000が表示されていますが、ユーザー名が必要です。

9
user2897690

これは、ユーザー名が8文字より長い場合に発生する可能性があります(OR) idに名前がありません。ただし、ps出力にユーザー名が必要な場合は、これを試してください。

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

これがgeditプロセスの例です

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

私がこれまでに見つけた最短の方法($ PID-検査されたプロセスのID):

ps -p $PID -o euid=
0
dess

Linuxを使用していて、数値のpidが必要な場合(またはそれで問題ない場合)は、/procエントリを解析できます。 mysqldプロセスの例を次に示します。

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