@ Sembol ve systemctl ve vsftpd


27

İki parçalı bir sorum var.

  1. Systemctl komut dosyalarındaki @ sembolünün önemi nedir?

  2. FedF 16'da vsftpd nasıl başlatılır (bazı derslerde bu, adında bir @ içeriyor gibi)? Öğreticilerin söylediği her şeyi yaptım ve hala bana bir hata veriyor. http://blog.tuxforge.com/fedora-16-vsftpd/

Ne yaptım

systemctl enable vsftpd@.service

Ne görüyorum

Failed to issue method call: No such file or directory

(Ben de bunu mutlak bir yolla denedim, ve kontrol ettikten sonra böyle bir dosya yok. Gerçek dosyada @ işareti bulunmuyor ve / lib / systemd / system / directory dizini altında bulunuyor. @ sembolüyle ve bu simge olmadan başlayarak etkinleştirmek, etkinleştirmek için çalışır, ancak başlamaz. Makalenin artık kullanılmadığını fark ediyorum, ancak yine de servisi başlatmak gibi görünmüyorum. Bağlanmaya çalıştığımda bana izin vermiyor.)

EDIT: Bir şekilde hizmet vermeye başladım, ancak @ sembolünün bazı servis isimlerinde ne anlama geldiğini bilmek istiyorum. Ayrıca hala # 500 numaralı bir oturum açma hatası alıyorum dizini değiştiremiyorum [...], bu ne anlama geliyor?

Başlamak için az önce yazdım

sudo systemctl enable vsftpd.service

sudo systemctl start vsftpd.service (the problem was I was using an absolute path for this I think)

Yanıtlar:


48

@Sembol birden çok örneği çalıştırılabilir özel hizmetler, priz ve diğer birimler içindir.

Örneğin getty@.service, metin giriş terminalleri sağlayan hizmettir. Ctrl+ Alt+ Tuşlarına bastığınızda F2, getty@tty2.service2 numaralı sanal terminal oluşturuluyor.

Bu işlevi kullanan başka bir servis OpenVPN'dir. /etc/openvpn/work.confİşyerinizdeki VPN'ye systemctl start openvpn@work.servicebağlanmak ve daha sonra bağlanmak için yapılandırılmış bir dosya oluşturabilirsiniz . Benzer şekilde, oluşturabilir /etc/openvpn/home.conf, sonra openvpn@home.serviceevde bir VPN'niz varsa başlayabilirsiniz . Bu, .servicebağlandığınız her VPN için bir dosya oluşturmanız gerekmesini önler .

Ama buna söz vermeyin. Denemek! Syslog'a bir mesaj veren basit bir servis yaratalım. /etc/systemd/system/echo@.serviceAşağıdaki içeriğe sahip bir dosya oluşturun :

[Unit]
Description=Echo '%I'

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

Dikkat %i? systemd @, servis başlatıldığında işareti ne izlerse onu yerleştirecektir . Bu yüzden başlamayı deneyin echo@foo.service:

systemctl start echo@foo.service

Ardından, günlüğü kontrol edin :

 journalctl -n10

Alt kısımda, şu sistemin çalıştığını göreceksiniz /bin/echo foo:

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

Şimdi dene systemctl start echo@bar.service. Bu sefer, systemd %iile doldurulacak bar, göreceksiniz:

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

Hepsi bu kadar! Herhangi bir şey potansiyel @olarak işareti izleyebilir , çünkü sistemd sadece %ihizmet tanımındaki yerini alır . OpenVPN bunu yapılandırma için kullanır, diğer hizmetler port numarası gibi başka bir şey için kullanabilir.

Daha fazla bilgi için bkz man systemd.unit.


1
@ sembolünün eklenmesi dışında normal servisler gibi başlatıldı mı ve durduruldu mu? Mesela servisi ikinci kez başlatacak olsam, tekrar başlar mıyım? Birden çok örneği nasıl başlatırsınız?
rubixibuc

Evet, @tabelayı takip eden metni neyin uygun olduğuna göre değiştirin . Nasıl çalıştığını görmek için test edebileceğiniz bir örnek ekledim.
Yamalar

@Patches: "@ sembolü, birden çok örneğin çalıştırılabileceği özel hizmetler içindir." Freedesktop.org/software/systemd/man/systemd.service.html
pevik

Systemd.unit'te tanımlanmıştır . Soketler ve diğer tip üniteler için de faydalıdır . (Şimdi cevap vermek için teşekkürler, teşekkürler. :-)
Yamalar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.