Скрипт Python для выключения системы не работает в cron

Скрипт Python для выключения системы не работает в cron

Скрипт 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()вызове.

Связанный контент