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/system
baş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-reload
bazı 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 enable
sembolik 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, systemctl
bu 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.wants
dizine 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.WantedBy
multi-user.target
multi-user.target.wants
systemctl 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_PATH
ayarlandığı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.unit
iyi.
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_HOME
ayarlandığında kullanılır )
$HOME/.config/systemd/user
Kullanıcı yapılandırması (yalnızca $XDG_CONFIG_HOME
ayarlanmadığında kullanılır)
$XDG_RUNTIME_DIR/systemd/user
Çalışma zamanı birimleri (yalnızca $XDG_RUNTIME_DIR
ayarlandığında kullanılır )
$XDG_DATA_HOME/systemd/user
Ana dizine kurulmuş paketlerin birimleri (yalnızca $XDG_DATA_HOME
ayarlandığında kullanılır )
$HOME/.local/share/systemd/user
Ana dizine kurulmuş paketlerin birimleri (yalnızca $XDG_DATA_HOME
ayarlanmadığı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 /etc
ikili 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/system
nerede sen komut dosyalarınızı koymak, Pacman paket komut dosyalarını koyar/usr/lib/systemd/system
ve verensystemctl enable foo.service
sembolik bağların oluşturduğu/usr
için/etc
...