我正在研究一种检查AIX上进程内存使用情况的方法,并找到了这个页面,列出了这个命令:
# svmon -Pt15 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'
Run Code Online (Sandbox Code Playgroud)
它适用于我的目的,但我想了解Perl单线器部件的工作原理.
我知道它正在解析svmon命令的输出.我已经理解了$.==2输出第二行的部分.该部分$.=0重置行号,以便它可以对列出的每个进程执行相同的处理svmon.
但是我无法理解这部分内容||$&&&!$s++.有OR.$&是匹配的部分(什么?)和&&是AND运算符,但我不确定我是否正确分解它.
svmon返回(没有任何重定向)每个进程的类似行块.第一行类似于:
# svmon -Pt15 | head -n 20
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
12058652 java 579432 8261 397386 824106 Y Y N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 67560 309 1610 40138
m 64 KB 31992 497 24736 48998
Vsid Esid Type Description PSize Inuse …Run Code Online (Sandbox Code Playgroud)