【发布时间】:2011-03-24 17:30:48
【问题描述】:
我制作了以下脚本,它搜索某些进程,显示每个进程的使用 pflags,并在找到带有“pause”一词的进程时停止:
!cat find_pause
#!/usr/bin/perl -W
use warnings;
use strict;
if (open(WCF,
"ps -ef | grep '/transfile' | cut -c10-15 | xargs -n1 pflags 2>&1 |"
)) {
while (<WCF>) {
next if ($_ =~ /cannot/);
print $_;
last if ($_ =~ /pause/);
}
close(WCF);
}
它有效,但我想知道是否有更好的方法来做到这一点。
更新
pause 是一个低级系统调用。比如read、nanosleep、waitid等
通过这个脚本,我想找到卡在pause 调用中的进程。我们正在尝试查找系统中的错误,我们认为它可能与此有关。
【问题讨论】:
-
您能否澄清一下
pflags输出中的“暂停”究竟是什么意思?procprpflags联机帮助页中没有它,所有实际标志都是大写的。 -
听起来“暂停”会处于“状态”?如果是这样,我用合理的逻辑更新了第一个示例
标签: perl unix shell process solaris