Sistem birimi dosyalarını koymak için en iyi yer : /etc/systemd/system
[Install] bölümüne bir hedef eklediğinizden emin olun, "Nasıl biliyor?" detaylar için. GÜNCELLEME : /usr/local/lib/systemd/systembaşka bir seçenek, detaylar için "Gri Alan" okuyun. "
Kullanıcı birimi dosyalarını koymak için en iyi yer : /etc/systemd/user veya $HOME/.config/systemd/user
ancak izinlere ve duruma göre değişir.
Gerçek şu ki sistem birimleri (veya giriş cümlesi onları çağırdığında, "birim konfigürasyonları") herhangi bir yere gidebilir - manuel sembolik bağlantılar yapmaya istekli olduğunuzu ve ikazların farkında olduğunuzu kanıtladı. Üniteyi systemctl daemon-reloadbazı sebeplerle bulabileceği bir yere koymak hayatı kolaylaştırır :
- Standart bir konum kullanmak, sistem üreticilerinin onları bulacağı ve açılışta etkinleştirilmesini kolaylaştıracağı anlamına gelir
systemctl enable. Bunun nedeni, ünitenizin otomatik olarak bir ünite bağımlılığı ağacına (bir ünite önbelleği) eklenmesidir.
- İzinleri düşünmeniz gerekmez, çünkü yalnızca doğru yetki verilen kullanıcılar belirtilen alanlara yazabilir.
Nasıl biliyor?
Ve systemctl enablesembolik bağlantının nerede oluşturulacağını tam olarak nasıl biliyor? Ünitenin içinde [install]bölümün altında kod yazıyorsunuz. Genellikle bir çizgi var
[Install]
WantedBy = multi-user.target
Bu, dosya sisteminde önceden tanımlanmış bir yere karşılık gelir. Bu şekilde, systemctlbu birimin bir grup birim dosyasına bağlı olduğunu bilir multi-user.target("hedef", birim bağımlılık gruplarını belirlemek için kullanılan bir terimdir. Tüm grupları ile birlikte listeleyebilirsiniz systemctl list-units --type target). Hedefe yüklenecek birim dosyaları grubu bir targetname.target.wantsdizine konur . Bu sadece sembolik bağlantılar dolu bir dizindir (veya gerçek olan). Senin Eğer [Install]bölüm diyor öyle , ama bunun bir sembolik içinde yoksa dizine, o zaman yüklemez. Systemd birim jeneratörleri birim dosyanızı önyükleme sırasında bağımlılık ağacı önbelleğine eklediğinde (jeneratörleri manuel olarak tetikleyebilirsiniz ), bu durumda dizinde sembolik bağlantıyı nereye koyacağınızı otomatik olarak bilir.WantedBymulti-user.targetmulti-user.target.wantssystemctl daemon-reload/etc/systemd/system/multi-user.target.wants/ etkinleştirmelisin.
Kılavuzdaki Anahtar Noktalar:
Ek birimler birim yük yolunda olmayan dizinlerden sisteme ("bağlı") yüklenebilir. Systemctl (1) için link komutuna bakın.
Systemctl altında, Birim Dosya Komutlarını arayın
Birim Dosyası Yükleme Yolu
Birim dosyaları, derleme sırasında belirlenen ve aşağıdaki iki tabloda açıklanan bir dizi yoldan yüklenir. Daha önce listelenen dizinlerde bulunan Birim dosyaları, aynı isimdeki ve listedeki daha düşük dizinlerdeki dosyaları geçersiz kılar.
Değişken $SYSTEMD_UNIT_PATHayarlandığında, bu değişkenin içeriği birim yük yolunu geçersiz kılar. Eğer $SYSTEMD_UNIT_PATH( ":") boş bir bileşen ile biter, her zamanki birim yük yolu değişkenin içeriğine eklenecektir.
Tablo 1 ve Tablo 2'den man systemd.unitiyi.
Sistem modunda çalışırken yolları yükleyin ( --system).
/etc/systemd/system Yerel yapılandırma
/run/systemd/system Çalışma zamanı birimleri
/usr/lib/systemd/system Kurulu paketlerin birimleri
Kullanıcı modunda çalışırken yolu yükle ( --user)
Kullanıcı birimi başına ve tüm / genel kullanıcı birimi başına bir fark var .
Kullanıcı bağımlı
$XDG_CONFIG_HOME/systemd/user Kullanıcı yapılandırması (yalnızca $XDG_CONFIG_HOMEayarlandığında kullanılır )
$HOME/.config/systemd/user Kullanıcı yapılandırması (yalnızca $XDG_CONFIG_HOMEayarlanmadığında kullanılır)
$XDG_RUNTIME_DIR/systemd/user Çalışma zamanı birimleri (yalnızca $XDG_RUNTIME_DIRayarlandığında kullanılır )
$XDG_DATA_HOME/systemd/user Ana dizine kurulmuş paketlerin birimleri (yalnızca $XDG_DATA_HOMEayarlandığında kullanılır )
$HOME/.local/share/systemd/user Ana dizine kurulmuş paketlerin birimleri (yalnızca $XDG_DATA_HOMEayarlanmadığında kullanılır)
--global (tüm kullanıcılar)
Tüm kullanıcılar için geçerli olan birimler - her kullanıcının sahip olduğu anlam. Böylece her kullanıcı bir yönetici önyüklemede olsa bile bu hizmetleri durdurabilir.
/etc/systemd/user Tüm kullanıcılar için yerel yapılandırma ( systemctl --global enable userunit.service)
/usr/lib/systemd/user Tüm kullanıcılar için sistem genelinde kurulmuş paketlerin birimleri
/run/systemd/user Çalışma zamanı birimleri
Gri alan
Bir yandan, Dosya Hiyerarşi Standardı bunun /etcikili dosyaları çalıştırmayan yerel yapılandırmalar için olduğunu belirtir . Öte yandan, /usr/local/"yerel olarak yazılım yüklerken sistem yöneticisi tarafından kullanılmak içindir" olduğunu belirtir . Ayrıca, (yalnızca kuruluş amacı için değilse) tüm sistem birimi dosyalarının altına girilmesi gerektiğini savunabilirsiniz /usr/local/lib/systemd/system, ancak bu, paket yöneticisinden değil, "yazılımın" bir parçası olan birim dosyalar için tasarlanmıştır. Sistem genelinde karşılık gelen sistemd kullanıcı birimleri altına girebilir
/usr/local/lib/systemd/user.
/etc/systemd/systemnerede sen komut dosyalarınızı koymak, Pacman paket komut dosyalarını koyar/usr/lib/systemd/systemve verensystemctl enable foo.servicesembolik bağların oluşturduğu/usriçin/etc...