Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: unoconv не конвертирует из скрипта  (Прочитано 2440 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
unoconv не конвертирует из скрипта
« : 21 Декабря 2012, 15:24:24 »
Есть скрипт
Код: (./all2pdf) [Выделить]
#!/bin/bash
/usr/bin/unoconv -v -f pdf "/home/suer/share/Сканы/$1" >> /dev/null 2>&1

если скрипт запустить в ручную в консоле, то unoconv работает, pdf ка появляется,

если скрипт запускается по событию incron (файл создан в директории)

Код: (incrontab) [Выделить]
/home/router/share/Сканы IN_CREATE /home/user/all2pdf #$
то ничего не происходит, скрипт запускается, и дальше ничего..

upd.
ps aux
сообщает что все процессы /home/user/all2pdf, остались висеть, и не убиваются
также висят процессы unoconv..

куда копать?

Пользователь решил продолжить мысль 21 Декабря 2012, 16:45:38:
Вот сам скрипт

#!/bin/bash
str=`echo $1 | sed 's/\./\_/g'`
DIR=/home/user/share/Сканы
{
echo "File: $i"
case "$1" in
*.pdf)
convert "$DIR/$1" "$DIR/$str.jpg" >> /dev/null 2>&1
sleep 5
rm "$DIR/$1"
;;
*.doc| *.odt| *.ods| *.xls| *.xlsx| *.doc| *.docx| *.ppt)
/usr/bin/unoconv -v -f pdf "$DIR/$1" >> /dev/null 2>&1
sleep 5
rm "$DIR/$1"
;;
esac
}

При создании файла в директории $DIR, скрипт запускается и конвертирует документы в jpg
(для работы unoconv нужен установленный libre/open office)

почему unoconv не выполняется, если запущен по событию,
и выполняется если запускать скрипт из консоли?
« Последнее редактирование: 24 Декабря 2012, 09:13:02 от kostrukov »
у меня можно спросить=)

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: unoconv не срабатывает по событию incrond
« Ответ #1 : 24 Декабря 2012, 09:12:14 »
и все таки unoconv срабатывает, но не конвертирует почему то..

при возникновении события:
- скрипт запускается
- unoconv срабатывает, и запускает soffice.bin

ps aux | grep soffice
router     301  6.4 25.6 151936 31180 ?        Sl   09:08   0:02 soffice.bin -nologo -nodefault -accept=socket,host=localhost,port=2002;urp;StarOffice.Compon

но почему не конвертирует?
у меня можно спросить=)

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: unoconv не конвертирует из скрипта
« Ответ #2 : 24 Декабря 2012, 12:06:53 »
Делайте по аналогии:
Код: (bash) [Выделить]
# yum install incron libreoffice

$ EDITOR=nano incrontab -e
/home/arcfi/in IN_CREATE /home/arcfi/all2pdf

$ cat ~/all2pdf
#!/bin/bash

DIR_IN="$HOME/in"
DIR_OUT="$HOME/out"
LOG_FILE="$0.log"

exec >>"$LOG_FILE" 2>&1
mkdir --parents "$DIR_IN" "$DIR_OUT"
ls "$DIR_IN" | while read FILE
do
case "$FILE" in
*.pdf)
convert "$DIR_IN/$FILE" "$DIR_OUT/$FILE.jpg" \
&& sleep 5 \
&& rm "$DIR_IN/$FILE"
;;
*.doc| *.odt| *.ods| *.xls| *.xlsx| *.doc| *.docx| *.ppt)
libreoffice3.6 --headless --convert-to "pdf" "$DIR_IN/$FILE" --outdir "$DIR_OUT" \
&& sleep 5 \
&& rm "$DIR_IN/$FILE"
;;
esac
done

exit 0

# chmod +x ~/all2pdf

# systemctl start incrond.service

# systemctl status incrond.service
incrond.service - Inotify System Scheduler
  Loaded: loaded (/usr/lib/systemd/system/incrond.service; disabled)
  Active: active (running) since Mon, 24 Dec 2012 10:17:17 +0400; 3s ago
