работа cron не завершает процесс?

У меня есть рубиновая программа для преобразования видео в формат MP4 с использованием ffmpeg. И я использую crontab для запуска программы ruby ​​каждые 15 минут. crontab фактически запускает программу ruby, но преобразование файла не завершено. Процесс останавливается до завершения преобразования. Мой пример кода для testin приведен ниже.

def convert(y)
 system "ffmpeg -i #{SOURCE_FOLDER + LOCATION_SOURCE}/#{y} -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 #{DEST_FOLDER + LOCATION_DEST}/#{y}"
end
SOURCE_FOLDER = "/home/someone/work/videoapp/public/"
DEST_FOLDER = "/home/someone/work/videoapp/public/"
LOCATION_SOURCE = "source"
LOCATION_DEST = "dest"
files = Dir.new(SOURCE_FOLDER + LOCATION_SOURCE)
files.each do |x|
    convert(x)
end

Этот код отлично работает, если я запускаю его вручную в консоли.


person zealmurugan    schedule 25.03.2011    source источник
comment
Не могли бы вы опубликовать запись crontab? Кроме того, это полный сценарий?   -  person Wukerplank    schedule 25.03.2011


Ответы (1)


Мое первое предположение состоит в том, что он умирает в «точечных» каталогах. В Unix в каждом каталоге/папке есть два каталога: "." а также "..". Вам нужно либо специально пропустить их в своем сценарии:

next if File.directory?(x) # OR
next file x.match(/^\.+$/)

-- OR --

Ищите конкретно те типы файлов, которые вам нужны

Dir[SOURCE_FOLDER + LOCATION_SOURCE + "*.wav"].each do |file|
  convert(file)
end

Обновление: 20110401

Добавьте перенаправления Unix в запись crontab, чтобы увидеть результат.

* * * * * /your/program/location/file.rb 1> /some/output/file.txt 2>&1

person samullen    schedule 25.03.2011
comment
Нет, это .. и . не является причиной незавершенности. Я попытался использовать команду ffmpeg непосредственно в crontab, и у меня все еще та же проблема. Я имею в виду один видеофайл в папке и указание пути напрямую... - person zealmurugan; 29.03.2011
comment
У вас есть перенаправления, добавленные в ваш crontab? Они покажут вам любые сообщения об ошибках, которые могут быть сгенерированы в случае успеха/неудачи. Дополнение к моему ответу выше. - person samullen; 01.04.2011