脚本 - 切割各种线条并对其进行排序

脚本 - 切割各种线条并对其进行排序

我想按 cpu 使用百分比对一个用户的进程进行排序。我试过这个

ps aux|tr -s " "|cut -f3 -d " "| sort -| grep "user" > file name

这有用吗?

答案1

ps允许您指定输出中的列以及排序顺序。根据您的要求,后处理甚至可能不需要额外的命令。

以下命令提供指定用户进程的列表,按 CPU 使用率百分比排序。 (该head命令仅用于限制输出)。

[root@testvm ~]# ps -o pid,uname,pcpu,command -u root --sort=-pcpu | head
  PID USER     %CPU COMMAND
    1 root      0.5 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
  664 root      0.4 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
 1226 root      0.2 sshd: root@pts/0
 1261 root      0.2 [kworker/0:0]
    9 root      0.1 [rcu_sched]
   20 root      0.1 [kworker/0:1]
  293 root      0.1 [kworker/0:1H]
  875 root      0.1 -bash
 1008 root      0.1 /usr/bin/python -Es /usr/sbin/tuned -l -P

-o选项在此指定输出格式,即以下列:进程 ID、用户名、CPU 使用率和命令。

-u选项限制ps特定用户的进程,在本例中为 root。

--sort选项定义排序顺序,即 CPU 使用率的百分比。前缀-符号定义按降序排序。

答案2

我会考虑将初始检索限制为特定用户并排序,然后可能进行剪切。

ps hux -u USER | sort -k3 -n

通过采用这种方法,进程已经仅限于特定用户。然后对整个检索过程执行排序。然后,如果需要的话,可以通过管道将其传送到trcut特定字段。

参数:
h:抑制标头
u:面向用户的格式
x:BSD 删除 tty 要求

-uUSER :应为其选择进程的特定用户。请注意,这可能是一个列表。

答案3

我会这样做:

ps aux | grep user | sort -rk3 > file_name

阅读sort -rk3关于man sort

关于你的一些事情:

  • 空格很重要,bash 不知道这file name是一个文件,它会将输出重定向到一个名为 的文件file,然后想知道如何处理name.如果必须在文件名中添加空格,则必须用引号引起来:... > "file name".

  • 许多 Linux 应用程序都很聪明,可以在不计算/折叠空格的情况下挑选列。如果我只想要百分比,我会这样做:

    ps aux | grep user | sort -rk3 | awk '{print $3}'

    cut可能也是这样聪明,只是我不太熟悉。

  • 您可能还会考虑top -bn1 | grep user哪个做类似的事情

相关内容