Страница 2 из 3

Re: И в sh-скрипте есть место шутке

Добавлено: 08.10.2011 22:24
The Which
Прикольно! )))

Re: И в sh-скрипте есть место шутке

Добавлено: 09.10.2011 22:13
Вий
Пока вы тут ржОте...

Как кошерным образом получить PID процесса, запущенного под sudo?

Re: И в sh-скрипте есть место шутке

Добавлено: 10.10.2011 08:26
Китаец
Вий писал(а):Пока вы тут ржОте...

Как кошерным образом получить PID процесса, запущенного под sudo?
Наверно тут всё сложнее чем кажется?

Код: Выделить всё

ps --user <пользователь, из под которого запущен sudo> | grep sudo | grep -v sudo  | awk '{print $1}'
В цепочку с grep'ами можно еще название приложения добавить.

:oops:

Re: И в sh-скрипте есть место шутке

Добавлено: 10.10.2011 08:44
Ravinger
Китаец писал(а): :shock: Как? Ravinger, раскройте мысль, пожалуйста!
Элементарно, Холмс. :) Достаточно построить таблицу, где Р1 - возвращенный код mycoolprog1, Р2 - возвращенный код mycoolprog2, а Р3 - код, возвращенный скриптом (естественно выводится 0 или (не 0)=1 :

Р1 что-то Р2 = Р3
-------------------
0 что-то 0 = 0
0 что-то 1 = 1
1 что-то 0 = 1
1 что-то 1 = 1

Дальше остается угадать операцию под названием "что-то". :)
atar писал(а): Но это совсем не то что происходит, в чём и состоит шутка.
А он точно этого хотел? А то как раз получается, что вернется накосячкa, если хоть одна из программ вернет таковую. Прелесть в том, что в данном случае "false"=1 :)

Re: И в sh-скрипте есть место шутке

Добавлено: 10.10.2011 09:06
Вий
Китаец писал(а):
Вий писал(а):Пока вы тут ржОте...

Как кошерным образом получить PID процесса, запущенного под sudo?
Наверно тут всё сложнее чем кажется?

Код: Выделить всё

ps --user <пользователь, из под которого запущен sudo> | grep sudo | grep -v sudo  | awk '{print $1}'
В цепочку с grep'ами можно еще название приложения добавить.

:oops:
Теоретически, должен работать следующий код:

Код: Выделить всё

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
Но на другом компе с той же Ubuntu (правда, версия другая) PID таки отличается от того, что показывает ps -A.

Re: И в sh-скрипте есть место шутке

Добавлено: 10.10.2011 09:50
Ravinger
Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.

Re: И в sh-скрипте есть место шутке

Добавлено: 10.10.2011 10:01
Китаец
Ravinger писал(а):Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
да, кстати! В дебиане есть!

А еще ведь можно заглянуть в *.pid файл приложения, тут:
/var/run/
или тут:
/home/user/.<имя приложения>

:oops:

Re: И в sh-скрипте есть место шутке

Добавлено: 10.10.2011 10:10
Вий
Ravinger писал(а):Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
Есть.
Пока буду использовать его.
А если там несколько процессов с одинаковым именем?

Re: И в sh-скрипте есть место шутке

Добавлено: 10.10.2011 10:13
Китаец
Вий писал(а):
Ravinger писал(а):Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
Есть.
Пока буду использовать его.
А если там несколько процессов с одинаковым именем?

Код: Выделить всё

 
 2077 ?        Ss     0:00 /usr/sbin/smbd -D
 2140 ?        S      0:00 /usr/sbin/smbd -D

Код: Выделить всё

pidof smbd
2140 2077

Re: И в sh-скрипте есть место шутке

Добавлено: 10.10.2011 11:13
atar
Ravinger писал(а):
Китаец писал(а): :shock: Как? 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 :)
Не вернётся. Т.е. вернётся но не всегда. В этом и шутка. Я тоже не сразу увидел, но когда увидел - долго смеялся.