Sanırım şu anda burada sunulanlardan daha iyi bir çözüm buldum. Kısmen, cgmanager'in öldüğünü söyleyebildiğim için, kısmen çözümüm çılgın bir çözüm gibi hissetmediği için, ancak çoğunlukla bu tartışma soruna bir çözüm ararken hala ortaya çıktığı için. Aslında oldukça basit: systemd kullanıcı modunu kullanın .
Systemd kullanmıyorsanız bu çözüm yardımcı olmayacaktır. Bu durumda, init sisteminizin ayrıcalıklı olmayan kullanıcıların önyükleme sırasında hizmetleri çalıştırmasına izin vermesinin bir yolu olup olmadığını anlamanız ve bunu bir başlangıç noktası olarak kullanmanızı öneririm.
Ayrıcalıksız lxc kaplarını otomatik olarak başlatmak için systemd kullanıcı modunu kullanma
Ben düzgün çalışan lxc-autostart
ve kabın kullanıcı çalışır gibi çalışan ayrıcalıksız lxc kapsayıcılar olduğunu varsayalım . Öyleyse aşağıdakileri yapın:
- Dosyayı
~/.config/systemd/user/lxc-autostart.service
, kullanıcının lxc kapsayıcılarına sahip olduğu herhangi bir evde oluşturun:
[Unit]
Description="Lxc-autostart for lxc user"
[Service]
Type=oneshot
ExecStart=/usr/bin/lxc-autostart
ExecStop=/usr/bin/lxc-autostart -s
RemainAfterExit=1
[Install]
WantedBy=default.target
- Sonra bu kullanıcı koşarken:
systemctl --user enable lxc-autostart
( --user
Seçenek, systemctl'e kullanıcı modunda kullandığınızı söyler. Normalde systemctl, start, stop, statuc, enable, vb. İle yaptığım her şey --user ile çalışır.)
- Sonra aşağıdakileri çalıştırın, burada
$user
lxc kapsayıcılarına sahip kullanıcının adı:
sudo loginctl enable-linger $user
Bu, systemd'nin $user
önyükleme için bir systemd kullanıcı örneğini başlatması için gereklidir . Aksi takdirde $user
oturum açtığında yalnızca bir tanesini başlatır .
Daha fazla bilgi için archlinux wiki systemd / timer sayfasını ve systemd man sayfalarını öneriyorum .
Bir kullanıcının systemd örneğine kök olarak erişme
Bir kullanıcının systemd hizmetini kök olarak gerçekten başlatabilir / durdurabilirsiniz / ancak XDG_RUNTIME_DIR
ortam değişkenini ayarlamanız gerekir . $user
Örneğin, örneğine erişmek istediğiniz kullanıcı ve kullanıcı kimliği olduğunu varsayarsak , $uid
yukarıda tanımlanan lxc-autostart.service'i şu şekilde başlatabilirsiniz:
sudo -u $user XDG_RUNTIME_DIR=/run/user/$uid systemctl --user start lxc-autostart
Hatta systemd-run
kullanıcı olarak lxc'yi bozmayacak şekilde rasgele komutlar çalıştırmak için de kullanabilirsiniz . Yedeklemeden önce / sonra $name
kaplarımı durdurmak / başlatmak için aşağıdaki komutları kullanıyorum, yedeklenen lxc kapsayıcısının adı:
sudo -u $user XDG_RUNTIME_DIR=/run/user/$uid systemd-run --user --wait lxc-stop -n $name
sudo -u $user XDG_RUNTIME_DIR=/run/user/$uid systemd-run --user --scope lxc-start -n $name
( --wait
Systemd-run olmadan kap durduruluncaya kadar engellenmeyeceğini unutmayın.)