Giảm 50% tất cả các gói, thời gian có hạn. Bắt đầu từ $2.48/mo
7 phút còn lại
Máy chủ & Hệ điều hành

Cách khắc phục lỗi systemctl: Command Not Found trên Ubuntu

Nick Bạc By Nick Bạc 7 phút đọc Cập nhật 20 tháng 2, 2025
Cách khắc phục lỗi: systemctl command not found

Một trong những công cụ mạnh mẽ và tiện dụng nhất dành cho người dùng Linux, đặc biệt với các bản phân phối hiện đại như Ubuntu, là lệnh systemctl. Tiện ích dòng lệnh này thường dùng để tương tác với systemd, trình quản lý hệ thống và dịch vụ.

Thông qua lệnh này, bạn có thể quản lý các dịch vụ hệ thống, xem trạng thái của chúng, khởi động hoặc dừng chúng, và bật hoặc tắt chúng khi khởi động hệ thống. Khá tiện lợi, phải không? Nhưng nếu lệnh systemctl không được tìm thấy hoặc không được nhận ra, bạn sẽ gặp phải sudo: systemctl: lệnh không tìm thấy lỗi.

Hãy cùng tìm hiểu lỗi "systemctl: command not found" là gì, những nguyên nhân phổ biến khiến bạn gặp lỗi này, và cách khắc phục nó.

systemctl: Command Not Found là gì?

Nói cách khác, lỗi "systemctl: command not found" xuất hiện khi lệnh systemctl không có sẵn hoặc không thể truy cập trong môi trường hiện tại. Nguyên nhân có thể là do môi trường không phải là môi trường hệ thống hoặc gói systemd chưa được cài đặt trên hệ thống.

Có thể là package systemd chưa được cài đặt, hoặc distro Linux của bạn không dùng systemd mà sử dụng các hệ thống quản lý dịch vụ cũ hơn như init.d. Khả năng khác là biến môi trường PATH không chứa thư mục chứa systemctl, nên shell của bạn không tìm thấy nó.

Bây giờ bạn đã biết những vấn đề có thể xảy ra với hệ thống dẫn đến lỗi "systemctl: command not found". Hãy cùng tìm hiểu cách xác định chính xác vấn đề của bạn và cách khắc phục nó.

Khắc phục lỗi systemctl: Command Not Found

Ở các bước tiếp theo, chúng ta sẽ kiểm tra xem hệ thống của bạn có cài đặt systemd hay không, cũng như xác nhận systemctl có được sử dụng hay không, và tìm đường dẫn của systemctl. Sau khi xác nhận vấn đề, chúng ta sẽ thực hiện các bước cần thiết để khắc phục lỗi.

1. Kiểm tra xem hệ thống của bạn có sử dụng systemd

Vì Ubuntu systemctl chỉ hoạt động nếu bạn đã cài đặt gói systemd, trước tiên chúng ta sẽ kiểm tra xem hệ thống của bạn có được cấu hình để sử dụng systemd hay không bằng cách chạy lệnh sau:

ps -p 1 -o comm=

Hoặc bạn có thể kiểm tra phiên bản systemd bằng lệnh sau:

systemd --version

Nếu kết quả hiển thị systemd, thì systemd là init system của bạn và sẽ có Ubuntu systemctl được cài đặt. Tuy nhiên, nếu kết quả hiển thị init hoặc một process manager khác, điều đó có nghĩa hệ thống của bạn đang sử dụng một initialization system khác, và systemctl sẽ không hoạt động trừ khi bạn chuyển sang systemd.

Nếu bạn đang dùng hệ thống khởi động cũ như Upstart hoặc SysVinit và muốn chuyển sang systemd để sử dụng systemctl, hãy làm theo các bước sau:

1. Cài đặt systemctl bằng cách cài đặt systemd bằng lệnh sau:

sudo apt install systemd-sysv

2. Khởi động lại hệ thống bằng lệnh này:

sudo reboot

3. Kiểm tra xem hệ thống của bạn có đang sử dụng systemd không:

ps -p 1 -o comm=

Kết quả đầu ra sẽ hiển thị systemd.

2. Đảm bảo systemd Được Cài đặt Đúng cách

Trong trường hợp bình thường, khi systemd được cài đặt và chạy như init system của bạn, lệnh systemctl sẽ hoạt động bình thường. Nếu không, điều đó có nghĩa là gói systemd bị thiếu hoặc cài đặt không đúng cách.

Lưu ý rằng nếu bạn đang sử dụng phiên bản tối thiểu của Ubuntu, chẳng hạn như container hoặc instance đám mây Docker, thì systemd có thể không được cài đặt theo mặc định. Để cài đặt systemctl thông qua cài đặt systemd, hãy chạy các lệnh sau:

