Я сделал следующий скрипт, который ищет определенные процессы, отображает, использует 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
. Мы пытаемся найти ошибку в нашей системе и думаем, что это может быть связано с этим.