Почему мой сценарий init.d отображается в --status-all, но я не могу его контролировать?
Я получаю следующий (усеченный) вывод из --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 ответа
А теперь 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,
[Единица измерения] Описание = Сервер OSSEC HIDS %i После того, как = network.target [Обслуживание] Тип = простой ExecStartPre = / usr / bin / env / var / ossec / bin / ossec-% i -t ExecStart = / usr / bin / env / var / ossec / bin / ossec-% i [Установить] 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 - всечтобы увидеть все загруженные юниты, даже неактивные.
выскочка
Я никогда не нуждался в OSSEC HIDS при выскочке, это всего лишь скелет /etc/init/ossec-authd.conf что вам придется работать над.
описание "OSSEC HIDS authd server" начать на уровне выполнения [2345] остановитесь на уровне выполнения [!2345] респаун exec /var/ossec/bin/ossec-authd
дальнейшее чтение
- https://unix.stackexchange.com/a/200281/5132
- /questions/483116/sensornaya-panel-ne-rabotaet-na-acer-one-725/483131#483131
- Леннарт Поэттеринг (2013-10-07).
systemctl, Системные справочные страницы. freedesktop.org.
Это похоже на service --status-all будет перечислять все по имени файла и что мой скрипт init.d как-то не работает.