我从以下(截断的)输出 --status-all
$ service --status-all
[..]
[ - ] ossec
[ - ] ossec-hids-authd
[..]
Run Code Online (Sandbox Code Playgroud)
但我无法通过service以下方式访问它:
$ service status ossec-hids-authd
status: unrecognized service
Run Code Online (Sandbox Code Playgroud)
我的 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
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
你已经设法避免了不必要的恐怖ossec-control。但是在 Ubuntu Linux 上,System 5rc脚本本身就是一个不必要的恐怖。
您正在使用 Ubuntu Linux。您已经拥有 upstart 或 systemd。 不要从编写 System 5rc脚本开始。
在https://unix.stackexchange.com/a/200365/5132 中,我展示了一个简单的 systemd 模板服务单元,它可以启动一大堆 OSSEC HIDS 服务,作为模板实例。不幸的是,它不适ossec-authd用于 ,原因很简单,它没有-f其他程序那样的选项。具有讽刺意味的是,这是因为它没有其他程序具有的用于双分叉的不必要的(再次)代码,并且它们必须关闭该-f选项。
所以这里有另一个模板可以另存为/etc/systemd/system/ossec-f@.service.
[单元] 描述=OSSEC HIDS %i 服务器 之后=网络.目标 [服务] 类型=简单 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 --all查看所有加载的单位,甚至是不活动的单位。
我自己从未需要过 OSSEC HIDS,这只是一个/etc/init/ossec-authd.conf你必须努力的骨架。
描述“OSSEC HIDS authd 服务器” 从运行级别开始 [2345] 在运行级别停止 [!2345] 重生 exec /var/ossec/bin/ossec-authd
systemctl. systemd 手册页。freedesktop.org。