加入收藏 | 设为首页 | 会员中心 | 我要投稿 大庆站长网 (https://www.0459zz.com/)- 科技、智能边缘云、事件网格、云计算、站长网!
当前位置: 首页 > 综合聚焦 > Linux > 正文

linux – 如何仅获取所有正在运行的进程ID?

发布时间:2020-07-03 10:33:14 所属栏目:Linux 来源:互联网
导读:我知道 ps ax 返回pids 1 ? Ss 0:01 /sbin/init2 ? S 0:00 [kthreadd]3 ? S 0:00 [migration/0] 我只需要清理那些字符串,但我无法用sed做,因为我无法编写正确的正则表达式.你可以帮帮我吗? 使用ps输出格式: ps -A -o pid 输出格式化命令是

我知道

ps ax

返回pids

1 ?        Ss     0:01 /sbin/init
2 ?        S<     0:00 [kthreadd]
3 ?        S<     0:00 [migration/0]

我只需要清理那些字符串,但我无法用sed做,因为我无法编写正确的正则表达式.你可以帮帮我吗?

解决方法

使用ps输出格式:

ps -A -o pid

输出格式化命令是最佳选择. o选项控制输出格式.我列出了下面的一些参数,其余的参见’man ps'(使用多个它将是-o pid,cmd,flags).

KEY   LONG         DESCRIPTION
   c     cmd          simple name of executable
   C     pcpu         cpu utilization
   f     flags        flags as in long format F field
   g     pgrp         process group ID
   G     tpgid        controlling tty process group ID
   j     cutime       cumulative user time
   J     cstime       cumulative system time
   k     utime        user time
   o     session      session ID
   p     pid          process ID

获取列时,awk或Cut会更好:
通常你不想要一个正则表达式来选择第一列,你可能想要管道它切割或awk切出第一列,如:

ps ax | awk '{print $1}'

正则表达式是一个选项,如果不是最好的:
如果你使用正则表达式,它可能是这样的:

ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'

$1仅打印括号中匹配的内容. ^锚定到行的开头.空格星号表示在数字前允许使用可选的空格字符. [0-9]表示一个或多个数字.但我不建议正则表达式执行此特定任务,看看为什么?

(编辑:大庆站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读