Cách khắc phục lỗi “Systemctl Command Not Found” trong Linux

Một cách sửa lỗi nhanh chóng để giải quyết vấn đề với lệnh ‘systemctl’ và giới thiệu một số lựa chọn thay thế hiệu quả cho nó.

systemctl là một tiện ích quan trọng trong hệ sinh thái Linux, bạn có thể gặp phải sự cố “systemctl: command not found” khi cố chạy lệnh systemctl . Điều này có thể không đúng với tất cả các bản phân phối của Linux, nhưng bạn có thể gặp phải lỗi này khi bạn đang sử dụng phiên bản cũ hơn của bản phân phối Linux không hỗ trợ lệnh systemctl.

Sự cố xảy ra với bạn là một sự cố rất phổ biến và có thể dễ dàng khắc phục. Vì vậy, đừng lo lắng gì cả và chỉ cần xem qua hướng dẫn đầy đủ để tìm ra cách khắc phục nhanh chóng và dễ dàng.

Chúng tôi sẽ cố gắng tìm hiểu vấn đề trước và sau đó khắc phục nó.

Thông tin chi tiết về systemctlsystemd

Vì lỗi liên quan đến systemctl, sẽ rất tốt nếu bạn biết những điều cơ bản về lệnh này để hiểu cách khắc phục lỗi này tốt hơn.

systemctl là một tiện ích dòng lệnh mà Linux cung cấp, được sử dụng để theo dõi và kiểm soát một tiện ích dòng lệnh khác có tên là ‘ systemd‘. Nó cũng kiểm tra và kiểm soát phần mềm quản lý hệ thống cùng với systemd ”.

Cú pháp chung :

systemctl [option] [name]

systemd là một gói các daemon, thư viện và tiện ích kiểm soát các chương trình chạy khi hệ thống khởi động. systemd cũng quản lý để bắt đầu một công việc quan trọng như bắt đầu nhật ký hoạt động của hệ thống.

Tiện ích này hoạt động như một tiện ích quản lý trung tâm cho hầu hết nếu không phải là tất cả các hệ điều hành dựa trên Linux.


Nguyên nhân gốc rễ của lỗi

Nguyên nhân có thể xảy ra nhất cho lỗi này có thể là bạn đang sử dụng phiên bản cũ hơn của bản phân phối Linux. Nhiều phiên bản cũ sử dụng tiện ích SysV init thay thế systemd.

Tiện ích systemd không có trong các phiên bản Linux trước vì nó là một bổ sung gần đây. systemctl tương thích với chức năng và màn hình với systemd và sẽ không hoạt động với các cấu hình trước đó như SysV init hoặc Upstart.

Nếu bạn không sử dụng systemd, thì lỗi này có thể xảy ra. Nó đơn giản và dễ hiểu như vậy.

Bạn có thể gặp lỗi này theo cách sau.

[email protected]:~$ sudo systemctl start ufw
[sudo] password for gaurav:
sudo: systemctl: command not found 
[email protected]:~$ 

Ở đây, chúng tôi đã cố gắng khởi động Ubuntu Fire Wall ( ufw) bằng systemctl và gặp lỗi “systemctl: command not found”.

Vì vậy, phải làm gì bây giờ nếu bạn không muốn thay đổi bản phân phối Linux hiện tại đang sử dụng một số tiện ích quản lý trung tâm khác ngoài systemd? Chà, chúng tôi có một cách sửa lỗi nhanh chóng cho bạn, điều này sẽ cho phép bạn giữ lại bản phân phối Linux hiện tại cũng như khắc phục lỗi ngay lập tức.

Hãy để chúng tôi quan sát các sửa chữa ngay bây giờ.


Sửa lỗi “systemctl: command not found”

Cuối cùng, bây giờ chúng ta hãy xem xét giải pháp của vấn đề đang được đề cập sau khi phân tích nguyên nhân và sự thật cơ bản về vấn đề.

Khắc phục 1: Thay thế systemctl bằng service

Một cách khắc phục đơn giản cho lỗi được đề cập là sử dụng lệnh service thay vì systemctl gây ra lỗi .

service giúp chạy SystemV init tập lệnh được sử dụng bởi các bản phân phối Linux cũ hơn. Nếu bạn không muốn cài đặt systemd trên hệ thống của mình, cách sửa lỗi này chắc chắn sẽ hiệu quả với bạn.

Bạn có thể bắt đầu, khởi động lại hoặc dừng bất kỳ dịch vụ và daemon nào trên bản phân phối Linux của mình bằng service.

Các lệnh servicesystemctl cùng chức năng lệnh, sự khác biệt duy nhất ở đây là khả năng tương thích của lệnh với các tiện ích đó phải chịu trách nhiệm cho các hoạt động duyên dáng của hệ thống.

Hãy để chúng tôi xem service với hình ảnh minh họa.

Cú pháp chung:

sudo service [service_name] [action]

Trong cú pháp trên, [action] có thể bao gồm những hành động thích startstoprestart hoặc status.

Chúng tôi sẽ chạy cùng một lệnh để bắt đầu ufw dịch vụ bằng service.

sudo service ufw start

Đầu ra :

[email protected]:~$ sudo service ufw start
[email protected]:~$ sudo service ufw status
● ufw.service - Uncomplicated firewall
   Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enab
   Active: active (exited) since Mon 2020-09-28 11:22:34 IST; 1h 5min ago
     Docs: man:ufw(8)
  Process: 333 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SU
 Main PID: 333 (code=exited, status=0/SUCCESS)

