正确启用systemd服务-fail2ban

aPu*_*ife 1 systemd

老实说,我对使用 systemd 感到一点不舒服。我就是无法理解。

我使用的fail2ban版本在我的Ubuntu 16.04中表现得很奇怪。我删除了它:

apt remove fail2ban
Run Code Online (Sandbox Code Playgroud)

并安装了最后一个:

wget https://github.com/fail2ban/fail2ban/archive/0.11.zip
unzip 0.11.zip
cd fail2ban-0.11
python setup.py install
Run Code Online (Sandbox Code Playgroud)

在安装结束时,它说我必须启用它的服务。

我以为

systemctl enable fail2ban.service
Run Code Online (Sandbox Code Playgroud)

足够了,但服务似乎被“掩盖”了。我使用此链接:https://askubuntu.com/questions/710420/why-are-some-systemd-services-in-the-masked-state 来了解 masked 是什么。

我试图揭开它的面具: systemctl unmask fail2ban.service

并启用它:

systemctl enable fail2ban.service
Run Code Online (Sandbox Code Playgroud)

现在是经典命令:

service fail2ban status | start | stop
Run Code Online (Sandbox Code Playgroud)

工作中。

问题是,我读到我也应该能够从 systemctl 获取服务的信息:

systemctl fail2ban status
Unknown operation fail2ban.
Run Code Online (Sandbox Code Playgroud)

所以我开始谷歌搜索结果......我找到了这个命令(并且我添加了 | sort 以获得更好的输出):

systemctl list-units | sort
Run Code Online (Sandbox Code Playgroud)

这表明:

fail2ban.service  loaded active exited  LSB: Start/stop fail2ban
Run Code Online (Sandbox Code Playgroud)

我不知道“退出”是什么意思,所以我搜索: https ://unix.stackexchange.com/questions/241970/what-does-status-active-exited-mean-for-a-custom-service

状态活动(退出)意味着 systemd 已成功运行命令,但它不知道有一个守护进程需要监视。

我的请求

我所希望做的就是能够启动、停止并控制fail2ban 服务是否正常工作。我(几乎)对 systemd 一无所知,因为我总是跳过它(这也是我在熟悉 CentOS 5 和以前的版本多年后转向 Ubuntu 14 的原因),但现在看来我是被迫的。

有人可以告诉我应该如何以正确的方式“添加”fail2ban 服务到 systemctl 吗?

use*_*517 6

肌肉记忆是一回事。systemctl 实用程序的设计者对命令行进行了重新排序,使其现在(大体上)

systemctl <action> <service>
Run Code Online (Sandbox Code Playgroud)

而不是你的肌肉记忆所习惯的

systemctl <service> <action>
Run Code Online (Sandbox Code Playgroud)

所以,启动停止、重启、启用、状态等就变成了

systemctl start fail2ban
systemctl stop fail2ban
systemctl restart fail2ban
systemctl enable fail2ban
systemctl status fail2ban
Run Code Online (Sandbox Code Playgroud)