Символ @ и systemctl и vsftpd

У меня есть вопрос из двух частей.

  1. Какое значение символа @ в сценариях systemctl?

  2. Как запустить 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,

Другие вопросы по тегам