2

Я очень плохо знаком с systemd и пытаюсь написать файл .service, который запускает мой php-скрипт. Скрипт запускается и должен ждать ввода от кого-то еще, чтобы что-то сделать, и остается открытым до тех пор, пока я не нажму Ctrl-C.

изменить: разместил это здесь для ясности по моей проблеме

Эта служба завершается сразу после запуска, если для параметра RemainAfterExit не установлено значение true. Код выхода - 203. С RemainAfterExit он не завершается, но никогда не работает. Я в растерянности, боюсь.

Вот обобщенная версия того, что у меня есть:

[Unit]   
Description=foo
Wants=foo.service

[Service]   
WorkingDirectory=/home/foo/bar
RemainAfterExit=true
ExecStart=/home/foo/bar/foo.php
Restart=on-failure

[Install]
WantedBy=multi-user-.target

Что я хочу сделать:

Запустите скрипт php после другого необходимого сервиса (хочет / после?)

Оставьте скрипт php запущенным, либо в окне терминала, либо в фоновом режиме (простой / разветвленный?)

Не выходи. Перезапустите, если произойдет сбой (при сбое). Если я хочу, чтобы это всегда было запущено, всегда уместно?

Если возможно, я бы предпочел рассуждать, почему этот сервис написан плохо / неправильно и что мне нужно делать вместо фиксированного кода. Ссылки особенно приветствуются, когда я учусь.

1 ответ1

0

Решаемые. Были две проблемы.

Проблема 1: ExecStart =/home/foo/bar/foo.php

Это должно быть ExecStart =/user/bin/(phpversion) -f /home/foo/bar/foo.php Глупая ошибка!

Проблема 2: Мне пришлось остановить процесс вручную, systemctl stop * .service, systemctl daemon-reload, systemctl start * .service. Он запустился, и мой скрипт успешно получил / ответил другим клиентам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .