Скрипт для поиска pid процесса по имени

программирование Linux unix bash

Вопрос с образовательными целями. Системным администраторам частенько приходится искать в памяти процесс. Каждый раз длинную команду писать сложно. Допустим вы захотели сделать скрипт для этого.
Пусть скрипт называется 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. Спасибо. Буду знать. Мне как-то команда эта не требовалась никогда :)
Ответы:
pgrep же.

Ссылки

[1]
man pgrep
(Web)


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.