使用 Grep 命令

使用 Grep 命令

我有两个关于 grep 命令使用的简单问题。

我想做的是:

  1. 显示以我身份运行的总行数(进程),除了我们用于创建列表的命令之外。
  2. 接下来,我想修改以我身份运行的总行列表,并且仅将 userID 和 PID 解析到新列表中。

对于第一个,我认为类似 ( ps -ef | grep myusername | grep -v "somecommand" | wc -l) 的内容就足够了,但我不确定在某个进程中输入什么来编辑用于生成列表的命令。

对于第二个问题,我不知道如何处理。

答案1

要列出用户的所有进程(除了我们用于创建列表的命令之外),您可以使用:

ps -U username -u username u | grep -v ps

它将所有启动的进程username作为真实用户 ID 和有效用户 ID 列出,并过滤进程ps以避免列出用于创建列表的命令。

另一种(用户和PID):

ps -U username -u username u | grep -v ps | awk  {'print $1, $2'}

awk用于仅显示结果的第 1 列和第 2 列。

答案2

对于第一个问题,您可以使用ps以下选项来列出使用您的用户名运行的所有进程。

$ ps -o pid,uid -u 1000|wc -l

您可以将该值替换1000为您的用户的 UID。我只添加了piduid来显示。您可以任意添加。

对于第二种情况与第一种情况相同

$  ps -o pid,uid -u 1000 > process.list

答案3

对于第一个问题,您可以使用 grep 的 -c 命令,它会给出匹配项的计数。

ps -ef | grep -v "grep" | grep -c "username"

这会列出所有进程,然后删除 grep 本身(不计算我们用于获取列表的进程),然后获取来自您的用户名的总计数。

相关内容