sudo apt update
sudo apt install systemd

Sau khi cài đặt, kiểm tra xem lệnh systemctl có khả dụng không.

3. Kiểm tra PATH của systemctl

Một vấn đề phổ biến với lỗi systemctl not found là systemctl có thể được cài đặt, nhưng nó không nằm trong PATH của hệ thống bạn. Để kiểm tra xem các tệp nhị phân systemd có tồn tại trong các thư mục điển hình như /bin, /usr/bin, hoặc /usr/local/bin hay không, bạn có thể sử dụng lệnh sau:

which systemctl

Nếu systemctl được tìm thấy trong bất kỳ thư mục nào được liệt kê trong PATH, bạn sẽ nhận được kết quả đầu ra như sau:

/usr/bin/systemctl

Nếu systemctl không được tìm thấy trong bất kỳ thư mục nào trong PATH, lệnh which sẽ không trả về gì.

Tuy nhiên, systemctl vẫn có thể không hoạt động ngay cả khi nó được tìm thấy trong các thư mục của bạn. Điều này là vì systemctl có thể nằm trong một thư mục không được đưa vào PATH. Trong tình huống này, bạn phải xác minh xem thư mục chứa systemctl có phải là một phần của hệ thống bạn hay không bằng lệnh sau:

echo $PATH

Kết quả đầu ra sẽ giống như sau:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Bây giờ, tất cả bạn cần làm là kiểm tra xem thư mục mà systemctl nằm trong đó (mà bạn lấy được từ lệnh which) có được đưa vào các thư mục được liệt kê trong kết quả đầu ra từ lệnh echo $PATH hay không.

Nếu thư mục của systemctl không được đưa vào kết quả đầu ra của echo $PATH, bạn sẽ phải thêm nó vào biến PATH của bạn. Để làm điều này, bạn phải chạy lệnh sau:

cho Người dùng shell Bash, mở tệp ~/.bashrc trong trình soạn thảo văn bản:

nano ~/.bashrc

Thêm dòng sau vào cuối tệp:

export PATH=$PATH:/usr/bin

/usr/bin là thư mục điển hình nơi systemctl được đặt trong ví dụ này.

Bây giờ, hãy lưu và đóng tệp bằng cách nhấn CTRL + X, sau đó Y để xác nhận, và Enter để lưu.

cho Người dùng Zsh, Mở tệp ~/.zshrc trong trình soạn thảo văn bản:

nano ~/.zshrc

Thêm dòng sau vào cuối tệp:

export PATH=$PATH:/usr/bin

/usr/bin là thư mục điển hình nơi systemctl được đặt trong ví dụ này.

Bây giờ, hãy lưu và đóng tệp bằng cách nhấn CTRL + X, sau đó Y để xác nhận, và Enter để lưu.

Sau khi hoàn thành các bước trên, hãy sử dụng lệnh echo $PATH để xác minh xem thư mục systemctl của bạn có được thêm vào PATH hay không. Bây giờ, bạn sẽ có thể chạy systemctl mà không gặp lỗi "systemctl: command not found".

4. Cài đặt lại systemd

Nếu các bước sửa chữa trước đó không hoạt động và bạn vẫn gặp lỗi command not found, việc cài đặt lại systemd hoàn toàn có thể giải quyết vấn đề. Để làm điều này, hãy chạy các lệnh sau:

sudo apt purge systemd
sudo apt install systemd

Sau đó, khởi động lại hệ thống của bạn bằng lệnh này:

sudo reboot

Kiểm tra xem systemctl có hoạt động không.

5. Xác Minh systemd Được Cấu Hình Đúng

Đôi khi, vấn đề có thể đơn giản như một cài đặt systemd bị cấu hình sai, dẫn đến lỗi "systemctl: command not found". Để khắc phục vấn đề này, bạn chỉ cần chạy lệnh sau đây:

sudo dpkg-reconfigure systemd

6. Windows Subsystem for Linux Lỗi Thời (WSL)

Trong trường hợp hiếm gặp khi bạn đang sử dụng Ubuntu dưới WSL (Hệ thống con Windows cho Linux) bạn cần biết rằng các phiên bản WSL cũ hơn, chẳng hạn như WSL 1, không hỗ trợ systemctl một cách tự nhiên, vì vậy bất kể bạn sử dụng cách khắc phục nào ở trên, bạn sẽ không thể chạy systemctl.

Nếu bạn muốn tận dụng các chức năng của systemctl, bạn sẽ phải nâng cấp lên WSL 2, phiên bản này hỗ trợ systemd tốt hơn. Nếu bạn không chắc chắn mình đang sử dụng WSL hay không, bạn có thể kiểm tra bằng lệnh sau:

uname -a

Nếu kết quả đầu ra có nhắc đến WSL, thì đó là lý do bạn thấy lỗi "systemctl: command not found".

