如何使用systemd服务在后台进程模式下运行进程



我在谷歌上搜索并阅读了很多关于这方面的博客、帖子等。我也一直在我的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

我在这里错过了什么?

最终发现这是因为上一个命令中有额外的-D选项。删除-D选项解决了此问题。在系统管理器中以守护程序模式运行进程不是一种可行的方法。我们需要在前台运行它,让系统管理员来处理它

相关内容

  • 没有找到相关文章

最新更新