И в sh-скрипте есть место шутке
Moderator: Little Muk
Re: И в sh-скрипте есть место шутке
Прикольно! )))
Re: И в sh-скрипте есть место шутке
Пока вы тут ржОте...
Как кошерным образом получить PID процесса, запущенного под sudo?
Как кошерным образом получить PID процесса, запущенного под sudo?
Вий есть колоссальное создание простонародного воображения...
"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
Re: И в sh-скрипте есть место шутке
Наверно тут всё сложнее чем кажется?Вий wrote:Пока вы тут ржОте...
Как кошерным образом получить PID процесса, запущенного под sudo?
Code: Select all
ps --user <пользователь, из под которого запущен sudo> | grep sudo | grep -v sudo | awk '{print $1}'
Re: И в sh-скрипте есть место шутке
Элементарно, Холмс. Достаточно построить таблицу, где Р1 - возвращенный код mycoolprog1, Р2 - возвращенный код mycoolprog2, а Р3 - код, возвращенный скриптом (естественно выводится 0 или (не 0)=1 :Китаец wrote: Как? Ravinger, раскройте мысль, пожалуйста!
Р1 что-то Р2 = Р3
-------------------
0 что-то 0 = 0
0 что-то 1 = 1
1 что-то 0 = 1
1 что-то 1 = 1
Дальше остается угадать операцию под названием "что-то".
А он точно этого хотел? А то как раз получается, что вернется накосячкa, если хоть одна из программ вернет таковую. Прелесть в том, что в данном случае "false"=1atar wrote: Но это совсем не то что происходит, в чём и состоит шутка.
Re: И в sh-скрипте есть место шутке
Теоретически, должен работать следующий код:Китаец wrote:Наверно тут всё сложнее чем кажется?Вий wrote:Пока вы тут ржОте...
Как кошерным образом получить PID процесса, запущенного под sudo?В цепочку с grep'ами можно еще название приложения добавить.Code: Select all
ps --user <пользователь, из под которого запущен sudo> | grep sudo | grep -v sudo | awk '{print $1}'
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
Вий есть колоссальное создание простонародного воображения...
"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
Re: И в sh-скрипте есть место шутке
Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
Re: И в sh-скрипте есть место шутке
да, кстати! В дебиане есть!Ravinger wrote:Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
А еще ведь можно заглянуть в *.pid файл приложения, тут:
/var/run/
или тут:
/home/user/.<имя приложения>
Re: И в sh-скрипте есть место шутке
Есть.Ravinger wrote:Вий, а в "pidof" системе нет случайно? Убунту не знаю, а в СуСЕ вроде он по умолчанию ставится например.
Пока буду использовать его.
А если там несколько процессов с одинаковым именем?
Вий есть колоссальное создание простонародного воображения...
"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
Re: И в sh-скрипте есть место шутке
Вий 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
Re: И в sh-скрипте есть место шутке
Таблица истинности неправильная.Ravinger wrote:Элементарно, Холмс. Достаточно построить таблицу, где Р1 - возвращенный код mycoolprog1, Р2 - возвращенный код mycoolprog2, а Р3 - код, возвращенный скриптом (естественно выводится 0 или (не 0)=1 :Китаец wrote: Как? Ravinger, раскройте мысль, пожалуйста!
Р1 что-то Р2 = Р3
-------------------
0 что-то 0 = 0
0 что-то 1 = 1
1 что-то 0 = 1
1 что-то 1 = 1
Дальше остается угадать операцию под названием "что-то".
Да, точно. Это мой собственный код, написанный под действием стресса и нехватки времени. Приложение, за которым он следит, капризное, но обычно работает, поэтому то что о его неработе иногда не сообщалось никто не заметил. Но вот дошли у меня до этого угла, и посмеялся я шутке, которую сам себе и подложил.Ravinger wrote:А он точно этого хотел?atar wrote: Но это совсем не то что происходит, в чём и состоит шутка.
Не вернётся. Т.е. вернётся но не всегда. В этом и шутка. Я тоже не сразу увидел, но когда увидел - долго смеялся.Ravinger wrote: А то как раз получается, что вернется накосячкa, если хоть одна из программ вернет таковую. Прелесть в том, что в данном случае "false"=1