работа cron не завершает процесс? - PullRequest
1 голос
/ 25 марта 2011

У меня есть программа ruby ​​для конвертации видео в формат 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

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

1 Ответ

1 голос
/ 25 марта 2011

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

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

- ИЛИ -

Ищите специально для типов файлов, которые вы хотите

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

...