Как настроить почасовое задание Крона для выполнения 'grive' от '/etc/cron.hourly'?

Я добавил файл grive.sh кому: /etc/cron.daily но команда, кажется, не работает. Я также скопировал его в /etc/cron.hourly но не было никакого изменения в моем каталоге Google Drive только. Файл имеет только три строки:

#! /bin/sh
cd /media/james/Seagate Expansion Drive/GD
grive

Полномочия только для чтения, таким образом, я обновлю их.

Я использовал /etc/cron.hourly# chmod u+rwx grive.sh, но затем когда я проверяю полномочия на файл в Наутилусе, они неизменны — я не знаю почему.

Я могу работать grive вручную от терминала и файлов синхронизируют локально и онлайн.

root@james-Streacom:/etc/cron.hourly# grep CRON /var/log/syslog
Feb  1 09:17:02 james-Streacom CRON[8696]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 10:17:01 james-Streacom CRON[10958]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 11:17:01 james-Streacom CRON[12897]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 12:17:01 james-Streacom CRON[15307]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 13:17:01 james-Streacom CRON[17043]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 14:17:01 james-Streacom CRON[17354]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 15:17:01 james-Streacom CRON[17705]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
root@james-Streacom:/etc/cron.hourly# cd / && run-parts --report /etc/cron.hourly
root@james-Streacom:/# bash -c "cd / && run-parts --report /etc/cron.hourly"
root@james-Streacom:/#

Обратите внимание, что это может быть дубликатом задания крона, не работает, когда он вставляется в '/etc/cron.hourly /' но работа при определении в 'crontab-e' я просто прохожу те шаги.

Я добавил echo test >/tmp/foobar.tmp к последней строке сценария.

root@james-Streacom:/etc/cron.hourly# grep 'cron\.hourly' /etc/crontab
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

/temp/foobar.tmp не существует.

Я пытался на самом деле работать # cd /media/james/Seagate Expansion Drive/GD, и получил ошибку -su: cd: too many arguments. Я затем изменил строку CD в сценарии к cd /media/james/"Seagate Expansion Drive"/GD.

$ echo test >/tmp/foobar.tmp действительно создает файл с тестом в нем. # echo test2 >/tmp/foobar.tmp перезаписи тестируют с test2.

0
задан 31 January 2018 в 22:34

2 ответа

Я не совсем понимаю ваш вопрос, хотя по моему опыту некоторые команды не работают должным образом, когда вы добавляете их в скрипт и вставляете cronjob.

Я бы начал с добавления его в новый файл в /etc/cron.d/test следующим образом (я буду настраивать его каждые 5 минут, чтобы получать журналы для тестирования):

# m h  dom mon dow user command
*/5 * * * * root [DIR_TO_SCRIPT]/grive.sh >> /var/log/grivesh.log 2>&1

Пожалуйста, смотрите stdout в /var/log/grivesh.log, как только вы проанализируете его, вы можете настроить cronjob один раз в час, например, (например, в минуту 5 каждый час):

# m h  dom mon dow user command
5 * * * * root [DIR_TO_SCRIPT]/grive.sh >> /var/log/grivesh.log 2>&1

Обязательно иметь его в /etc/cron.hourly/? Разве вы не предпочитаете иметь его в /etc/cron.d/ или в crontab для вашего пользователя?

С уважением,

0
ответ дан 31 October 2019 в 02:30

Кроме неупомянутого пробела в Вашем исходном сценарии (который Вы, кажется, исправили) проблема вероятна с именованием Вашего сценария.

Согласно DEBIAN SPECIFIC раздел man cron:

   As  described  above, the files under these directories have to be pass
   some sanity checks including the following: be executable, be owned  by
   root,  not  be  writable  by  group or other and, if symlinks, point to
   files owned by root. Additionally, the file names must conform  to  the
   filename  requirements  of  run-parts: they must be entirely made up of
   letters, digits and can only  contain  the  special  signs  underscores
   ('_')  and  hyphens  ('-').  Any  file  that  does not conform to these
   requirements will not be executed by run-parts.  For example, any  file
   containing  dots  will  be  ignored.  This is done to prevent cron from
   running any of the files that are left by the Debian package management
   system when handling files in /etc/cron.d/ as configuration files (i.e.
   files ending in .dpkg-dist, .dpkg-orig, and .dpkg-new).

С тех пор grive.sh имеет точку на ее имя, run-parts проигнорирует его.

2
ответ дан 31 October 2019 в 02:30

Другие вопросы по тегам:

Похожие вопросы: