Доброе время суток, написал скрипт для архивирования файлов на DVD+RW болванки. Попробовал запустить с консоли все работает отлично, а при выполнении это скрипта по CRON диски не пишуться. Запись делаю командой:
growisofs -dvd-compat -Z /dev/cd0 -J -R /{неважно}/
При запуске скрипта через cron выдает
FATAL: /dev/scd0 already carries isofs!
и отваливаеться...
Вопрос как это побороть???
>Доброе время суток, написал скрипт для архивирования файлов на DVD+RW болванки. Попробовал
>запустить с консоли все работает отлично, а при выполнении это скрипта
>по CRON диски не пишуться. Запись делаю командой:
>growisofs -dvd-compat -Z /dev/cd0 -J -R /{неважно}/
>При запуске скрипта через cron выдает
>FATAL: /dev/scd0 already carries isofs!
>и отваливаеться...
>Вопрос как это побороть???Забыл.
ОС - FreeBSD 7.0
DRD+RV - <SONY DVD RW DW-D26A/JYS2> at ata2-master UDMA33
>[оверквотинг удален]
>>по CRON диски не пишуться. Запись делаю командой:
>>growisofs -dvd-compat -Z /dev/cd0 -J -R /{неважно}/
>>При запуске скрипта через cron выдает
>>FATAL: /dev/scd0 already carries isofs!
>>и отваливаеться...
>>Вопрос как это побороть???
>
>Забыл.
>ОС - FreeBSD 7.0
>DRD+RV - <SONY DVD RW DW-D26A/JYS2> at ata2-master UDMA33Справку читали?
М.б. -Z заменить на -M ?
Или диск чистить сперва
>
>Справку читали?
>М.б. -Z заменить на -M ?
>Или диск чистить сперваНасколько я понял из мануалов параметр -М дописывает в уже созданную сессию. А мне необходимо перезаписать диск.
Попробовал заменить ключ, все равно писать не хочет, в логах появляется циклическая ошибка
Jul 14 15:28:57 kernel: ata2: FAILURE - non aligned DMA transfer attempted
Jul 14 15:28:57 kernel: acd1: setting up DMA failed
Jul 14 15:28:57 kernel: ata2: FAILURE - non aligned DMA transfer attempted
Jul 14 15:28:57 kernel: acd1: setting up DMA failed
Доброе день!
Спецы, подскажите как можно все-таки решить проблему с записью дисков DVD+RW по крону. Может есть какие-нибудь альтернативы growisofs???
я давным-давно бодался с этим же. Диск очищается только из консоли. Из под крона не получалось. В результате убрал проверку в исходном коде, которая не давала это сделать и перекомпилировал прогу. Все заработало. Может сейчас и есть другие варианты. Не знаю. Может и тогда можно было сделать по-другому. Но я не нашел. Мне проще так оказалось сделать.
>я давным-давно бодался с этим же. Диск очищается только из консоли. Из
>под крона не получалось. В результате убрал проверку в исходном коде,
>которая не давала это сделать и перекомпилировал прогу.Если не затруднит, расскажи что конкретно нужно подправить в исходниках?
>Все заработало. Может
>сейчас и есть другие варианты. Не знаю. Может и тогда можно
>было сделать по-другому. Но я не нашел. Мне проще так оказалось
>сделать.
а какая у тебя ось и версия growisofs?
>а какая у тебя ось и версия growisofs?ОС
# uname -rsp
FreeBSD 7.0-RELEASE i386GROWISOFS
# growisofs -version
* growisofs by <appro@fy.chalmers.se>, version 7.1,MKISOFS
# mkisofs -version
mkisofs 2.01.01a39 (i386-unknown-freebsd7.0) Copyright (C) 1993-1997 Eric Youngdale (C) 1997-2007 JЖrg SchillingCDRTOOLS
# pkg_info | grep cdrtools
cdrtools-devel-2.01.01a39,1 CD/DVD and ISO-9660 image creation and extraction tools
в мане написано что можно из под крона писать UDF, но не ISO9660.If the media already carries isofs and growisofs is invoked with -Z
option non-interactively, e.g. through cron, it shall fail with "FATAL:
/dev/dvd already carries isofs!" Note that only ISO9660 is recognized,
you can perfectly zap e.g. an UDF filesystem non-interactively.Попробуй, а я пока поищу в коде проверку ту, которая не дает тереть из под крона.
Попозже выложу.
if (no_tty_check || (warn_for_isofs&2))
fprintf (stderr,"WARNING: %s already carries isofs!\n",in_device),
printf ("About to execute '");
else
fprintf (stderr,"FATAL: %s already carries isofs!\n",in_device),
exit(FATAL_START(EBUSY));
вот вроде эта проверка, можно попробывать убрать последнюю строчку exit(FATAL_START(EBUSY));
то есть должно получиться:if (no_tty_check || (warn_for_isofs&2))
fprintf (stderr,"WARNING: %s already carries isofs!\n",in_device),
printf ("About to execute '");
else
fprintf (stderr,"%s already carries isofs!\n",in_device);или вообще убрать else
Спасибо, сейчас попробую.
да, оказывается полезно читать исходники, там есть опция (недокументированная)-use-the-force-luke tty
она отключает проверку на интерактивность, у этой опции есть куча еще других параметров.
Ща попробую пишет ли из под крона с этой опцией.
-use-the-force-luke=ttyвроде так нужно
>-use-the-force-luke=tty
>
>вроде так нужноДействительно, все работает с этим параметром... Проверил запись по cron два раза для пущей верности.
Огромнейшее СПАСИБО!!!