У меня есть файл со многими сервисами имена, некоторые из них запущены, некоторые из них не являются.Эффективно найти PID многих процессов, запущенных службами
foo.service bar.service baz.service
Я хотел бы найти эффективный способ получить ИДП запущенных процессов запущенных служб (для не работающих из них а 0, -1 или пустые результаты справедливы).
Желаемый выход пример:
foo.service:8484 bar.server: baz.service:9447
(bar.service не работает).
До сих пор мне удалось сделать следующее: (1)
cat t.txt | xargs -I {} systemctl status {} | grep 'Main PID' | awk '{print $3}'
С следующий вывод:
8484 9447
Но я не могу сказать, какой обслуживание каждого PID принадлежит.
(Я не обязан использовать xargs, grep или awk .. просто ищет наиболее эффективный способ).
До сих пор мне удалось сделать следующее: (2)
for f in `cat t.txt`; do
v=`systemctl status $f | grep 'Main PID:'`;
echo "$f:`echo $v | awk '{print \$3}'`";
done;
- это дает мне мой желаемый результат. Это достаточно эффективно?
Спасибо!
Итак, производительность, выполняющая 'grep -oP ...', более эффективна, чем 'systemctl status ...'? Недостатком, как вы сказали, является несколько PID. – bomba6