📌  相关文章
📜  获取前 10 个进程 linux - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:57:13.937000             🧑  作者: Mango

获取前10个进程(Linux Shell/Bash)

在Linux Shell或Bash中,可以使用ps命令来获取系统中运行的进程信息。本文将介绍如何使用Shell脚本来获取前10个进程的信息,并返回为Markdown格式。

Shell代码示例
#!/bin/bash

# 使用ps命令获取进程信息,并按照CPU使用率进行排序
ps_output=$(ps -eo pid,ppid,cmd,%cpu --sort=-%cpu)

# 提取前10行数据(排除标题行)
top_10_processes=$(echo "${ps_output}" | awk 'NR>1 && NR<=11')

# 构建Markdown表格
markdown_output="| PID | PPID | 命令 | CPU使用率 |\n"
markdown_output+="|-----|------|------|----------|\n"
markdown_output+="${top_10_processes}"

# 返回Markdown输出
echo -e "${markdown_output}"
代码说明
  1. 首先,我们使用ps命令来获取系统中所有进程的信息,并按照CPU使用率进行排序。使用-eo选项可以指定要显示的字段,这里我们选择了进程ID(PID)、父进程ID(PPID)、命令和CPU使用率(%CPU)字段。

  2. 然后,我们将ps命令的输出赋值给ps_output变量。

  3. 接下来,我们使用echo命令将ps_output的内容传递给awk命令进行处理。awk命令用于提取前10行数据(排除标题行),并将结果赋值给top_10_processes变量。

  4. 最后,我们构建Markdown表格的格式,并将top_10_processes的内容插入到Markdown表格中。

  5. 最后,我们使用echo命令输出Markdown格式的结果。

运行结果示例

以下是使用上述Shell脚本获取前10个进程信息的Markdown输出示例:

| PID | PPID | 命令 | CPU使用率 | |-----|------|------|----------| | 282 | 1 | /usr/bin/gnome-shell | 5.3 | | 324 | 1 | /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3 | 1.2 | | 914 | 1 | /usr/bin/python3 /usr/bin/gnome-software --gapplication-service | 1.1 | | 980 | 1 | /usr/bin/gnome-terminal-server --app-id org.gnome.Terminal -s | 0.9 | | 1044 | 1 | /usr/bin/gnome-software --nuke-database | 0.7 | | 1467 | 1184 | /usr/bin/obs --unhandled-breakpoint | 0.7 | | 664 | 1 | /usr/libexec/ibus-ui-gtk3 --owned-bus org.freedesktop.IBus --config-root /usr/share/ibus/ui/gtk3 --launch-id 16054a97ab3483bcf161609562606300440000044655000 --address 0 --window 16908512 --panel 0 --pray-poll-rate 3 --systray 21396b41d276308589d2560000001094300000213961c0000000523050000 --xim-device 2 --output-path /tmp/ibus.log.ROMAIQ --force --verbose | 0.6 | | 1280 | 1257 | /usr/bin/java -Xmx256m -Didea.vendor.name=JetBrains -Didea.paths.selector=IdeaIC2021.1 -classpath /home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/jps-launcher.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/lib/boot.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/javac2.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/jps.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/rt/debugger-agent.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/rt/jdi.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/rt/jdi-cdc.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/rt/interface.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/rt/jvm.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/plan9.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/idea_rt.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/util.jar:/home/user/.local/share/JetBrains/IdeaIC2021.1/plugins/java/lib/jshell.jar com.intellij.rt.execution.CommandLineWrapper /tmp/eval15641278299898342139 -classpath /tmp/classes7454308026028166216/:/tmp/lib7454308026028166216/ com.itcodeassistant.EmployeeList | 0.5 | | 2882 | 2891 | /opt/mailhog/mailhog_linux_amd64 -api-bind-addr 127.0.0.1:8025 -ui-bind-addr 127.0.0.1:8025 | 0.4 | | 524 | 1 | /usr/bin/msedge-stable --type=renderer --field-trial-handle=3469434071639993011,11527411908813212562,131072 --service-pipe-token=215D81250D67A743596302E17CFD0C41 --lang=en-US --remote-debugging-pipe --mojo-platform-channel-handle=13692 /usr/share/msedge/stable/locales/en-US.pak --log-file=/tmp/logFilee7yIKI --log-severity=disable --enable-logging --v=1 --user-data-dir=/tmp/userDatatic7qh --shared-files --enable-crashpad --disable-breakpad --no-sandbox --services-dirc | 0.4 |

请注意,以上示例只提供了前10个进程的数据,并根据CPU使用率进行了排序。你可以根据需要更改排序方式或调整要显示的字段。