Символ @ и systemctl и vsftpd
У меня есть вопрос из двух частей.
Какое значение символа @ в сценариях systemctl?
Как запустить vsftpd в fedora 16 (которая в некоторых руководствах, кажется, содержит в своем имени символ @)? Я сделал все, что говорят учебники, и это все еще дает мне ошибку. 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)
1 ответ
@
Символ предназначен для специальных служб, сокетов и других устройств, где можно запустить несколько экземпляров.
Например, getty@.service
это сервис, который предоставляет текстовые терминалы входа в систему. Когда вы нажимаете Ctrl + Alt + F2, getty@tty2.service
запускается создание виртуального терминала № 2.
Другой сервис, который использует эту функциональность, - OpenVPN. Вы можете создать файл /etc/openvpn/work.conf
настроен для подключения к VPN на вашем рабочем месте, а затем systemctl start openvpn@work.service
подключиться к нему. Точно так же вы могли бы создать /etc/openvpn/home.conf
затем начните openvpn@home.service
если у вас дома был VPN Это избавляет вас от необходимости создавать .service
файл для каждой VPN, к которой вы подключаетесь.
Но не верьте мне на слово. Попробуйте! Давайте создадим простой сервис, который выводит сообщение в системный журнал. Создать файл /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
Внизу вы увидите, что /bin/echo foo
:
Feb 24 12:41:01 localhost echo[8412]: foo
Теперь попробуй systemctl start echo@bar.service
, На этот раз systemd будет заполняться %i
с bar
так что вы увидите:
Feb 24 12:42:51 localhost echo[8432]: bar
Это все, что нужно сделать! Что-нибудь потенциально может следовать за @
подписать, так как systemd просто заменяет %i
в определении сервиса с ним. OpenVPN использует его для конфигурации, другие службы могут использовать что-то еще, например, номер порта.
Для получения дополнительной информации см. man systemd.unit
,