Запуск процессов

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
DeNn
мл. сержант
Сообщения: 92
Зарегистрирован: 2007-07-18 11:25:53

Запуск процессов

Непрочитанное сообщение DeNn » 2009-09-09 19:19:38

Подскажите как можно запустить процесс ffmpeg'a так что б второй и более уже не запускался пока этот не закончит свою работу?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Запуск процессов

Непрочитанное сообщение paradox » 2009-09-09 19:21:07

а вам для каких надобностей такая сложность?

Аватара пользователя
DeNn
мл. сержант
Сообщения: 92
Зарегистрирован: 2007-07-18 11:25:53

Re: Запуск процессов

Непрочитанное сообщение DeNn » 2009-09-09 19:39:46

Скажим так, есть ресурс у которого стримится видео и пытаемся это автоматизировать. Сделали скрипт который вызывается раз в пять минут берет из базы видео конвертирует его. Все работает классно, но когда начинает вызываться 2 или 3 процесса для разных файлов, он в конце концов умирает и оставляет после себя 0 файл.
Думаем, что это из-за того что он (ffmpeg) делает первый проход никуда не слаживая промежуточный файл. Вот пример команды:

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

/usr/local/bin/ffmpeg -y -i /var/test2/test2.mov -pass 1 -vcodec libx264 -vpre fastfirstpass -b 600k -bt 600k -s 640x360 -aspect 16:9 -threads 2 -f mp4 -an /dev/null && ffmpeg -i /var/test2/test2.mov -pass 2 -acodec libfaac -ab 96k -ac 2 -ar 44100 -vcodec libx264 -vpre hq -b 600k -bt 600k -s 640x360 -aspect 16:9 -threads 2  -f mp4 /var/test2.mp4

AMDmi3
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-09-10 2:22:56
Откуда: Москва
Контактная информация:

Re: Запуск процессов

Непрочитанное сообщение AMDmi3 » 2009-09-10 4:24:13

Используйте lockf.

Так второй и последующие процессы будут ждать, пока не закончится первый:

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

lockf _lockfile ffmpeg ...
Так второй и последующие процессы вообще не будут выполнены, если один уже выполняется

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

lockf -t0 _lockfile ffmpeg ...
Только вам правильней будет просто запускать каждый ffmpeg в своей директории, либо явно указывать им имя файла, куда надо складывать результаты pass0.