gpt4 book ai didi

linux - 如何将 "ps"的所有输出通过管道传输到 shell 脚本中以进行进一步处理?

转载 作者:太空狗 更新时间:2023-10-29 11:24:14 25 4
gpt4 key购买 nike

当我运行这个命令时:

ps aux|awk {'print $1,$2,$3,$11'}

我得到了用户、PID、CPU% 和实际命令的列表。我想将所有这些 list 通过管道传输到 shell 脚本中以计算 CPU%,如果大于,比如说 5,则通过 PID 终止进程。

我尝试将其通过管道传输到一个简单的 shell 脚本,即

ps aux|awk {'print $1,$2,$3,$11'} | ./myscript

我的脚本内容在哪里:

#!/bin/bash
# testing using positional parameters
echo "$1 $2 $3 $4"

但是我得到一个空白输出。知道怎么做吗?

非常感谢!

最佳答案

如果您使用 awk,则不需要额外的 bash 脚本。此外,减少 ps 命令的输出是个好主意,这样您就不必处理额外的信息:

ps acxho user,pid,%cpu,cmd | awk '$3 > 5 {system("echo kill " $2)}'

说明

  • 我使用的额外 ps 标志:
    • c: 只有命令,没有额外的参数
    • h: 没有标题,适合脚本
    • o:输出格式。本例只输出用户、PID、%CPU、命令
  • awk 命令将第三列的 %CPU 与阈值 (5) 进行比较。如果超过阈值,则发出系统命令终止该进程。
  • 注意命令中的echo。一旦您确定脚本以您喜欢的方式工作,然后从命令中删除单词 echo 以真正执行它。

关于linux - 如何将 "ps"的所有输出通过管道传输到 shell 脚本中以进行进一步处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14460818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com