Вопрос с образовательными целями. Системным администраторам частенько приходится искать в памяти процесс. Каждый раз длинную команду писать сложно. Допустим вы захотели сделать скрипт для этого.
Пусть скрипт называется fip (find process). Вы его будете использовать так
fip process_name
Вместо process_name можете указывать не обязательно имя процесса. Можно часть командной строки etc.
Вариант 1:
#!/bin/sh
ps -e | grep $1 | egrep -v "grep" | awk '{ print $1 }'
Вариант 2:
#!/bin/sh
ps -e | awk '/skype/ {print $1; exit}'
Какой из 2-х вариантов будет работать правильнее и почему? (В разных системах параметры для ps могут быть разными ps -ax, может быть ps -aux. Это не принципиально).
2-й то вариант вообще для скрипта в таком виде не годится. Допилите если интересно.
Примечание:
pgrep - xорошо! практически the best, но не везде он есть. Во FreeBSD и Linux он есть, в QNX6, QNX4 его нет.
Примечание:
Вариант 1 на самом деле тоже не идеальный. Проблема в том, что он покажет 2 строчки. Имя процесса, который вы ищете и имя скрипта. Почему?
Потому что когда вы запускаете fip process_name появляются 3 процесса:
fip process_name
grep process_name
и собственно сам process_name
нам нужно из вывода убрать fip и grep, это и делается строчкой egrep -v ... только правильно должно быть так:
#!/bin/sh
ps -e | grep $1 | egrep -v "grep|fip" | awk '{ print $1 }'
Тогда отфильтруются из вывода grep process_name и fip process_name и останется собственно process_name,
что и нужно было найти.
Лучший ответ за pgrep. Спасибо. Буду знать. Мне как-то команда эта не требовалась никогда :)
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.