У меня есть сценарий Python, который хорошо работает. Я хочу выполнить его как задание крона каждые 10 минут
Я сделал crontab -e
и вводимый строка
*/10 * * * * root python /path/to/script/script.py
Это, кажется, не работает.
Таким образом, я играл вокруг на командной строке и видящий, в которой точке она прекращает работать. Это работает в, он - каталог и все предшествующие ему, пока я не перемещаюсь из своего корневого каталога (т.е. если я нахожусь в /home/henry/
затем это работает, но если я нахожусь в, например, /var
затем это не делает), когда я получаю ошибку разрешения, пытающуюся записать в файл.
# save this for next time
with open(mycsvfile, "w") as outfile:
writer = csv.writer(outfile)
writer.writerows([s.strip().encode("utf-8") for s in row ]for row in list_of_rows)
outfile.close()
Я уже сделал chmod +x /home/user/Location/Of/Script
гарантировать сценарий имеет доступ (я думал). Что я пропускаю?Спасибо за помощь
Удалите строку root
(принятие python
существует в cron
, определил PATH
, иначе используйте полный путь, например, /usr/bin/python
):
*/10 * * * * python /path/to/script/script.py
*/10 * * * * /usr/bin/python /path/to/script/script.py
, Почему:
, Когда Вы используете crontab -e
для открытия таблицы крона, Вы открываете пользователя вызова crontab
, никакое поле имени пользователя не позволяется (в отличие от этого /etc/crontab
и /etc/cron.d/*
)
Как есть теперь, Вы выполняете команду root
(который, по-видимому, не доступен) с аргументами python
и /path/to/script/script.py
Также, если Вы сделали исполняемый файл сценария, необходимо добавить хижину, указывающую на интерпретатор сценария (например, /usr/bin/python
) вместо того, чтобы запустить скрипт как аргумент интерпретатору. Затем можно сделать:
*/10 * * * * /path/to/script/script.py