скрипт rc.local и python - PullRequest
       18

скрипт rc.local и python

2 голосов
/ 23 апреля 2011

Я пытаюсь запустить скрипт при загрузке на компьютере с Ubuntu Server 10.10.

Соответствующие части моего rc.local выглядят следующим образом:

/usr/local/bin/python3.2 "/root/Advantage/main.py" >> /startuplogfile
exit 0

Если я запускаю./rc.local из / etc все работает просто отлично, и в / startuplogfile записывается следующее:

usage: main.py [--loop][--dry]

для целей тестирования это именно то, что должно произойти.Когда я перезагружаю компьютер, он ничего не запишет в файл запуска.Рискну предположить, что скрипт не запускается при запуске rc.local при загрузке.

Я убедился, что rc.local запускается с помощью «touch / rclocaltest» в файле.Как и ожидалось, каталог создан.

Я протестировал rc.local с другим скриптом на python, который просто создает файл в / и печатает в / startuplogfile.Из терминала и после перезагрузки все работает просто отлично.

мои биты выполнения установлены так:

-rwxrwxrwx 1 root root    4598 2011-04-22 19:09 main.py

Я абсолютно не знаю, почему это происходит, и я попробовал все, что могчтобы исправить проблему.Любые идеи о том, что может быть причиной этого, я совершенно вне идей.

РЕДАКТИРОВАТЬ: я забыл упомянуть, что я только войти в систему на этой машине через SSH.Я не уверен, что это имеет значение, поскольку rc.local выполняется до входа в систему, насколько я знаю.

РЕДАКТИРОВАТЬ: я заметил, что этот пост немного хаотично, поэтому позвольте мне подвести итог:

  • Я проверил, что rc.local вызывается при загрузке
  • Если вручную вызывать rc.local, все работает как положено
  • Разрешения установлены правильно
  • ТестированиеСценарий python работает как и ожидалось при загрузке с rc.local
  • Мой настоящий скрипт на python будет работать, только если rc.local вызывается вручную, а не при загрузке

Ответы [ 2 ]

3 голосов
/ 23 апреля 2011

попробуйте перенаправить stderr и stdout в файл / startuplogfile следующим образом:

/usr/local/bin/python3.2 "/root/Advantage/main.py" >> /startuplogfile 2>&1

вы увидите, если произойдет ошибка

2 голосов
/ 23 апреля 2011

Вы определенно не хотите, чтобы этот сценарий был доступен для записи.Вы пытаетесь автоматически запустить его как root при загрузке, но, так как он доступен для записи всем, любой может изменить скрипт, чтобы сделать что-нибудь вообще - это огромная дыра в безопасности.

...