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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Вывод результата работы задания из Crontab в файл.  (Прочитано 4283 раз)

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

Оффлайн i81

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Добрый день, уважаемое сообщество!
Помогите найти решение проблемы: синхронизируют MS OneDrive из командной строки Ubuntu командой
/home/igor/onedrive/onedrive --synchronize >> /home/igor/log/oneDrive.log 2>&1 - всё замечательно работает, захотелось мне делать это автоматически {почитал про crontab -e} добавил задвание в crontab */2 * * * * /home/igor/onedrive/onedrive --synchronize >> /home/igor/log/oneDrive.log 2>&1 - снова всё работает.
Для разгрущки файла лога решил генерировать файл каждый запуск {единственный спопос, который придумал - создавать файл с именем = текущей дате} выполняю команду /home/igor/onedrive/onedrive --synchronize >> /home/igor/log/"$(date +"%F %T")".log 2>&1 - замечательно работает - создаётся файл 2019-11-10 14:52:57.log.
Вот вроде, кажется всё должно быть хорошо, но появилась проблема когда вставляю эту команду в crontab */2 * * * * /home/igor/onedrive/onedrive --synchronize >> /home/igor/log/"$(date +"%F %T")".log 2>&1 - не создаётся файл, судя по логу (grep CRON /var/log/syslog) при выполнении команды часть отрезается - в логе команда не полностью Nov 10 14:58:01 nas CRON[26700]: (igor) CMD (/home/igor/onedrive/onedrive --synchronize >> /home/igor/log/"$(date +")

 

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6723
  • 20% Cooler
    • Просмотр профиля
*/2 * * * * /bin/bash -c '/home/igor/onedrive/onedrive --synchronize >> /home/igor/log/$(date +%F\ %T).log 2>&1'
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн i81

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
К сожалению тот же результат :(
Nov 10 15:36:01 nas CRON[27644]: (igor) CMD (/bin/bash -c '/home/igor/onedrive/onedrive --synchronize >> /home/igor/log/$(date +)
Nov 10 15:36:01 nas CRON[27643]: (CRON) info (No MTA installed, discarding output)
Nov 10 15:38:01 nas CRON[27734]: (igor) CMD (/bin/bash -c '/home/igor/onedrive/onedrive --synchronize >> /home/igor/log/$(date +)
Nov 10 15:38:01 nas CRON[27733]: (CRON) info (No MTA installed, discarding output)


Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6896
    • Просмотр профиля
Крон любит полные пути к файлам. Может: /bin/date...
Цитировать
создаётся файл 2019-11-10 14:52:57.log.
А вообще, пробел в имени файла даст вам еще не раз просраться.
« Последнее редактирование: 10 Ноября 2019, 13:47:12 от andytux »

Оффлайн i81

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
пробел в имени файла
убрал давно, но не помогло, да и в логах команда обрывается раньше - до пробела.

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1748
    • Просмотр профиля
/home/igor/log/"$(date +")

очевидно,
/home/igor/log/$(date +"%F %T").log 2>&1
p.s. с проблемой пробела полностью согласен, уж лучше (date +%F-%T)

Оффлайн i81

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
очевидно
Также
Nov 10 15:58:01 nas CRON[28316]: (igor) CMD (/bin/bash -c '/home/igor/onedrive/onedrive --synchronize >> /home/igor/log/$(date +")
Nov 10 15:58:01 nas CRON[28315]: (CRON) info (No MTA installed, discarding output)

Пользователь добавил сообщение 10 Ноября 2019, 14:01:15:
Забил, создал файл исполняемы и его запускаю - так работает.
Т.е. вот так:
*/2 * * * * /home/igor/.config/Startup/to-OneDrive#!/bin/sh


exec >> /dev/null

/home/igor/onedrive/onedrive --synchronize >> "/home/igor/log/`date +"%F-%T"`.log" 2>&1

« Последнее редактирование: 10 Ноября 2019, 14:03:42 от i81 »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6723
  • 20% Cooler
    • Просмотр профиля
странно, что всегда обрывается на знаке "%".
Крона у меня уже давно нет, проверить не могу.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн i81

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Крона у меня уже давно нет, проверить не могу.
Я сильно "начинающий" пользователь - что нашёл в Google по автоматизации (первоначально приминительно к rclone) то и страдаю :)
Может подскажете, что лучше (проще\удобнее) cron - буду благодарен

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6896
    • Просмотр профиля
"А когда надоест, возвращайся назад."
Читай "Ответ 3". Весь.
/bin/bash - полный путь, зачем.
/home/igor/onedrive/onedrive  - полный путь, зачем.
/home/igor/log/  - полный путь, зачем.
date - почему?


Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6723
  • 20% Cooler
    • Просмотр профиля
Я пользуюсь таймерами systemd. Проще - я бы не сказал. Удобнее - однозначно.

Вот, нашёл, почему у вас не заработало. Дело-таки было в знаке % - его нужно было экранировать даже в кавычках.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн i81

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Читай "Ответ 3". Весь.
Простите не совсем понял :( Вы про что?
/home/igor/onedrive/onedrive  - полный путь, зачем.
Иначе cron ругается, что не знает что-такое onedrive (не понимаю почему, ведь при этом просто в командной строке работает и без полного пути).
/home/igor/log/  - полный путь, зачем.
По другому не знаю, как указать.
/bin/bash - полный путь, зачем.
По совету в Ответе №2
date - почему?
по совету Google @создание файлов в linux с текущей датой

Пользователь добавил сообщение 10 Ноября 2019, 14:30:21:
его нужно было экранировать
Простите, "экронировать" - это так: $(date +"/%F/ /%T/")".logЕсли я правильно "экранировал", то обрывается после $(date +"/)
« Последнее редактирование: 10 Ноября 2019, 14:32:28 от i81 »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6723
  • 20% Cooler
    • Просмотр профиля
i81, почти
$(date +"\%F\ \%T\")".log
слеш не тот, последний бэкслеш лишний - вы экранировали кавычку, а это опять ошибка будет.

Пользователь добавил сообщение 10 Ноября 2019, 14:36:48:
Так должно работать
*/2 * * * * /bin/bash -c '/home/igor/onedrive/onedrive --synchronize >> /home/igor/log/$(date +\%F\ \%T).log 2>&1'
« Последнее редактирование: 10 Ноября 2019, 14:48:47 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн i81

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Так должно работать
неа :(

Nov 10 16:54:01 nas CRON[29498]: (igor) CMD (/bin/bash -c '/home/igor/onedrive/onedrive --synchronize >> /home/igor/log/$(date +%F\ %T).log 2>&1')
Nov 10 16:54:01 nas CRON[29497]: (CRON) info (No MTA installed, discarding output)

А вот короткий вариант */2 * * * * /home/igor/onedrive/onedrive --synchronize >> /home/igor/log/$(date +\%F\ \%T).log 2>&1Работает.
Большое всем Вам спасибо за помощь!
Но, пожалуй, я останусь на придуманном мною варианте с исполняемым файлом.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
#!/bin/sh

exec >> "$HOME/logs/$( date "+%F-%T" ).log"

"$HOME/onedrive/onedrive" --synchronize

Не стоит перенаправлять ошибки, никогда не узнаете знаете, когда что-то сломается.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

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