Process: 17295 ExecStart=/usr/sbin/incrond (code=exited, status=0/SUCCESS)
Main PID: 17296 (incrond)
  CGroup: name=systemd:/system/incrond.service
  └ 17296 /usr/sbin/incrond

Dec 24 10:17:17 arcfi-laptop incrond[17296]: loading system tables
Dec 24 10:17:17 arcfi-laptop incrond[17296]: loading user tables
Dec 24 10:17:17 arcfi-laptop incrond[17296]: loading table for user arcfi
Dec 24 10:17:17 arcfi-laptop incrond[17296]: ready to process filesystem events

$ cp test.docx ~/in

$ ps aux | grep [s]office
arcfi    26672  2.2  4.4 550052 78628 ?        Sl   12:05   0:00 /opt/libreoffice3.6/program/soffice.bin --headless --convert-to pdf /home/arcfi/in/test.docx --outdir /home/arcfi/out

$ cat ~/all2pdf.log
convert /home/arcfi/in/test.docx -> /home/arcfi/out/test.pdf using writer_pdf_Export

PS
И пожалуй, стоит какой-нибудь flock добавить, чтобы ограничить конвертирование одним инстансом.
« Последнее редактирование: 24 Декабря 2012, 16:04:06 от arcfi »

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: unoconv не конвертирует из скрипта
« Ответ #3 : 24 Декабря 2012, 15:38:40 »
Цитировать
libreoffice3.6 --headless --convert-to "pdf" "$DIR_IN/$FILE" --outdir "$DIR_OUT" \

да, libreoffice3.6 работает, этот вариант и оставил

но интересует вопрос, почему unoconv конвертировал если я вручную скрипт запускаю, и не конвертировал, если запускался скрипт по событию..

пользователь один, скрипт запускается в обоих случаях, не пойму в чем проблема то.
у меня можно спросить=)

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: unoconv не конвертирует из скрипта
« Ответ #4 : 24 Декабря 2012, 16:06:04 »
kostrukov, у меня он в лог писал такую ошибку:
http://stackoverflow.com/questions/9232414/how-to-run-unoconv-without-xserver

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: unoconv не конвертирует из скрипта
« Ответ #5 : 24 Декабря 2012, 16:52:25 »
kostrukov, у меня он в лог писал такую ошибку:
http://stackoverflow.com/questions/9232414/how-to-run-unoconv-without-xserver


а как глянуть этот лог, где он?

да и у меня вообще иксов нет, как так, он то выполняется, то нет
у меня можно спросить=)

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: unoconv не конвертирует из скрипта
« Ответ #6 : 24 Декабря 2012, 16:58:20 »
а как глянуть этот лог, где он?
См. выше, я там в скрипте stdout и stderr перенаправил в файл.
« Последнее редактирование: 24 Декабря 2012, 18:40:46 от arcfi »

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
Re: unoconv не конвертирует из скрипта
« Ответ #7 : 24 Декабря 2012, 17:09:54 »
у Вас ведь ">> /dev/null 2>&1", поэтому ничего и не понятно что творится на выходе

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: unoconv не конвертирует из скрипта
« Ответ #8 : 24 Декабря 2012, 19:41:45 »
у Вас ведь ">> /dev/null 2>&1", поэтому ничего и не понятно что творится на выходе

выхлоп команды показыват только результат конвертирования, если скрипт запущен вручную,
если по событию, то команда ничего не показывает.
Цитировать
cat ~/all2pdf.log
convert /home/arcfi/in/test.docx -> /home/arcfi/out/test.pdf using writer_pdf_Export
 


>> /dev/null 2>&1
это написал уже позже, думал может выхлоп и мешает выполнению, в кроне есть такое..

в файл перенаправлял, там пусто. unoconv запускается, несколько секунд весит, и завершается. и больше ничего.
у меня можно спросить=)

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
Re: unoconv не конвертирует из скрипта
« Ответ #9 : 24 Декабря 2012, 20:30:19 »
Код: (incrontab) [Выделить]
/home/router/share/Сканы IN_CREATE /home/user/all2pdf #$
я может путаю, но вместо #$ надо $#

 

Страница сгенерирована за 0.076 секунд. Запросов: 26.