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ề systemctl
và systemd
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ư SysV
trong đó
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.