Я запланировал выполнение своего скрипта Python один раз в час, набрав crontab -e в оболочке, а затем добавив эту строку текста в файл cron:
0 * * * * /usr/bin/python /home/myUserName/automatedProject/test.py &>> /home/myUserName/automatedProject/log.txt
но независимо от того, какие варианты я пробую, он не выполняется.
В качестве тестового сценария я использую простой скрипт Джессики Юнг для добавления метки времени к файлу:
#! /usr/bin/env python
import time
filename = "record_time.txt"
current_time = time.strftime('%a %H:%M:%S')
with open(filename, 'a') as handle:
handle.write(str(current_time))
handle.write('\n')
Привет @JohnHanley, я переместил все в /opt/*, но виртуальная машина Google Compute Engine по-прежнему не выполняет мое задание cron, даже когда я установил для параметров времени / даты cron значение * * * * * (все 5 параметров как «любые»)
Что вам показывают лог-файлы?
cronделает запускает команды crontab под своим идентификатором пользователя. Обратите внимание, что этот скрипт Python записывает непосредственно в файл с именем record_time.txt в текущем каталоге, который должен быть вашим домашним каталогом. Проверьте этот файл, чтобы увидеть, выполняется ли команда. Скрипт ничего не печатает, поэтому редирект на log.txt ничего не соберет. (Всегда рекомендуется запускать команду вручную, прежде чем поместить ее в crontab, просто чтобы убедиться, что она ведет себя так, как вы ожидаете в обычных обстоятельствах.)
Привет @ottomeister, спасибо за это. я понял, что это локальный путь, и изменил его на абсолютный путь. команда запускается вручную, но не запускается, когда она помещена в crontab.
Моему cron не нравится перенаправление &>>, потому что это синтаксис bash, а cron использует старый добрый sh для запуска заданий crontab. Попробуйте изменить это с &>> /path/to/logfile на >> /path/to/logfile 2>&1, что является традиционным способом sh сделать то же самое. Если это не поможет, давайте начнем с нуля и проверим, действительно ли работает служба cron (выполните ps -efa | grep cron).






В Google Compute Engine с виртуальной машиной Ubuntu 16.04 задания cron на уровне пользователя, похоже, вообще не запускаются; однако задания корневого уровня работают должным образом.
Вместо редактирования crontab следующим образом:
crontab -e
используйте sudo crontab -e
Простой рабочий пример — * * * * * /usr/bin/python /home/myUserName/test.py для запуска test.py раз в минуту.
Cron не работает как
your username. Поэтому не пытайтесь получить доступ к файлам файлов на основе вашего домашнего каталога. Файл журнала cron зависит от дистрибутива Linux: ищите ошибки cron в/var/log/syslog. Это также может вам помочь: askubuntu.com/questions/418237/how-to-detect-error-in-cron-jobs