7. Sử Dụng sudo service Làm Giải Pháp Thay Thế Cho systemctl

Nếu bạn gặp lỗi "systemctl: command not found" vì hệ thống của bạn không sử dụng systemd, bạn có thể dùng lệnh sudo service để quản lý dịch vụ. Lệnh này hoạt động với các hệ thống khởi động cũ hơn như SysVinit hoặc Upstart. Điều này hữu ích cho các hệ thống Ubuntu dựa vào init scripts thay vì systemd.

Ví dụ, để khởi động một dịch vụ, bạn sẽ chạy:

sudo service <service_name> start

Suy nghĩ cuối cùng

systemd và tiện ích dòng lệnh systemctl của nó đã thay thế hầu hết các hệ thống khởi động cũ hơn khác như SysVinit và Upstart. Mặc dù systemd không phải là lựa chọn init system của tất cả mọi người do thiết kế khối và triết lý không phải Unix của nó, systemd vẫn được coi là lựa chọn phổ biến. Hy vọng bạn đã có thể giải quyết lỗi lệnh systemctl không khả dụng, vì không thể sử dụng tiện ích dòng lệnh của systemd sẽ hạn chế nghiêm trọng khả năng của nó.

Câu hỏi thường gặp

systemctl là gì và lỗi "systemctl: Command Not Found" có nghĩa là gì?

systemctl là một công cụ dòng lệnh được sử dụng để quản lý dịch vụ trong các hệ thống Linux chạy systemd, chẳng hạn như Ubuntu. Lỗi "systemctl: command not found" xảy ra khi công cụ không khả dụng hoặc không thể truy cập, thường là vì hệ thống không sử dụng systemd hoặc gói systemd chưa được cài đặt.

systemctl có khả dụng trên tất cả các phiên bản Ubuntu không?

Không, systemctl không khả dụng trên tất cả các phiên bản Ubuntu. systemctl là một phần của hệ thống init systemd, là mặc định trong hầu hết các phiên bản Ubuntu hiện đại (từ 15.04 trở đi). Các phiên bản cũ hơn hoặc các cài đặt tối thiểu nhất định có thể sử dụng các hệ thống init thay thế như SysVinit hoặc Upstart.

Chia sẻ

Bài viết mới từ blog

Tiếp tục đọc.

Những Ứng Dụng Self-Hosted Tốt Nhất Bạn Có Thể Chạy với Cosmos Cloud hình ảnh bìa với các bảng điều khiển ứng dụng xung quanh một bảng điều khiển Cosmos.
Máy chủ & Hệ điều hành

Những Ứng Dụng Self-Hosted Tốt Nhất Bạn Có Thể Chạy với Cosmos Cloud: Tệp, Media, Mật khẩu, Tự động hóa & Hơn nữa!

Sau khi bạn đã thiết lập Cosmos Cloud và muốn xem những ứng dụng nào phù hợp với nó, hoặc có thể bạn chưa quyết định sử dụng Cosmos và chỉ muốn biết nó phù hợp với quy trình làm việc của bạn như thế nào

Nick BạcNick Bạc Đọc trong 16 phút
Portainer so với Cosmos Cloud để Quản lý Ứng Dụng Docker bìa có sơ đồ thiết lập hybrid và khối điều hành so với khối truy cập.
Máy chủ & Hệ điều hành

Portainer so với Cosmos Cloud: Lựa Chọn Tốt Nhất cho Quản Lý Ứng Dụng Docker

Nếu bạn đã biết về Docker và chỉ muốn cách rõ ràng hơn để chạy một stack ứng dụng phát triển, đây là câu trả lời ngắn gọn cho Portainer so với Cosmos Cloud. Portainer là lựa chọn mạnh hơn cho

Nick BạcNick Bạc 14 phút đọc
Cosmos Cloud so với CasaOS so với Umbrel biểu đồ tính năng hiển thị ba đường dẫn self-hosted trong một thế giới mạng đám mây trừu tượng.
Máy chủ & Hệ điều hành

Cosmos Cloud so với CasaOS so với Umbrel: Nền Tảng Self-Hosted Nào Phù Hợp với Thiết Lập của Bạn?

Câu trả lời ngắn gọn là CasaOS vẫn là nơi dễ nhất để bắt đầu, Umbrel có cảm giác được tuyển chọn sạch nhất, và Cosmos Cloud có ý nghĩa hơn khi bạn muốn kiểm soát chặt chẽ hơn đối với

Nick BạcNick Bạc 11 phút đọc

Sẵn sàng triển khai? Từ $2.48/tháng.

Cloud độc lập, hoạt động từ 2008. AMD EPYC, NVMe, 40 Gbps. Hoàn tiền trong 14 ngày.