Используемый:
# 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 vsftpd@other21.service
Created symlink from /etc/systemd/system/vsftpd.target.wants/vsftpd@other21.service to /usr/lib/systemd/system/vsftpd@.service.
# systemctl enable vsftpd@another20021.service
Created symlink from /etc/systemd/system/vsftpd.target.wants/vsftpd@another20021.service to /usr/lib/systemd/system/vsftpd@.service.
# systemctl enable vsftpd.target
И при исполнении:
# systemctl start vsftpd.target
Пример vsftpd@another20021
работает нормально.
Но vsftpd@other21
не запускается. Вместо этого почему-то запускается экземпляр с default
config (на порт 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/vsftpd@.service
[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/vsftpd@another20021.service
/etc/systemd/system/vsftpd.target.wants/vsftpd@other21.service
Зачем /etc/vsftpd/vsftpd.conf
срабатывает?
Что нужно поменять в юнит-файлах systemd дополнительно для запуска vsftpd@other21.service
по vsftpd.target
?