Cách sửa lỗi "Không tìm thấy lệnh Systemctl" trong Linux

Một bản 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, rất phổ biến là bạn có thể gặp phải lỗi "systemctl: command not found" khi bạn cố gắng chạy systemctl yêu cầu. Đ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ợ systemctl yêu cầu.

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 trình quản lý hệ thống cùng với 'systemd' tính thiết thực.

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 của bạn 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ũ hơn sử dụng SysV init thay cho systemd tính thiết thực.

systemd tiện ích không có trong các phiên bản Linux trước vì nó là một bổ sung gần đây cho giỏ các tiện ích được cung cấp bởi Linux. systemctl tương thích với chức năng và màn hình với systemd tiện ích và sẽ không hoạt động với các cấu hình trước đó như SysVtrong đó hoặc là Khởi động.

Nếu bạn không sử dụng systemd, thì lỗi này được mong đợi. 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.

gaurav @ ubuntu: ~ $ sudo systemctl bắt đầu ufw [sudo] mật khẩu cho gaurav: sudo: systemctl: lệnh không tìm thấy gaurav @ ubuntu: ~ $ 

Ở đây, chúng tôi đã cố gắng khởi động Tường lửa Ubuntu (ufw) sử dụ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 bản 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 của bạn 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 với dịch vụ yêu cầu

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

dịch vụ lệnh giúp chạy SystemV init script đượ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 tiện ích trên hệ thống của bạn, bản 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 cách sử dụng dịch vụ yêu cầu.

Các dịch vụ lệnh và systemctl chức năng lệnh theo cách tương tự, 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 chịu trách nhiệm cho việc chạy hệ thống của bạn.

Hãy để chúng tôi xem dịch vụ lệnh với một hình minh họa.

Cú pháp chung:

dịch vụ sudo [service_name] [action]

Trong cú pháp trên, [hoạt động] không gian có thể bao gồm các hành động như khởi đầu, dừng lại, khởi động lại hoặc là trạng thái.

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

dịch vụ sudo ufw bắt đầu

Đầu ra:

