Cara Membetulkan Ralat "Systemctl Command Not Found" di Linux

Penyelesaian pantas untuk menyelesaikan isu dengan arahan 'systemctl' dan pengenalan beberapa alternatif yang cekap untuknya

systemctl sebagai utiliti penting dalam ekosistem Linux, adalah perkara biasa yang anda mungkin menghadapi masalah ralat "systemctl: command not found" apabila anda cuba menjalankan systemctl perintah. Ini mungkin tidak berlaku untuk semua pengedaran Linux, tetapi anda mungkin menghadapi ralat ini apabila anda menggunakan versi lama pengedaran Linux yang tidak menyokong systemctl perintah.

Masalah yang berlaku kepada anda adalah isu yang sangat biasa dan boleh diselesaikan dengan mudah. Jadi, jangan risau sama sekali dan ikuti tutorial lengkap untuk mencari penyelesaian yang cepat dan mudah.

Kami akan cuba memahami masalah itu dahulu dan kemudian membetulkannya.

Insights into systemctl dan sistemd

Oleh kerana ralat adalah dengan merujuk kepada systemctl arahan, adalah baik untuk mengetahui asas arahan ini untuk memahami pembetulan untuk ralat ini dengan lebih baik.

systemctl ialah utiliti baris perintah yang ditawarkan Linux, yang digunakan untuk memantau dan mengawal satu utiliti baris arahan lain bernama 'sistemd'. Ia juga memeriksa dan mengawal pengurus sistem bersama-sama dengan 'sistemd' utiliti.

Sintaks umum:

systemctl [pilihan] [nama]

sistemd ialah sekumpulan daemon, perpustakaan dan utiliti yang mengawal atur cara yang dijalankan apabila sistem anda but. sistemd juga berjaya memulakan kerja penting seperti memulakan jurnal aktiviti sistem.

Utiliti ini berfungsi sebagai utiliti pengurusan pusat untuk kebanyakan jika tidak semua sistem pengendalian berasaskan Linux.

Punca ralat

Punca yang paling mungkin untuk ralat ini mungkin kerana anda menggunakan versi lama pengedaran Linux. Kebanyakan versi lama menggunakan SysV init bukannya sistemd utiliti.

sistemd utiliti tiada dalam versi Linux sebelumnya kerana ia merupakan tambahan terbaru kepada bakul utiliti yang disediakan oleh Linux. systemctl adalah serasi untuk berfungsi dan memantau dengan sistemd utiliti dan akan gagal berfungsi dengan konfigurasi sebelumnya seperti SysVdi dalamnya atau Mulakan.

Jika anda tidak menggunakan sistemd, maka ralat ini dijangkakan. Ia semudah dan semudah itu.

Anda mungkin menghadapi ralat ini dengan cara berikut.

gaurav@ubuntu:~$ sudo systemctl mulakan kata laluan ufw [sudo] untuk gaurav: sudo: systemctl: arahan tidak dijumpai gaurav@ubuntu:~$ 

Di sini, kami cuba memulakan Tembok Api Ubuntu (ufw) menggunakan systemctl arahan dan menemui ralat "systemctl: command not found".

Jadi, apa yang perlu dilakukan sekarang jika anda tidak mahu menukar pengedaran Linux semasa anda yang menggunakan beberapa utiliti pengurusan pusat lain selain daripada sistemd? Nah, kami mempunyai penyelesaian pantas untuk anda yang membolehkan anda mengekalkan pengedaran Linux semasa anda serta membetulkan ralat anda dalam masa yang singkat.

Mari kita perhatikan pembaikan sekarang.

Membetulkan ralat "systemctl: command not found".

Akhir sekali, mari kita lihat penyelesaian masalah yang dipersoalkan selepas menganalisis punca dan fakta asas tentang masalah tersebut.

Betulkan 1: Menggantikan systemctl dengan perkhidmatan perintah

Pembetulan mudah untuk ralat yang dipersoalkan adalah dengan menggunakan perkhidmatan arahan dan bukannya ralat yang menyebabkan systemctl perintah.

