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

Moderator: Little Muk

The Which
Posts: 2
Joined: 08 Oct 2011, 22:21
ник с it-ru.de: верифицирован

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

Post by The Which »

Прикольно! )))
User avatar
Вий
Posts: 6070
Joined: 22 Sep 2011, 13:00
ник с it-ru.de: верифицирован
Location: Минск
Contact:

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

Post by Вий »

Пока вы тут ржОте...

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

"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
User avatar
Китаец
Posts: 11492
Joined: 22 Sep 2011, 09:35
ник с it-ru.de: верифицирован
Contact:

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

Post by Китаец »

Вий wrote:Пока вы тут ржОте...

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

Code: Select all

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

:oops:
Image
Ravinger

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

Post by Ravinger »

Китаец wrote: :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 wrote: Но это совсем не то что происходит, в чём и состоит шутка.
А он точно этого хотел? А то как раз получается, что вернется накосячкa, если хоть одна из программ вернет таковую. Прелесть в том, что в данном случае "false"=1 :)
User avatar
Вий
Posts: 6070
Joined: 22 Sep 2011, 13:00
ник с it-ru.de: верифицирован
Location: Минск
Contact:

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

Post by Вий »

Китаец wrote:
Вий wrote:Пока вы тут ржОте...

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

Code: Select all

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

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

Code: Select all

sudo dd if=/dev/zero of=/dev/null bs=16K & dd_pid=$! ; echo pid = ${dd_pid}
И вроде бы на тестовом компе всё нормально:

Code: Select all

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.
Вий есть колоссальное создание простонародного воображения...

"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
Ravinger

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

Post by Ravinger »

Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
User avatar
Китаец
Posts: 11492
Joined: 22 Sep 2011, 09:35
ник с it-ru.de: верифицирован
Contact:

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

Post by Китаец »

Ravinger wrote:Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
да, кстати! В дебиане есть!

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

:oops:
Image
User avatar
Вий
Posts: 6070
Joined: 22 Sep 2011, 13:00
ник с it-ru.de: верифицирован
Location: Минск
Contact:

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

Post by Вий »

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

"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
User avatar
Китаец
Posts: 11492
Joined: 22 Sep 2011, 09:35
ник с it-ru.de: верифицирован
Contact:

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

Post by Китаец »

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

Code: Select all

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

Code: Select all

pidof smbd
2140 2077
Image
atar
Posts: 102
Joined: 23 Sep 2011, 11:23

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

Post by atar »

Ravinger wrote:
Китаец wrote: :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 wrote:
atar wrote: Но это совсем не то что происходит, в чём и состоит шутка.
А он точно этого хотел?
Да, точно. Это мой собственный код, написанный под действием стресса и нехватки времени. Приложение, за которым он следит, капризное, но обычно работает, поэтому то что о его неработе иногда не сообщалось никто не заметил. Но вот дошли у меня до этого угла, и посмеялся я шутке, которую сам себе и подложил.
Ravinger wrote: А то как раз получается, что вернется накосячкa, если хоть одна из программ вернет таковую. Прелесть в том, что в данном случае "false"=1 :)
Не вернётся. Т.е. вернётся но не всегда. В этом и шутка. Я тоже не сразу увидел, но когда увидел - долго смеялся.
Post Reply