Artikel ini menjelaskan kemungkinan penyebab dan solusi untuk kesalahan yang muncul saat menjalankan perintah systemctl pada instance Linux.
Deskripsi masalah
Saat menjalankan perintah systemctl pada instance Linux, Anda mungkin mengalami kesalahan berikut:
System has not been booted with systemd as init system (PID 1). Can't operate.Failed to get D-Bus connection: xxx xxx.Kemungkinan penyebab
Systemd adalah sistem inisialisasi dan manajer layanan yang digunakan untuk menginisialisasi proses pada sistem Linux serta mengelola siklus hidupnya. systemctl merupakan alat baris perintah untuk sistem dan manajer layanan systemd. Jika Anda mengalami kesalahan seperti yang dijelaskan, kemungkinan penyebabnya meliputi:
Sistem tidak diinisialisasi dengan systemd.
Beberapa distribusi Linux yang lebih lama atau ringan (seperti Devuan, Alpine Linux, atau Void Linux) mungkin menggunakan sistem inisialisasi lain (seperti OpenRC, SysVinit, atau runit) secara default, bukan systemd. Sebagai contoh, Windows Subsystem for Linux (WSL) menggunakan sistem inisialisasi SysVinit secara default.
Jika Anda menjalankan perintah dalam kontainer seperti Docker atau Podman, dan kontainer tersebut tidak dikonfigurasi untuk menggunakan systemd sebagai sistem inisialisasi, Anda mungkin mengalami kesalahan ini.
Sistem menggunakan systemd untuk inisialisasi, tetapi systemd rusak atau salah konfigurasi.
Solusi
Hubungkan ke instance Linux.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.
Jalankan perintah berikut untuk memastikan apakah sistem diinisialisasi dengan systemd:
ps -p 1 -o comm=Output kosong atau nilai berbeda dari systemd: Ini menunjukkan bahwa sistem tidak diinisialisasi dengan systemd. Gunakan perintah manajemen layanan yang sesuai dengan sistem inisialisasi saat ini.
CatatanJika Anda perlu menggunakan skrip terkait
systemctluntuk menjalankan aplikasi, kami sarankan menggunakan distribusi Linux lain yang mendukung systemd atau menjalankan sistem Linux yang mendukung systemd di dalam kontainer Docker.Sebagai contoh, jika sistem menggunakan SysVinit (output adalah init), Anda dapat menggunakan perintah
servicesebagai penggantisystemctl. Perbandingan perintah umum ditunjukkan dalam tabel berikut:Operasi layanan/perintah
SysVinit
Systemd
Mulai layanan
sudo service service_name startsudo systemctl start service_nameHentikan layanan
sudo service service_name stopsudo systemctl stop service_nameMulai ulang layanan
sudo service service_name restartsudo systemctl restart service_namePeriksa status layanan
sudo service service_name statussudo systemctl status service_nameAktifkan startup layanan
sudo chkconfig service_name onsudo systemctl enable service_nameNonaktifkan startup layanan
sudo chkconfig service_name offsudo systemctl disable service_nameOutput adalah systemd: Ini menunjukkan bahwa sistem diinisialisasi dengan systemd. Jika masalah tetap ada, itu mungkin disebabkan oleh kerusakan sistem atau salah konfigurasi. Kami sarankan merujuk pada panduan resmi distribusi masing-masing dan mencoba memulihkan layanan systemd.