Systemd olmayan bir init sistemi veya bozuk bir systemd yapılandırmasından kaynaklanan systemctl hatalarını çözün.
Belirti
Bir Linux örneğinde systemctl komutunu çalıştırdığınızda aşağıdaki hatalardan biri döner:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to get D-Bus connection: xxx xxx.
Neden
systemctl , Linux init sistemi ve hizmet yöneticisi olan systemd için kullanılan bir komut satırı aracıdır. Bu hatalar aşağıdaki nedenlerle oluşur:
-
Sistem, init sistemi olarak systemd kullanmıyordur.
Bazı eski veya hafif Linux dağıtımları (Devuan, Alpine Linux veya Void Linux gibi) varsayılan olarak başka init sistemleri (OpenRC, SysVinit veya runit gibi) kullanır. Örneğin, Windows Subsystem for Linux (WSL) varsayılan olarak SysVinit kullanır.
Komutu, systemd kullanacak şekilde yapılandırılmamış bir Docker veya Podman konteyneri içinde çalıştırıyorsanız bu hata oluşur.
Sistem systemd kullanıyor ancak systemd bozuk veya yanlış yapılandırılmış olabilir.
Çözüm
-
Linux örneğine bağlanın.
-
Sistemin init sistemi olarak systemd kullanıp kullanmadığını kontrol edin:
ps -p 1 -o comm=-
Çıktı boş veya systemd değil: Sistem systemd kullanmıyor. Geçerli init sistemi için hizmet yönetimi komutlarını kullanın.
Notsystemctlbetiklerine ihtiyacınız varsa systemd destekleyen bir Linux dağıtımı kullanın veya Docker konteynerinde systemd etkinleştirilmiş bir Linux sistemi çalıştırın.Örneğin, sistem SysVinit kullanıyorsa (çıktı
initolur),systemctlyerineservicekomutunu kullanın. Aşağıdaki tabloda yaygın komutlar karşılaştırılmıştır:
İşlem/komut
SysVinit
Systemd
Hizmeti başlatsudo service service_name startsudo systemctl start service_name
Hizmeti durdursudo service service_name stopsudo systemctl stop service_name
Hizmeti yeniden başlatsudo service service_name restartsudo systemctl restart service_name
Hizmet durumunu kontrol etsudo service service_name statussudo systemctl status service_name
Otomatik başlatmayı etkinleştirsudo chkconfig service_name onsudo systemctl enable service_name
Otomatik başlatmayı devre dışı bıraksudo chkconfig service_name offsudo systemctl disable service_name Çıktı systemd: Sistem systemd kullanıyor. Hata devam ediyorsa systemd bozuk veya yanlış yapılandırılmış olabilir. systemd hizmetini kurtarmak için kullandığınız dağıtımın resmi belgelerine bakın.
-