@符号和systemctl和vsftpd


27

我有一个两部分的问题。

  1. 在systemctl脚本中@符号的含义是什么?

  2. 如何在fedora 16中启动vsftpd(在某些教程中它的名称中似乎包含@)?我已经完成了教程说的一切,但仍然给我一个错误。 http://blog.tuxforge.com/fedora-16-vsftpd/

我做了什么

systemctl enable vsftpd@.service

我所看到的

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)

Answers:


48

@符号用于特殊服务,套接字以及可以运行多个实例的其他单元。

例如,getty@.service是提供文本登录终端的服务。当您按Ctrl+ Alt+时F2getty@tty2.service将启动,创建虚拟终端#2。

使用此功能的另一项服务是OpenVPN。您可以创建一个文件/etc/openvpn/work.conf,配置为在您的工作场所连接到VPN,然后再systemctl start openvpn@work.service连接到它。同样,您可以创建/etc/openvpn/home.conf,然后openvpn@home.service在家里有VPN的情况下开始。这样可以避免您必须为.service所连接的每个VPN 创建文件。

但是不要相信我。试试看!让我们创建一个将消息输出到syslog的简单服务。创建一个/etc/systemd/system/echo@.service具有以下内容的文件:

[Unit]
Description=Echo '%I'

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

注意%i@启动服务时,systemd将使用该符号后的内容填充该名称。因此,尝试开始echo@foo.service

systemctl start echo@foo.service

然后,检查日志

 journalctl -n10

在底部,您将看到systemd运行了/bin/echo foo

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

现在,尝试systemctl start echo@bar.service。这一次,systemd将填充%ibar,所以你会看到:

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

这里的所有都是它的!任何可能跟随该@符号的东西,因为systemd只是%i用它替换了服务定义。OpenVPN使用它进行配置,其他服务可能使用其他功能,例如端口号。

有关更多信息,请参见man systemd.unit


1
除了包含@符号外,它们是否像普通服务一样启动和停止?例如,如果我要第二次启动该服务,我是否会再次启动?您如何启动多个实例?
rubixibuc 2012年

是的,只要将@标志后的文字更改为适当的文字即可。我添加了一个示例,您可以测试一下它的工作原理。
2012年

@Patches:“ @符号用于可以运行多个实例的特殊服务”的文档在哪里?我在freedesktop.org/software/systemd/man/systemd.service.html
上看

systemd.unit中进行了描述。它对于套接字和其他类型的单元也很有用。(现在添加答复,谢谢。:-)
补丁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.