Создал исполняемый файл и планировал использовать его в качестве службы.
Когда он запускается в Ubuntu 12.04 или 14.04 с помощью upstart, он отлично работает.
Однако в Ubuntu 15.04 (с systemd) эта команда не завершается:
systemctl start mySrv01
Может ли это быть, потому что я не закрыл stdin? выскочка, кажется, не возражает. Есть идеи? Благодаря.
Выпущенный для systemd, процесс демона mySrv01 должен будет разветвить дочерний процесс и более обеспеченный, закрыть stdin.
не должен был делать этого при использовании выскочки не знайте почему.
не должен был делать этого при использовании выскочки не знайте почему.
Вы не должны делать этого с systemd, также. У Вас есть несоответствие протокола готовности. Ваш сервисный файл единицы говорит, что Ваша программа использует Type=forking
протокол готовности. Но Ваша программа сама на самом деле не сделала.
forking
в протоколе готовности трудно разобраться, и легкий понять превратно. Почти никакая программа в дикой местности на самом деле не использует его. Просто сделайте свою сервисную единицу Type=simple
, если это - то, с чего она уже должна была запуститься.
, Кроме того, Вы не должны небрежно обращаться с попыткой к "dæ monize" путем выполнения вещей как закрытие открытых дескрипторов файлов. Ваша программа уже dæ monized.
blkdiscard
. Это достаточно хорошо для любого разумного варианта использования (кроме gainst allmighty государственные агентства). – AlexP 18 November 2016 в 17:55