Назад | Перейти на главную страницу

Демон не может быть запущен из фабричного скрипта или при загрузке - только интерактивно

У меня есть сценарий демона в /etc/init.d, который выполняет фоновую регистрацию пакетов с помощью tcpdump команда. Скрипт запускается нормально, используя интерактивную оболочку, используя sudo /etc/init.d/packetlog start

Когда я выполняю ту же команду через свой сценарий фабрики (см. Ниже), команда успешно возвращается, но процесс не выполняется.

def startpacketlog():
    sudo(r'/etc/init.d/packetlog start')

Кроме того, служба не запускается автоматически при загрузке, как я ожидал.

Некоторые советы по устранению неполадок будут оценены

Сценарий Вот и модифицирован из этого оригинал

Обновить Кажется, это общая проблема с запуском любой службы на этом хосте с использованием фабрики. При запуске службы apache2 возникает такая же проблема. Однако я могу успешно остановить службу, использующую ткань.

Обновление 2 После перечитывания документация и некоторые эксперименты, следующее изменение устранило проблему. (Это отключает удаленный псевдотерминал, чем бы он ни был)

def startpacketlog():
    sudo(r'/etc/init.d/packetlog start',pty=False)

Когда вы вызываете сценарий инициализации напрямую, ваша текущая среда может «просочиться» в сценарий инициализации.

Протестируйте свой сценарий инициализации с помощью соответствующих системных инструментов:

# Redhat/CentOS, and Ubuntu with upstart
sudo service packetlog start

# traditional method on Debian/Ubuntu 
sudo invoke-rc.d packetlog start

Это обеспечит запуск скрипта в чистой среде, идентичной той, в которой он был бы запущен с помощью init.