LINUX.ORG.RU

Kill program by lowest PID


0

1

Приветствую.

Ребята, помогите разобраться. Есть таск. Напишу оригинал:

Show the UNIX command to check if program is running or not and kill it immediately.
The program could be started by you or by another user, so only yours should be killed.
Plus, if it was started twice or more, so the copy with lowest PID should be killed only.

пока сделал так:

kill -9 programname | grep username; for pid in 'ps aux | grep programname | awk {'print $2'}'; do kill $pid; done

это навскидку, проверить не могу. Надо всё в одну строчку. Не знаю, как применить проверку PIDа.

у кого какие предложения на этот счет?

man pgrep

Т.е. pgrep'ом получаем список PID'ов для программы progname пользователя username, сортируем их sort'ом, выбираем первый PID (наименьший) и убиваем его.

Eddy_Em ☆☆☆☆☆
()

поддерживаю pgrep

плюс, LinuxNewbie, кури маны по всем утилитам, применённым в твоём посте
ты не умеешь ими пользоваться

anonymous
()

Убить init. У него по-любому наименьший PID :-)

KivApple ★★★★★
()
pgrep -u "$(whoami)" <programmname> | sort -r | head -n 1 | xargs kill

В мане я не нашёл точного указания, но, возможно, сортировать не нужно, ибо pgrep выводит отсортированный список.

tiandrey ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.