Хорошо, таким образом, я имел беглый взгляд на ответы, отправленные по этому вопросу, и повторно сформулировал мое задание крона. Так, позвольте мне сломать это столь ясное, как я могу:
ПК/ОС | Информация о Shell
Я в настоящее время выполняю Lubuntu 14.04LTS x64 на моем Ноутбуке Toshiba. В основном у меня есть (в настоящее время) сценарий оболочки, который копирует каталог A, B, C, D, E, F и G к моему Каталогу Dropbox и локальной копии. Во всех отношениях, давайте назовем это example.sh
который хранится в папке /home/user/documents
. Я читал на Cron Jobs, посмотрел несколько видео и т.д. и не имел никакой удачи с этим.
Для разъяснения я протестировал сценарий, и он работает. Моя первая идея была следующей:
Откройте терминал и работайте crontab -e
и вручную добавьте следующее:
30 * * * * michael home/Documents/example.sh
и даже
@hourly michael home/Documents/example.sh
Я попробовал как корень, и удалив подсистему пользователей. Это не помогло. Недавно, я посмотрел видео того, куда Вы идете корень и перешли к etc/cron.hourly/
и создайте файл и измените владение. Я использовал все вышеупомянутое (следовал за видео точно), и я все еще не смог завершить этот процесс. Запутанный, я пытался восстановить процесс 1, и вместо home/michael/Documents
Я указал на вышеупомянутое местоположение и не имел никакой удачи.
Расстраивающая точка здесь, я пропускаю что-то невероятно простое (как, мм, этот вопрос, который я сделал!!).
Некоторые точки, которые, кажется, смущают Вас:
#
символ комментария. Добавление его к началу строки делает cron
проигнорируйте ту строку.Не смешивайте с /etc/cron/hourly
и т.д. Нет никакой потребности к, и у них есть другой формат (см. следующий вопрос).
Формат crontab пользователя
minute hour day-of-month month day-of-week command
Формат файлов под /etc/cron
отличается и также включает имя пользователя:
minute hour day-of-month month day-of-week user command
Необходимо дать полный путь. Пути в Linux всегда запускаются с a /
. Это представляет корневой каталог, эквивалент Windows C:/
.
Необходимо удостовериться, что сценарий является исполняемым файлом. Выполненный chmod +x /home/Documents/example.sh
сделать его так.
Так, для запущения скрипта, который расположен в /home/Documents/example.sh
(отметьте продвижение /
) каждые 30 минут Вы работали бы crontab -e
как самостоятельно, не корень, и добавляют эту строку к нему:
30 * * * * /home/Documents/example.sh
Сохраните и закройте crontab, и Вы установлены.
Примечание: В целом полезный прием поиска и устранения неисправностей для такого рода вещи должен перенаправить вывод ошибок Вашего сценария в файл:
30 * * * * /home/Documents/example.sh 2> /tmp/mycrontab.log
Это создаст файл /tmp/mycrontab.log
где любые ошибки, произведенные при попытке запустить скрипт, будут распечатаны.
Создание Вашего crontab файла с crontab -e
является, вероятно, лучшим методом для Вас, но запуск Ваших crontab строк с # символом говорит системе игнорировать те строки. Удалите # и ведущий пробел перед 30 в Вашей crontab строке. Должен просто быть похожим на это:
30 * * * * /home/michael/Documents/example.sh
Кроме того, удостоверьтесь, что крон работает (ps -ef | grep cron
) и что Вашему пользователю разрешают выполнить задания крона. Если Вы не знаете, как сделать это, сослаться на раздел "Enable User Level Cron" в следующей ссылке для специфических особенностей того, как включить крон на уровне пользователя: Справка Сообщества Ubuntu - CronHowTo
Для наблюдения больше о том, что делает крон и почему, выполняет эту команду:
sudo grep -i cron /var/log/syslog | less