perkhidmatan arahan membantu dalam menjalankan SystemV init skrip yang digunakan oleh pengedaran Linux yang lebih lama. Jika anda tidak mahu memasang sistemd utiliti pada sistem anda, pembaikan ini pasti akan berfungsi untuk anda.

Anda boleh memulakan, memulakan semula atau menghentikan sebarang perkhidmatan dan daemon pada pengedaran Linux anda menggunakan perkhidmatan perintah.

The perkhidmatan perintah dan systemctl fungsi arahan dengan cara yang sama, satu-satunya perbezaan di sini ialah keserasian arahan dengan utiliti yang bertanggungjawab untuk menjalankan sistem anda dengan anggun.

Mari kita lihat perkhidmatan arahan dengan ilustrasi.

Sintaks Umum:

perkhidmatan sudo [nama_perkhidmatan] [tindakan]

Dalam sintaks di atas, the [tindakan] ruang mungkin termasuk tindakan seperti mulakan, berhenti, mula semula atau status.

Kami akan menjalankan arahan yang sama untuk memulakan ufw perkhidmatan menggunakan perkhidmatan perintah.

perkhidmatan sudo ufw mula

Pengeluaran:

gaurav@ubuntu:~$ sudo service ufw mula gaurav@ubuntu:~$ sudo service ufw status ● ufw.service - Firewall tidak rumit Dimuatkan: dimuatkan (/lib/systemd/system/ufw.service; enabled; vendor preset: enab Active: aktif (keluar) sejak Isn 28-09-2020 11:22:34 IST; 1j 5minit lalu Dokumen: man:ufw(8) Proses: 333 ExecStart=/lib/ufw/ufw-init mula senyap (kod=keluar, status =0/SU PID Utama: 333 (kod=keluar, status=0/SUCCESS) 28 Sep 11:22:34 ubuntu systemd[1]: Dimulakan Firewall tidak rumit. Amaran: Jurnal telah diputar sejak unit dimulakan. Output log ialah tidak lengkap

Di sini, yang perkhidmatan arahan digunakan bukannya systemctl perintah dan ia berfungsi dengan baik.

Mari kita lihat satu lagi contoh perkhidmatan perintah untuk mendapatkan pemahaman yang betul mengenainya.

perkhidmatan sudo bermula apache2

Pengeluaran:

gaurav@ubuntu:~$ sudo service apache2 status ● apache2.service - Apache HTTP Server Loaded: dimuatkan (/lib/systemd/system/apache2.service; enabled; vendor preset: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Aktif: aktif (berjalan) sejak Isn 2020-09-28 11:22:47 IST; 1j 16minit lalu Proses: 1172 ExecStart=/usr/sbin/apachectl mula (kod= keluar, status=0/SUCCE PID Utama: 1248 (apache2) Tugasan: 55 (had: 4456) CGroup: /system.slice/apache2.service ├─1248 /usr/sbin/apache2 -k start ├─1249 /usr/ sbin/apache2 -k mula └─1250 /usr/sbin/apache2 -k mula 28 Sep 11:22:43 ubuntu systemd[1]: Memulakan Pelayan HTTP Apache... 28 Sep 11:22:47 ubuntu apachectl[1172] ]: AH00112: Amaran: DocumentRoot [/var/www Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Tidak boleh dipercayai det Sep 28 11:22:47 ubuntu Apache Mulakan sistemd[1]: Pelayan gaurav@ubuntu:~$ 

Kami telah menggunakan perkhidmatan arahan untuk memulakan utiliti apache2. Menggunakan status pilihan dengan perkhidmatan arahan akan memaparkan status semasa perkhidmatan. Kami akan mendapat butiran sama ada ia sedang berjalan atau sudah mati (tidak aktif).

Marilah kita sekarang menggunakan berhenti tindakan untuk menghentikan perkhidmatan apache2 menggunakan perkhidmatan perintah.

gaurav@ubuntu:~$ sudo service apache2 stop gaurav@ubuntu:~$ sudo service apache2 baris status 1--1...langkau... ● apache2.service - Pelayan HTTP Apache Dimuatkan: dimuatkan (/lib/systemd/ system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Aktif: tidak aktif (mati) sejak Isn 2020-09-28 12 :42:06 IST; 1s yang lalu Proses: 4928 ExecStop=/usr/sbin/apachectl stop (kod=keluar, status=0/SUCCESS) Proses: 1172 ExecStart=/usr/sbin/apachectl start (kod=keluar, status=0/SUCCESS) PID Utama : 1248 (kod=keluar, status=0/SUCCESS) 28 Sep 11:22:43 ubuntu systemd[1]: Memulakan Pelayan HTTP Apache... 28 Sep 11:22:47 ubuntu apachectl[1172]: AH00112: Amaran : DocumentRoot [/var/www/html] tidak wujud 28 Sep 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Tidak dapat menentukan nama domain yang layak sepenuhnya pelayan, menggunakan ::1. Tetapkan 'S 28 Sep 11:22:47 ubuntu systemd[1]: Memulakan Pelayan HTTP Apache.

Daripada contoh terperinci yang dijelaskan di atas, kita boleh menyimpulkan bahawa kita boleh menggunakan arahan ini dan bukannya perintah systemctl arahan untuk mengawal dan memantau daemon dan perkhidmatan lain di bawah pengedaran Linux.

Betulkan 2: Menyemak sistemd pakej

Kadang-kadang ia mungkin berlaku bahawa hanya sistemd pemasangan pakej boleh membetulkan masalah. Pertama, anda perlu menyemak status pemasangan sistemd pakej pada sistem anda.

Gunakan arahan berikut untuk menyemak pakej pada sistem anda.

sudo dpkg -l | grep systemd

Sekiranya sistemd utilty sudah dipasang anda akan mendapat output yang serupa seperti yang ditunjukkan di bawah.

gaurav@ubuntu:~$ sudo dpkg -l | kata laluan grep systemd [sudo] untuk gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 sistem pemesejan antara proses mudah (systemd --user integration) ii libnss-systemd:amd64 237-3ubuntu10.42 amd64 nss modul menyediakan modul nss dinamik resolusi nama pengguna dan kumpulan ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 sistem dan pengurus perkhidmatan - modul PAM ii libsystemd0:amd64 237-3ubuntu10.42 amd64 pustaka utiliti systemd ii libsystemd0:i386 237-3ubuntu pustaka i386 ii networkd-dispatcher 1.7-0ubuntu3.3 semua Perkhidmatan Dispatcher untuk perubahan status sambungan systemd-networkd ri python3-systemd 234-1build1 amd64 Python 3 bindings untuk systemd ii systemd 237-3ubuntu10.42 amd64 sistem dan pengurus perkhidmatan ii2377-v systemd-sys Pengurus sistem dan perkhidmatan 3ubuntu10.42 amd64 - Pautan SysV gaurav@ubuntu:~$ 

Jika anda mendapat output yang serupa dengan ini, ia bermakna itu sistemd dipasang pada sistem anda.

Jika ia tidak dipasang, anda boleh memasangnya dengan cara berikut.

sudo apt-get kemas kini
sudo apt-get install systemd

Jika ia dipasang dan masih ralat berterusan, kemudian cuba pasang semula menggunakan arahan berikut.

sudo apt-get install --reinstall systemd

Ini akan menyelesaikan masalah anda dengan memasang sistemd utiliti.

Kesimpulan

Kami belajar untuk membetulkan "systemctl: command not found" dalam tutorial ini. Kita boleh membuat kesimpulan dengan selamat bahawa menggunakan perkhidmatan perintah bukannya systemctl adalah idea yang baik dan menyelesaikan isu dengan baik. Kita boleh menggunakan dengan mudah perkhidmatan arahan selepas memahami contoh ilustrasi yang ditunjukkan dalam tutorial.