k001
k001
:...
April 2032
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

как "поймать" процесс

Имеется процесс, который хочется пострейсить. Проблема в том, что он суидный, диалоговый, и запускается не из-под рута, а strace надо запускать из-под рута.

Наверное, следовало запустить strace -u myuser, но я такого флага не знал, потому что тупой. Поэтому написал вот такую машинерию:
while ! strace -oout -p $(ps --no-header -o pid -C sudo); do :; done

Пояснения. sudo -- имя процесса, который требуется пострейсить. Идея в том, что мы в цикле пытаемся получить PID процесса с именем sudo и запустить strace. Но пока процесса нет, ps ничего не пишет, соответственно у опции strace -p аргумента нет, поэтому strace ругается на неправильное использование и выходит с ненулевым кодом возврата. Оный код проверяет while и повторяет цикл. Как только процесс с именем sudo обнаружится, strace запустится, отработает, и выйдет с нулевым кодом, и цикл завершится.

From:
( )Anonymous- this user has disabled anonymous posting.
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs IP addresses of anonymous posters.