从ps ax
我们得到以下输出
ps ax
PID TTY STAT TIME COMMAND
1 ? Rs 611:56 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
2 ? S 4:46 [kthreadd]
3 ? R 3499:33 [ksoftirqd/0]
5 ? S< 0:00 [kworker/0:0H]
7 ? S 16:24 [migration/0]
8 ? S 0:00 [rcu_bh]
9 ? S 0:00 [rcuob/0]
10 ? S 0:00 [rcuob/1]
11 ? S 0:00 [rcuob/2]
12 ? S 0:00 [rcuob/3]
13 ? S 0:00 [rcuob/4]
14 ? S 0:00 [rcuob/5]
15 ? S 0:00 [rcuob/6]
16 ? S 0:00 [rcuob/7]
17 ? S 0:00 [rcuob/8]
18 ? S 0:00 [rcuob/9]
19 ? S 0:00 [rcuob/10]
Run Code Online (Sandbox Code Playgroud)
所以我们想在第三个字段上捕获 R 例如
ps ax | awk '$3 ~ /R/ { print }'
139 ? R 1935:31 [rcuos/1]
Run Code Online (Sandbox Code Playgroud)
现在我们想要两者,在第三个字段上捕获 R 和 D
在这种情况下,为了在第三个字段上捕获 ether R 或 D 应该使用什么语法?
任何一个
ps -ax | awk '$3 ~ /R|D/ '
Run Code Online (Sandbox Code Playgroud)
或者
ps -ax | awk '$3 == "R" || $3 == "D" '
Run Code Online (Sandbox Code Playgroud)
请注意,隐式操作是 print
您可以使用o
选项ps
来更改或选择您需要的字段
ps -a -o stat,pid,args | awk '$1 ~ /[DR]/ { $1="" ; print } '
Run Code Online (Sandbox Code Playgroud)