Работа с процессами

left При написание скиптов я часто встречался с проблемами проверки работы программы, или на оборот ее завершения. Приходилось как-то выкручиваться, изврашаться. Код становился некрасивым, да ешё за частую и бажным. В общем чувствовалась нехватка опыта и знаний окуржения.

Постепенно бродя по просторам интернета, я все же поднабрался дельных команд. С коими и хочу поделиться.

Первая стандартная утилита это ps

ps -A | grep [Programm]

Но нужного нам Pid'а выводится еше много лишней информации. Это решается с помошью сложного AWK. И тогда будет нужный нам Pid.

ps -A | grep [Programm] | awk '{print($1)}'

Второй способ и более наглядный это pgrep

pgrep [Programm]

Ну вот вроде с поиском процессов разобрались. Теперь надо разобраться, а что собственно с ними делать. Начнем с завершения процессов.

kill `ps -A | grep [Programm]`
kill `pgrep [Programm]`
killall [Programm]
pkill [Programm]

Если две первые думаю понятно что делают, то для последних двух стоит упомянуть. Например Killall требует точного названия процесса. А pKill является эквивалентом первых двух.

Переходим к установке приоритетов Есть два способа. Первый - Стартовать программу с измененным приоритетом. Это хорошо для своих скрипов, скажем синхронизации.

nice -n [Priority] [Programm]

Где [Priority] это число от -20 - высший приоритет, до 19 - низший приоритет. Только не стоит увлекаться с наивысшим, есть вероятность подвешивания системы. Но этот метод не всегда приемлем. И приоритет надо менять уже на запущенных программах

renice [Priority] `pgrep [Programm]`

Еше есть сетевая программка netstat, ей неплохо отслеживать порты.

netstat -anp | grep [Programm]

Ну вот и вся наука :-)

Для более глубоких знаний изучаем маны.

Categories: Ubuntu Tags: ,