Sep 28 11:22:34 ubuntu systemd[1]: Started Uncomplicated firewall.
Warning: Journal has been rotated since unit was started. Log output is incomple

Ở đây, service được sử dụng thay vì systemctl và nó hoạt động hoàn toàn tốt.

Chúng ta hãy xem thêm một ví dụ về service để hiểu đúng về nó.

sudo service apache2 start

Đầu ra :

[email protected]:~$ sudo service apache2 status
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: 
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Mon 2020-09-28 11:22:47 IST; 1h 16min ago
  Process: 1172 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCE
 Main PID: 1248 (apache2)
    Tasks: 55 (limit: 4456)
   CGroup: /system.slice/apache2.service
           ├─1248 /usr/sbin/apache2 -k start
           ├─1249 /usr/sbin/apache2 -k start
           └─1250 /usr/sbin/apache2 -k start

Sep 28 11:22:43 ubuntu systemd[1]: Starting The Apache HTTP Server...
Sep 28 11:22:47 ubuntu apachectl[1172]: AH00112: Warning: DocumentRoot [/var/www
Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Could not reliably det
Sep 28 11:22:47 ubuntu systemd[1]: Started The Apache HTTP Server.

[email protected]:~$ 

Chúng tôi đã sử dụng service để khởi động tiện ích apache2. Sử dụng status tùy chọn với service sẽ hiển thị trạng thái hiện tại của dịch vụ. Chúng tôi sẽ nhận được thông tin chi tiết cho dù nó đang chạy hay đã chết (không hoạt động).

Bây giờ chúng ta hãy sử dụng stop hành động để dừng dịch vụ apache2 bằng service.

[email protected]:~$ sudo service apache2 stop
[email protected]:~$ sudo service apache2 status
lines 1--1...skipping...
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: inactive (dead) since Mon 2020-09-28 12:42:06 IST; 1s ago
  Process: 4928 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 1172 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 1248 (code=exited, status=0/SUCCESS)

Sep 28 11:22:43 ubuntu systemd[1]: Starting The Apache HTTP Server...
Sep 28 11:22:47 ubuntu apachectl[1172]: AH00112: Warning: DocumentRoot [/var/www/html] does not exist
Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'S
Sep 28 11:22:47 ubuntu systemd[1]: Started The Apache HTTP Server.

Từ các ví dụ chi tiết được giải thích ở trên, chúng ta có thể kết luận rằng chúng ta có thể sử dụng lệnh này thay vì systemctl để điều khiển và giám sát các trình duyệt và dịch vụ khác trong bản phân phối Linux.

Khắc phục 2: Kiểm tra systemd package

Đôi khi có thể xảy ra trường hợp chỉ systemd cài đặt gói mới có thể khắc phục được sự cố. Trước tiên, bạn cần kiểm tra trạng thái cài đặt của systemd gói trên hệ thống của mình.

Sử dụng lệnh sau để kiểm tra gói trên hệ thống.

sudo dpkg -l | grep systemd

Nếu systemd đã được cài đặt, bạn sẽ nhận được một đầu ra tương tự như hình dưới đây.

[email protected]:~$ sudo dpkg -l | grep systemd
[sudo] password for gaurav: 
ii  dbus-user-session                             1.12.2-1ubuntu1.2                                amd64        simple interprocess messaging system (systemd --user integration)
ii  libnss-systemd:amd64                          237-3ubuntu10.42                                 amd64        nss module providing dynamic user and group name resolution
ii  libpam-systemd:amd64                          237-3ubuntu10.42                                 amd64        system and service manager - PAM module
ii  libsystemd0:amd64                             237-3ubuntu10.42                                 amd64        systemd utility library
ii  libsystemd0:i386                              237-3ubuntu10.42                                 i386         systemd utility library
ii  networkd-dispatcher                           1.7-0ubuntu3.3                                   all          Dispatcher service for systemd-networkd connection status changes
ri  python3-systemd                               234-1build1                                      amd64        Python 3 bindings for systemd
ii  systemd                                       237-3ubuntu10.42                                 amd64        system and service manager
ii  systemd-sysv                                  237-3ubuntu10.42                                 amd64        system and service manager - SysV links
[email protected]:~$ 

Nếu bạn nhận được một đầu ra tương tự như thế này, điều đó có nghĩa là nó đã systemd được cài đặt trên hệ thống.

Nếu nó chưa được cài đặt, bạn có thể cài đặt nó theo cách sau.

sudo apt-get update
sudo apt-get install systemd

Nếu nó đã được cài đặt và lỗi vẫn còn, hãy thử cài đặt lại nó bằng lệnh sau.

sudo apt-get install --reinstall systemd

Điều này sẽ giải quyết vấn đề bằng cách cài đặt systemd.


Phần kết luận

Chúng ta đã học cách sửa lỗi “systemctl: command not found” trong hướng dẫn này. Chúng ta có thể kết luận một cách an toàn rằng sử dụng service thay vì lệnh systemctl là một ý tưởng hay và giải quyết vấn đề rất tốt. Chúng ta có thể dễ dàng sử dụng service sau khi hiểu rõ các ví dụ minh họa trong bài hướng dẫn.

Chia sẻ suy nghĩ, quan điểm của bạn

Leave a reply

Tìm kiếm
Sao Hải Vương
Logo