
Скрипт python для выключения системы работает нормально из терминала, но не работает, если включен в crontab. Скрипт вызывается cron, но завершается с ошибкой 'команда выключения не найдена'или 'команда init 0 не найдена'. Я использую Fedora 17, и скрипт выполняется из crontab пользователя root.
#!/usr/bin/python
import os
os.system('shutdown')
os.system('init 0')
решение1
Ваш PATH не соответствует вашим ожиданиям. Согласно странице руководства crontab(5) (версия Debian), переменная окружения PATH устанавливается /usr/bin:/bin
для программ, запускаемых из cron. Вы можете изменить это, добавив PATH=
строку в начало вашего crontab, например:
PATH=/usr/sbin:/sbin:/usr/bin:/bin
Это изменит путь для всех записей crontab ниже строки PATH=, до следующей строки PATH=. Смотритекронтаб(5)Более подробную информацию см. на странице руководства.
решение2
Полагаю, первая строка вашего фрагмента должна быть примерно такой:
#!/usr/local/bin/python
или, если вы также убедитесь, что установили соответствующее значение PATH
в вашем crontab:
#!/bin/env python
Как выглядит ваша запись в crontab? Не забывайте, что это cron
устанавливает очень ограниченную среду, поэтому вам нужно будет указать полный путь к файлу скрипта, чтобы cron
его можно было найти.
Кроме того, python, вероятно, не сможет найти shutdown
при вызове из cron
, поскольку он унаследует cron
ограниченную среду . Попробуйте указать полный путь к shutdown
команде в вашем os.system()
вызове.