Почему мой init.d сценарий обнаруживается под - состояние - все, но я не могу иначе управлять им?

Я получаю следующий (усеченный) вывод от --status-all

$ service --status-all
 [..]
 [ - ]  ossec
 [ - ]  ossec-hids-authd
 [..]

Но я не могу получить доступ к нему через service:

$ service status ossec-hids-authd
status: unrecognized service

Мой init.d сценарий похож на это:

#!/bin/sh -e
#### BEGIN INIT INFO
# Provides:          ossec-authd
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Authentication Daemon for OSSEC-HIDS.
# Description:       Provides key signing for OSSEC Clients
### END INIT INFO
NAME=ossec-authd
DAEMON=/var/ossec/bin/ossec-authd
DAEMON_ARGS="-p 1515 2>&1 >> /var/ossec/logs/ossec-authd.log &"
PIDFILE=/var/run/ossec-authd.pid

test -x ${DAEMON} || exit 5

case $1 in
 start)
  if [ -e $PIDFILE ]; then
   status_of_proc -p $PIDFILE $DAEMON "$NAME process" && status="0" || status="$?"
   if [ $status = "0" ]; then
    exit
   fi
  fi
  log_daemon_msg "Starting the process" "$NAME"
  if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS; then
   log_end_msg 0
  else
   log_end_msg 1
  fi
  ;;
 stop)
  if [ -e $PIDFILE ]; then
   status_of_proc -p $PIDFILE $DAEMON "Stoppping the $NAME process" && status="0" || status="$?"
   if [ "$status" = 0 ]; then
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
    /bin/rm -rf $PIDFILE
   fi
  else
   log_daemon_msg "$NAME process is not running"
   log_end_msg 0
  fi
  ;;
 restart)
  $0 stop && sleep 2 && $0 start
  ;;
 status)
  if [ -e $PIDFILE ]; then
   status_of_proc -p $PIDFILE $DAEMON "$NAME process" && exit 0 || exit $?
  else
   log_daemon_msg "$NAME Process is not running"
   log_end_msg 0
  fi
  ;;
 reload)
  if [ -e $PIDFILE ]; then
   start-stop-daemon --stop --signal USR1 --quiet --pidfile $PIDFILE --name $NAME -- $DAEMON_ARGS
   log_success_msg "$NAME process reloaded successfully"
  else
   log_failure_msg "$PIDFILE does not exists"
  fi
  ;;
 *)
  echo "Usage: $0 {start|stop|restart|reload|status}"
  exit 2
  ;;
esac

Что я сделал неправильно?

2
задан 16 May 2015 в 23:16

2 ответа

И теперь ответ Ubuntu.

Вам удалось избежать ненужного ужаса, который является ossec-control. Но на Ubuntu Linux та Система 5 rc сценарий является ненужным ужасом все сам по себе.

Вы используете Ubuntu Linux. У Вас уже есть или выскочка или systemd. Не начинайте системой письменности 5 rc сценарии.

systemd

В https://unix.stackexchange.com/a/200365/5132 я показал простую шаблонную сервисную единицу systemd, которая могла запустить целый набор услуг OSSEC HIDS как шаблонные экземпляры. К сожалению, это не работает с ossec-authd, по простой причине, что это не имеет -f опция как другие программы делает. Как ни странно, это вызвано тем, что это не имеет ненужного (все снова и снова) кодируют для двойного разветвления, которое другие программы имеют, и что они, должно быть, выключили с -f опция.

Таким образом, вот другой шаблон для сохранения как /etc/systemd/system/ossec-f@.service.

[Unit]
Description=The OSSEC HIDS %i server
After=network.target 

[Service]
Type=simple
ExecStartPre=/usr/bin/env /var/ossec/bin/ossec-%i -t
ExecStart=/usr/bin/env /var/ossec/bin/ossec-%i

[Install]
WantedBy=multi-user.target

Этот шаблон нужно инстанцировать в практическую эксплуатацию как ossec-f@authd.service и нормальные средства управления systemd доступны:

  • systemctl enable ossec-f@authd.service установить сервис, чтобы автоматически запустить при начальной загрузке.
  • systemctl start ossec-f@authd.service запустить сервис теперь.
  • systemctl status ossec-f@authd.service видеть сервисное состояние.

Команда для наблюдения сервисных состояний

systemctl
или

systemctl --all
видеть все загруженные единицы, даже неактивные.

выскочка

Никогда имея потребность OSSEC HIDS при выскочке самостоятельно, это - просто скелет /etc/init/ossec-authd.conf то, что необходимо будет продолжить работать.

description "OSSEC HIDS authd server"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec /var/ossec/bin/ossec-authd

Дальнейшее чтение

6
ответ дан 16 May 2015 в 23:16

Это походит service --status-all, перечислит вниз все именем файла и что мой init.d сценарий повреждается так или иначе.

0
ответ дан 16 May 2015 в 23:16

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

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