Я добавил файл grive.sh в /etc/cron.daily, но команда не работает. Я также скопировал его в /etc/cron.hourly, но никаких изменений в моем каталоге Google Диска не было. Файл имеет только три строки:
#! /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:/#
Я не могу понять, Обратите внимание, что это может быть дубликат задания cron не работает, если вы помещаете в `/ 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.
Я действительно не задаю ваш вопрос, хотя по моему опыту некоторые команды работают не так, как ожидалось, когда вы добавляете их в скрипт и помещаете в 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 для вашего пользователя?
С уважением,
Помимо некорректного пробела в исходном скрипте (который вы, похоже, исправили), проблема, вероятно, связана с наименованием вашего скрипта.
Согласно разделу 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 будет игнорировать его.
Я действительно не задаю ваш вопрос, хотя по моему опыту некоторые команды работают не так, как ожидалось, когда вы добавляете их в скрипт и помещаете в 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 для вашего пользователя?
С уважением,
Помимо некорректного пробела в исходном скрипте (который вы, похоже, исправили), проблема, вероятно, связана с наименованием вашего скрипта.
Согласно разделу 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 будет игнорировать его.