0

我已经用谷歌搜索并阅读了很多关于此的博客、帖子等。我也一直在我的 EC2 实例上手动尝试它们。但是,我仍然无法正确配置 systemd 服务单元以使其按预期在后台运行进程。我正在运行的进程是 nessus 服务。这是我的服务单元定义:

$ cat /etc/systemd/system/nessusagent.service
[Unit]
Description=Nessus
[Service]
ExecStart=/opt/myorg/bin/init_nessus
Type=simple
[Install]
WantedBy=multi-user.target

这是我的脚本/opt/myorg/bin/init_nessus

$ cat /opt/apiq/bin/init_nessus
#!/usr/bin/env bash
set -e

NESSUS_MANAGER_HOST=...
NESSUS_MANAGER_PORT=...
NESSUS_CLIENT_GROUP=...
NESSUS_LINKING_KEY=...

#-------------------------------------------------------------------------------
# link nessus agent with manager host
#-------------------------------------------------------------------------------
/opt/nessus_agent/sbin/nessuscli agent link --key=${NESSUS_LINKING_KEY} --host=${NESSUS_MANAGER_HOST} --port=${NESSUS_MANAGER_PORT} --groups=${NESSUS_CLIENT_GROUP}
if [ $? -ne 0 ]; then
    echo "Cannot link the agent to the Nessus manager, quitting."
exit 1
fi

/opt/nessus_agent/sbin/nessus-service -q -D

当我运行该服务时,我总是得到以下信息:

$ systemctl status nessusagent.service
● nessusagent.service - Nessus
  Loaded: loaded (/etc/systemd/system/nessusagent.service; enabled; vendor preset: enabled)
  Active: inactive (dead) since Mon 2020-08-24 06:40:40 UTC; 9min ago
Process: 27787 ExecStart=/opt/myorg/bin/init_nessus (code=exited, status=0/SUCCESS)
Main PID: 27787 (code=exited, status=0/SUCCESS)

...
Aug 24 06:40:40 ip-10-27-0-104 init_nessus[27787]: + /opt/nessus_agent/sbin/nessuscli agent link --key=... --host=... --port=8834 --groups=...
Aug 24 06:40:40 ip-10-27-0-104 init_nessus[27787]: [info] [agent] HostTag::getUnix: setting TAG value to '8596420322084e3ab97d3c39e5c92e00'
Aug 24 06:40:40 ip-10-27-0-104 init_nessus[27787]: [info] [agent] Successfully linked to <myorg.com>:8834
Aug 24 06:40:40 ip-10-27-0-104 init_nessus[27787]: + '[' 0 -ne 0 ']'
Aug 24 06:40:40 ip-10-27-0-104 init_nessus[28506]: + /opt/nessus_agent/sbin/nessus-service -q -D

但是,我看不到我期望看到的过程:

$ ps faux | grep nessus
root   28565 0.0 0.0 12940  936 pts/0  S+  06:54  0:00             \_ grep --color=auto nessus

如果我手动运行最后一个命令,我可以看到它:

$ /opt/nessus_agent/sbin/nessus-service -q -D
$ ps faux | grep nessus
root   28959 0.0 0.0 12940 1016 pts/0  S+  07:00  0:00             \_ grep --color=auto nessus
root   28952 0.0 0.0  6536  116 ?      S   07:00  0:00 /opt/nessus_agent/sbin/nessus-service -q -D
root   28953 0.2 0.0 69440 9996 pts/0  Sl  07:00  0:00    \_ nessusd -q

我在这里想念什么?

4

1 回答 1

0

最终发现这是因为-D最后一个命令中的额外选项。删除该-D选项解决了该问题。在系统管理器中以守护程序模式运行进程不是要走的路。我们需要在前台运行它并让系统管理器处理它。

于 2020-08-28T16:24:01.967 回答