Re: И в sh-скрипте есть место шутке
Добавлено: 08.10.2011 22:24
Прикольно! )))
свободный сайт для свободных людей
https://itru.s73.work/
Наверно тут всё сложнее чем кажется?Вий писал(а):Пока вы тут ржОте...
Как кошерным образом получить PID процесса, запущенного под sudo?
Код: Выделить всё
ps --user <пользователь, из под которого запущен sudo> | grep sudo | grep -v sudo | awk '{print $1}'Элементарно, Холмс.Китаец писал(а):Как? Ravinger, раскройте мысль, пожалуйста!
А он точно этого хотел? А то как раз получается, что вернется накосячкa, если хоть одна из программ вернет таковую. Прелесть в том, что в данном случае "false"=1atar писал(а): Но это совсем не то что происходит, в чём и состоит шутка.
Теоретически, должен работать следующий код:Китаец писал(а):Наверно тут всё сложнее чем кажется?Вий писал(а):Пока вы тут ржОте...
Как кошерным образом получить PID процесса, запущенного под sudo?В цепочку с grep'ами можно еще название приложения добавить.Код: Выделить всё
ps --user <пользователь, из под которого запущен sudo> | grep sudo | grep -v sudo | awk '{print $1}'
Код: Выделить всё
sudo dd if=/dev/zero of=/dev/null bs=16K & dd_pid=$! ; echo pid = ${dd_pid}Код: Выделить всё
test@test-pc$ sudo dd if=/dev/zero of=/dev/null bs=16K & dd_pid=$! ; echo pid = ${dd_pid}
[1] 13438
pid = 13438
test@test-pc$ ps -A | grep dd
13438 pts/8 00:00:02 dd
да, кстати! В дебиане есть!Ravinger писал(а):Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
Есть.Ravinger писал(а):Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
Вий писал(а):Есть.Ravinger писал(а):Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
Пока буду использовать его.
А если там несколько процессов с одинаковым именем?
Код: Выделить всё
2077 ? Ss 0:00 /usr/sbin/smbd -D
2140 ? S 0:00 /usr/sbin/smbd -DКод: Выделить всё
pidof smbd
2140 2077Таблица истинности неправильная.Ravinger писал(а):Элементарно, Холмс.Китаец писал(а):Как? Ravinger, раскройте мысль, пожалуйста!
Достаточно построить таблицу, где Р1 - возвращенный код mycoolprog1, Р2 - возвращенный код mycoolprog2, а Р3 - код, возвращенный скриптом (естественно выводится 0 или (не 0)=1 :
Р1 что-то Р2 = Р3
-------------------
0 что-то 0 = 0
0 что-то 1 = 1
1 что-то 0 = 1
1 что-то 1 = 1
Дальше остается угадать операцию под названием "что-то".![]()
Да, точно. Это мой собственный код, написанный под действием стресса и нехватки времени. Приложение, за которым он следит, капризное, но обычно работает, поэтому то что о его неработе иногда не сообщалось никто не заметил. Но вот дошли у меня до этого угла, и посмеялся я шутке, которую сам себе и подложил.Ravinger писал(а):А он точно этого хотел?atar писал(а): Но это совсем не то что происходит, в чём и состоит шутка.
Не вернётся. Т.е. вернётся но не всегда. В этом и шутка. Я тоже не сразу увидел, но когда увидел - долго смеялся.Ravinger писал(а): А то как раз получается, что вернется накосячкa, если хоть одна из программ вернет таковую. Прелесть в том, что в данном случае "false"=1