@ 符号和 systemctl 和 vsftpd

@ 符号和 systemctl 和 vsftpd

我的问题有两个部分。

  1. systemctl 脚本中的 @ 符号有什么意义?

  2. 如何在 Fedora 16 中启动 vsftpd(在一些教程中,它的名称似乎包含 @)?我已按照教程中说的做了所有操作,但仍然出现错误。 http://blog.tuxforge.com/fedora-16-vsftpd/

我做了什么

systemctl enable [email protected]

我所看到的

Failed to issue method call: No such file or directory

(我也尝试过使用绝对路径,但检查后发现没有这样的文件。真正的文件不包含 @ 符号,位于 /lib/systemd/system/ 目录下。我也尝试过使用和不使用 @ 符号来启动和启用,启用可以,但启动不可以。我意识到这篇文章现在已经过时了,但我似乎仍然无法启动该服务。当我尝试连接时,它不允许我连接)

编辑:我以某种方式启动了服务,但我仍然想知道某些服务名称中的 @ 符号是什么意思。此外,我仍然收到登录错误代码 #500 无法更改目录 [...],这是什么意思?

要启动它,我只需输入

sudo systemctl enable vsftpd.service

sudo systemctl start vsftpd.service (the problem was I was using an absolute path for this I think)

答案1

@符号代表特殊服务,套接字和其他可运行多个实例的单元。

例如,[email protected]是提供文本登录终端的服务。当您按Ctrl++AltF2[email protected]将启动并创建虚拟终端 #2。

另一个使用此功能的服务是 OpenVPN。您可以创建一个文件/etc/openvpn/work.conf,配置为连接到您工作场所的 VPN,然后连接到它。同样,如果您家里有 VPN,您可以创建,然后启动。这样您就不必为每个连接的 VPN创建一个文件。systemctl start [email protected]/etc/openvpn/home.conf[email protected].service

但不要轻信我的话。试试看!让我们创建一个向 syslog 输出消息的简单服务。创建一个包含以下内容的文件:/etc/systemd/system/[email protected]

[Unit]
Description=Echo '%I'

[Service]
Type=oneshot
ExecStart=/bin/echo %i
StandardOutput=syslog

请注意,当服务启动时,%isystemd 会用符号后面的内容填充 ? 。因此,尝试启动:@[email protected]

systemctl start [email protected]

然后,检查杂志

 journalctl -n10

在底部,你会看到 systemd 正在运行/bin/echo foo

Feb 24 12:41:01 localhost echo[8412]: foo

现在,尝试一下。这一次,systemd 将填充,因此您将看到:systemctl start [email protected]%ibar

Feb 24 12:42:51 localhost echo[8432]: bar

就这些!任何东西都可能跟在@符号后面,因为 systemd 只是%i在服务定义中用它替换。OpenVPN 使用它进行配置,其他服务可能使用它来做其他事情,比如端口号。

有关详细信息,请参阅For more information, seeman systemd.unit

相关内容