为什么 -u 标志对 ps 不起作用?

为什么 -u 标志对 ps 不起作用?

我正在执行以下ps命令:

root@dor-desktop:/home/dor# ps u -t "$(tty)" -u mysql
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
dor       2070  0.0  0.1  22436  5240 pts/0    Ss   20:29   0:00 bash
root      2411  0.0  0.0  56028  1916 pts/0    S    20:45   0:00 su
root      2419  0.0  0.0  19532  2276 pts/0    S    20:45   0:00 bash
root      2488  0.0  0.0   4108   668 pts/0    S    20:51   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --skip-networking --skip-grant-tables --user=mysql --b
mysql     2607  0.0  0.4 146552 19024 pts/0    Sl   20:51   0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --use
root      2672  0.0  0.0  15268  1224 pts/0    R+   20:59   0:00 ps u -t /dev/pts/0 -u mysql

您可以看到该命令询问与当前终端关联的进程以及用户是谁mysql。但我得到了两种类型的过程!

我怎样才能分开?我只想要由用户发起的进程mysql

我找到了以下命令:ps -C mysqld,它满足了我的需要,但我更喜欢了解第一个命令出了什么问题。

答案1

但我得到了两种类型的过程!

考虑到手册页上写着:

除下述情况外,流程选择选项是附加的。放弃默认选择,然后将所选进程添加到要显示的进程集中。因此,如果流程满足任何给定的选择标准,就会显示该流程。

答案2

作为豪克·拉金 解释了,这很正常。解决这个问题的一个简单方法是解析输出ps

ps u -t "$(tty)" | gawk '$1 == "mysql" || $1 == "USER"' 

相关内容