gaurav @ ubuntu: ~ $ sudo service ufw start gaurav @ ubuntu: ~ $ sudo service ufw status ● ufw.service - Tường lửa không phức tạp Đã tải: đã tải (/lib/systemd/system/ufw.service; đã kích hoạt; giá trị đặt trước của nhà cung cấp: enableb Active: hoạt động (đã thoát) kể từ Thứ Hai 2020-09-28 11:22:34 IST; 1 giờ 5 phút trước Docs: man: ufw (8) Process: 333 ExecStart = / lib / ufw / ufw-init start im lặng (code = thoát, trạng thái = 0 / SU PID chính: 333 (mã = thoát, trạng thái = 0 / THÀNH CÔNG) 28 tháng 9 11:22:34 ubuntu systemd [1]: Đã khởi động tường lửa không phức tạp. Cảnh báo: Nhật ký đã được xoay kể từ khi thiết bị được khởi động. Đầu ra nhật ký là không đầy đủ

Đây, dịch vụ lệnh được sử dụng thay vì systemctl lệnh và nó hoạt động hoàn toàn tốt.

Hãy để chúng tôi xem thêm một ví dụ về dịch vụ lệnh để hiểu đúng về nó.

khởi động dịch vụ sudo apache2

Đầu ra:

gaurav @ ubuntu: ~ $ sudo service apache2 status ● apache2.service - Máy chủ Apache HTTP đã tải: đã tải (/lib/systemd/system/apache2.service; đã kích hoạt; giá trị đặt trước của nhà cung cấp: Drop-In: / lib / systemd / system / apache2.service.d └─apache2-systemd.conf Active: active (đang chạy) kể từ Mon 2020-09-28 11:22:47 IST; 1h 16 phút trước Process: 1172 ExecStart = / usr / sbin / apachectl start (code = đã thoát, trạng thái = 0 / SUCCE PID chính: 1248 (apache2) Nhiệm vụ: 55 (giới hạn: 4456) Nhóm CG: /system.slice/apache2.service ├─1248 / usr / sbin / apache2 -k start ├─1249 / usr / sbin / apache2 -k start └─1250 / usr / sbin / apache2 -k start 28 Tháng 9 11:22:43 ubuntu systemd [1]: Khởi động Máy chủ Apache HTTP ... 28 Tháng 9 11:22:47 ubuntu apachectl [1172 ]: AH00112: Cảnh báo: DocumentRoot [/ var / www 28 tháng 9 11:22:47 ubuntu apachectl [1172]: AH00558: apache2: Không thể tin cậy được. 28 tháng 9 11:22:47 ubuntu systemd [1]: Khởi động HTTP Apache Máy chủ. Gaurav @ ubuntu: ~ $ 

Chúng tôi đã sử dụng dịch vụ lệnh để khởi động tiện ích apache2. Sử dụng trạng thái tùy chọn với dịch vụ lệnh 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ờ hãy để chúng tôi sử dụng dừng lại hành động để dừng dịch vụ apache2 bằng cách sử dụng dịch vụ yêu cầu.

gaurav @ ubuntu: ~ $ sudo dịch vụ apache2 dừng gaurav @ ubuntu: ~ $ sudo dịch vụ apache2 dòng trạng thái 1--1 ... đang bỏ qua ... ● apache2.service - Máy chủ Apache HTTP đã tải: đã tải (/ lib / systemd / system / apache2.service; đã kích hoạt; giá trị đặt trước của nhà cung cấp: đã kích hoạt) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Đang hoạt động: không hoạt động (đã chết) kể từ Thứ Hai năm 2020-09-28 12 : 42: 06 IST; 1 giây trước Quy trình: 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) 28 tháng 9 11:22:43 ubuntu systemd [1]: Khởi động Máy chủ Apache HTTP ... 28 tháng 9 11:22:47 ubuntu apachectl [1172]: AH00112: Cảnh báo : DocumentRoot [/ var / www / html] không tồn tại 28 tháng 9 11:22:47 ubuntu apachectl [1172]: AH00558: apache2: Không thể xác định chính xác tên miền đủ điều kiện của máy chủ, sử dụng :: 1. Đặt 'S 28 tháng 9 11:22:47 ubuntu systemd [1]: Khởi động Máy chủ Apache HTTP.

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 lệnh để kiểm soát và giám sát các daemon và dịch vụ khác trong bản phân phối Linux.

Khắc phục 2: Kiểm tra systemd Bưu kiện

Đôi khi nó có thể là trường hợp chỉ systemd cài đặt gói có thể khắc phụ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 bạn.

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

sudo dpkg -l | hệ thống grep

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

gaurav @ ubuntu: ~ $ sudo dpkg -l | mật khẩu grep systemd [sudo] cho gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 hệ thống nhắn tin liên quá trình đơn giản (tích hợp systemd --user) ii libnss-systemd: amd64 237-3ubuntu10.42 amd64 nss mô-đun cung cấp năng động độ phân giải tên người dùng và nhóm ii libpam-systemd: amd64 237-3ubuntu10.42 amd64 system and service manager - PAM module ii libsystemd0: amd64 237-3ubuntu10.42 amd64 systemd method library ii libsystemd0: i386 237-3ubuntu10.42 i386 systemd tiện ích thư viện ii networkd-dispatcher 1.7-0ubuntu3.3 tất cả dịch vụ Dispatcher cho tình trạng kết nối systemd-networkd thay đổi ri python3-systemd 234-1build1 amd64 Python 3 ràng buộc cho systemd ii systemd 237-3ubuntu10.42 amd64 system and service manager ii systemd-sysv 237- Trình quản lý dịch vụ và hệ thống 3ubuntu10.42 amd64 - SysV liên kết gaurav @ ubuntu: ~ $ 

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

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

sudo apt-get cập nhật
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 - cài đặt lại systemd

Điều này sẽ giải quyết vấn đề của bạn bằng cách cài đặt systemd tính thiết thực.

Sự kết luận

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