Описание тега corruption
Вы еще не закрыли на Perl
команды. Он должен быть на Perl 'фу'
и у вас есть на Perl 'фу
вместо этого. Просто измените ваш скрипт:
если ПС-НЧ | грэп ката |
Перл-Анэ '($х,$м,$с) = в Split /:/,$Ф +[13]; убить 9, $Ф[3] Если ($х > 1), то
Что будет заботиться о синтаксической ошибке. Однако, ваш скрипт все еще не работает, как вы ожидаете. Во-первых, при запуске ПС | грэп фу
, вы всегда будете получать по крайней мере один результат: грэп сам процесс:
$ ПС-НЧ | грэп ката
0 С terdon 6400 4889 0 80 0 - 3183 - 19:03 оч/0 00:00:00 грэп-цвет ц
Во-вторых, вы не говорите свою на Perl
скрипт, чтобы выйти с иной статус в зависимости от того, совпало. Поэтому, ваш если
условие всегда будет верно, так как в Perl-скрипт будет всегда работать, независимо от того, является ли он делал что-нибудь полезное.
Более того, вы не изобретать колесо. Если я правильно понял, вы хотите убить ката
процесса, если он работает уже более часа. По крайней мере, я думаю, что это то, что вы ожидаете, что ваш Perl-скрипт, чтобы сделать (это не так, но неважно). Если это так, то все, что вам нужно, это:
команда kill -9 $(ПС -о пид=,etimes= -Р $(pgrep ц) | у awk '$2>3600{печати $1}')
Что может понадобиться кое-что объяснить. На ПС
команды можно сказать только список конкретных Пидов с -п
вариант и печатать только отдельные поля вывода при -вывода
. Вот, я говорю это, чтобы напечатать ПИД и затраченное время в секундах. В pgrep
команда печатает любой Пидов mathing образцу, данному. Так, ПС-п $(pgrep ката)
будет работать ПС
на любой ПИД
, чей процесс играм ката
.
С -о
флаг говорит ПС
, чтобы только печатать PID и затраченное время на awk
будет проверять прошедшего времени (второе поле, $2
) больше, чем за час (3600 секунд) и, если да, то он будет печатать первых поле, ПИД. Так, в результате ПС ... | на awk
будет список під Ц И и
процессов, которые продолжаются более получаса. Этот список затем дать убить -9
команду.