megasync cron task Что я делаю не так?

Всем привет!
На днях задался задачей - сделать синхронизацию некой директории с облаком MEGA.
Нашёл пакет megatools, в нем есть утилита megasync.

Суть в чём: создал скриптик с таким содержимым


#!/bin/sh
megasync --reload -u ******* -p ******* -r /Root/документы -l /home/homeuser/storage/документы

Сделал его исполняемым и закинул в /etc/cron.hourly
Через пару часов проверил - не работает. Запустил вручную - работает, синхронизирует.
Добавил в скрипт:


echo 1 > /root/WORKS!.txt

Подождал часик - файл появился. Значит скрипт запускается, но в облаке новые файлы не появляются.
Что я собсна делаю не так? Подскажите куда копать дальше. Что смотреть?

Заранее благодарю за советы :slight_smile:

Сделайте вывод работы скрипта в какой-нибудь файл. Так называемый лог-файл. И посмотрите что там будет написано. Возможно каких-нибудь прав не хватает. Или кодировка не совпадает.

Разобрался в чем дело. Сделал вывод в файл - создается пустой файл. Потом сделал вывод ошибок в другой файл и обнаружил что при запуске из крона ругается на передаваемые параметры: ERROR: Option parsing failed: Invalid byte sequence in conversion input. Если говорить в двух словах то не принимал он путь /home/homeuser/storage/документы
Проблему решил просто переименовав каталог в docs.
В принципе тему закрыть можно. Даже как-то немного стыдно что сам не догадался :frowning:

Кстати, почему так? Почему при запуске из консоли всё работает, а из под крона не понимает юникод в пути к файлу?

вероятно, не юникодовская локаль у пользователя, от имени которого запускаются задания cron. Попробуйте сравнить вывод команды locale из крона и из-под своего пользователя.

Я почему сразу догадался? У меня была подобная проблема. Только скрипты я писал для бэкапа. Тоже вручную запускались а из под крона ерунда получалась. Только там проблему переименованием не решить. А решается она просто: необходимо в начале скрипта прописать

export LANG=ru_RU.UTF-8

И всё начинает работать. У Вас может быть другая кодировка, но смысл тот же.

Так и оказалось. При запуске из крона LANG пуст


LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME=POSIX
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Благодарю за помощь :slight_smile:

Добавлю, что вывод из cron пересылается в ящик пользователя, содержимое которого можно посмотреть командой mail.