LINUX.ORG.RU

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

Пропусти вывод ps через grep и анализируй код возврата.

man grep
man ps

ЗЫ

Гугли классику - Керниган, Пайк "UNIX - универсальная среда программирования".

kosmonavt ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

monit. Запущенный от init.

Zulu ★★☆☆ ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

Не давай дурных советов. Это очень плохой способ.

Zulu ★★☆☆ ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

>Это очень плохой способ

А в чем грабли?

kosmonavt ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

Формат вывода ps системно-зависим, неизбежны гонки.

Если приложение ваше самодельное - научите его создавать и лочить pid-file. Если нет и система родная для этого сайта - man 1 flock (while true; do flock /var/run/pidfile myprog; done).

Если не помогает (приложение само "демонизируется") - man pidof, но это не решает второй проблемы. Впрочем, если у вас нет конкурентных 100 юзеров, это обычно неважно.

anonymous ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

ЧТо ты видишь по ps? proctitle(). А это не то что надо сверять: посмотри какой титл у, скажем, vsftpd?
Дальше. Сколько процессов ты порождаешь на ps|grep|grep -v? по крайней мере три. Плюс этот скрипт от крона (что требует рабочего крона). При LA > 50, например, на этот метод можно не надеяться вообще.

Zulu ★★☆☆ ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

inittab <-- то что тебе нужно

fura13 ★★★ ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

[ -n "`pgrep prilozhenie`" ] || prilozhenie

anonymous ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

> Если ... система родная для этого сайта - man 1 flock

Какая интересная штучка ... а давно ли она есть под Linux и есть ли она где-нибудь еще?

anonymous ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

> > Если ... система родная для этого сайта - man 1 flock

> Какая интересная штучка ... а давно ли она есть под Linux и есть ли она где-нибудь еще?

flock() есть дак давно, что успел устареть ;-)
fcntl() рулит!

Onanim ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

> flock() есть дак давно, что успел устареть ;-)

> fcntl() рулит!

Таки номер раздела мана, который я указал - нифига не 2 ;-)

anonymous ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

Что то вроде: 

while (true) {
   int pid = fork();
   if (pid == 0) {
          exec ....
   } else {
       wait(pid,....)
}

anonymous ()

Re: Программа проверяющая наличие запущенного конкретного приложения и вслучае отсутстви такого - запускала бы его

flock в шелле нестандартна. В BSD flock нет, есть shlock В шелле портабельно делать локи с помощью виртуозного использования mv

dilmah ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.