Когда я вручную запускаю свой собственный сервис, он работает на переднем плане, это правильно?

Я создал свой собственный сервис:

  1. , копируя мой двоичный файл в /usr/bin/mcp
  2. Создайте демон, копирующий скелет: /etc/init.d/skeleton
  3. Измените верхнюю часть скрипта Bash:

    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    DESC="Runs my Service"
    NAME=mcp
    DAEMON=/usr/bin/$NAME
    DAEMON_ARGS="-d f -c /etc/mcp"
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    

    Кроме этого, скелет точно такой же.

  4. Затем я создаю демон:

    sudo update-rc.d -f mcp remove
    sudo update-rc.d mcp defaults 97 03
    

Когда я запускаю программу вручную: mcp -d f -c /etc/mcp, она работает, но никогда не возвращается, так как ее служба, которая предназначен, чтобы всегда бежать. Это нормально.

Но теперь, когда я запускаю его как сервис: sudo service mcp start я вижу то же самое поведение. То есть как только я ввожу команду запуска службы, программа запускается, но теперь мой терминал застрял в ожидании программы.

Я думал, что если вы запускаете что-то в качестве службы, то это должно работать в фоновом режиме?

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

3
задан 10 August 2015 в 18:45

1 ответ

Не используйте init.d сервис. Запишите Новомодное задание вместо этого. Вот пример . Выскочка будет заботиться о хранении программы в фоновом режиме, входе, и т.д.

, Ваш сервис был бы в /etc/init/mcp.conf, содержа, например:

start on runlevel [2345]
stop  on runlevel [016]

exec /usr/bin/mcp -d f -c /etc/mcp

Затем можно сделать:

sudo service mcp start
sudo service mcp stop

И так далее.

2
ответ дан 11 August 2015 в 04:45

Другие вопросы по тегам:

Похожие вопросы: