用过的:
# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)
# systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
# vsftpd -v
vsftpd: version 3.0.2
创建了两个配置文件:
/etc/vsftpd/other21.conf
...
listen=YES
listen_ipv6=NO
listen_port=21
...
/etc/vsftpd/another20021.conf
...
listen=YES
listen_ipv6=NO
listen_port=20021
...
还保留了一个默认配置文件:
/etc/vsftpd/vsftpd.conf
这些 systemd 单元已激活:
# systemctl enable [email protected]
Created symlink from /etc/systemd/system/vsftpd.target.wants/[email protected] to /usr/lib/systemd/system/[email protected].
# systemctl enable [email protected]
Created symlink from /etc/systemd/system/vsftpd.target.wants/[email protected] to /usr/lib/systemd/system/[email protected].
# systemctl enable vsftpd.target
执行时:
# systemctl start vsftpd.target
实例vsftpd@another20021
运行正常。
但是vsftpd@other21
没有启动。出于某种原因,它运行了default
带配置的实例(在端口上21
,不允许vsftpd@other21
启动)。
# ps x|grep ftp
608 ? Ss 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
27390 ? Ss 0:00 /usr/sbin/vsftpd /etc/vsftpd/another20021.conf
vsftpd-3.0.2-21.el7.x86_64.rpm 中的单元文件和生成器的内容未受影响:
/usr/lib/systemd/system/[email protected]
[Unit]
Description=Vsftpd ftp daemon
After=network.target
PartOf=vsftpd.target
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/%i.conf
[Install]
WantedBy=vsftpd.target
/usr/lib/systemd/system/vsftpd.target
[Unit]
Description=FTP daemon
After=network.target
[Install]
WantedBy=multi-user.target
/usr/lib/systemd/system/vsftpd.service
[Unit]
Description=Vsftpd ftp daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[Install]
WantedBy=multi-user.target
/usr/lib/systemd/system-generators/vsftpd-generator
#!/bin/bash
confdir=/etc/vsftpd
unitdir=/usr/lib/systemd/system
targetdir=$1/vsftpd.target.wants
mkdir -p ${targetdir}
for f in $(ls -1 ${confdir}/*.conf | awk -F "." '{print $1}' | awk -F "/" '{print $4}')
do
echo "Generating systemd units for $f"
ln -s ${unitdir}/vsftpd\@.service ${targetdir}/vsftpd\@$f.service > /dev/null 2>&1
done
exit 0
激活单位:
# find /etc/systemd -name 'vsftpd*'
/etc/systemd/system/multi-user.target.wants/vsftpd.target
/etc/systemd/system/vsftpd.target.wants
/etc/systemd/system/vsftpd.target.wants/[email protected]
/etc/systemd/system/vsftpd.target.wants/[email protected]
为什么/etc/vsftpd/vsftpd.conf
会被触发?
[email protected]
另外,还应该在 systemd 单元文件中进行哪些更改vsftpd.target
?
答案1
为什么触发/etc/vsftpd/vsftpd.conf?
发生这种情况是因为您没有停止安装软件包时创建和启动的初始 vsftpd.service。要停止和禁用此服务,您需要运行以下命令:
# systemctl stop vsftpd.service
进而
# systemctl disable vsftpd.service
执行完这些命令后,原来的 vsftpd 会释放占用的端口和配置文件。然后你就可以启动第二个服务器实例了。
为了启动,还需要在 systemd 单元文件中进行哪些更改 [电子邮件保护]通过 vsftpd.target?
那里没有其他需要更改的地方。您指出的一切都是正确的。
--->
附言:我发现这个问题是六年前提出的,很可能不再相关。但也许我的回答会帮助那些由于粗心大意而遇到同样问题的人:)
---<