Đối với người dùng Linux nâng cao, việc bắt đầu, dừng và khởi động lại các dịch vụ Linux là điều cần thiết. Các hoạt động này cho phép người dùng truy cập vào chức năng của từng dịch vụ. Ví dụ: để sử dụng máy chủ web, người dùng cần khởi động dịch vụ Apache hoặc để sử dụng cơ sở dữ liệu, người dùng phải khởi động dịch vụ MySQL. Quản lý các dịch vụ Linux cũng rất quan trọng đối với sự ổn định của hệ thống và có thể giúp cải thiện hiệu suất hệ thống.
Bất chấp niềm tin phổ biến, việc bắt đầu, dừng và khởi động lại các dịch vụ trong Linux tương đối đơn giản. Chúng ta sẽ làm việc với Linux, nhưng tất cả các lệnh để bắt đầu, dừng và khởi động lại các dịch vụ Linux đều có thể chạy trên CentOS, Ubuntu, Redhat, Fedora, Debian và nhiều bản phân phối khác.
Chuyển đến:
Hiểu về systemctl so với dịch vụ
Có hai công cụ quản lý chính thức cung cấp một cách nhất quán để bắt đầu, dừng, khởi động lại và quản lý các dịch vụ hệ thống trong Linux:
Cái nào bạn sử dụng sẽ phụ thuộc vào việc bản phân phối của bạn sử dụng systemd hay init. Hầu hết các bản phân phối hiện đại đã chuyển sang systemd, vì vậy systemctl là trình quản lý dịch vụ được lựa chọn. Nhưng một số thói quen cũ khó chết, vì vậy nhiều quản trị viên vẫn giữ lệnh dịch vụ cũ.
May mắn thay, các nhà phát triển của systemd đã đảm bảo duy trì dịch vụ và chuyển hướng nó đến systemctl. Để làm phức tạp thêm vấn đề, bạn có thể tìm thấy một dịch vụ ngẫu nhiên mà bạn đã cài đặt chưa được cập nhật cho dịch vụ hoặc công cụ systemctl và phải khởi động dịch vụ đó theo cách thủ công bằng /etc/rc.d (hoặc /etc/init.d).
Vì vậy, nó vẫn có thể hơi khó hiểu.
Nhưng chúng tôi đang tìm kiếm các phương pháp hay nhất ở đây và để bắt đầu, dừng hoặc khởi động lại ứng dụng trên Linux, các phương pháp hay nhất bắt đầu và kết thúc bằng systemctl.
Bắt đầu một dịch vụ Linux
Giả sử bạn muốn khởi động máy chủ Apache.
Để làm điều này:
1. Mở cửa sổ đầu cuối.
2. Chạy lệnh sudo systemctl start httpd.
Trong lệnh này:
sudo
nói với Linux rằng bạn đang chạy lệnh với tư cách là người dùng root.systemctl
quản lý các dịch vụ systemd.start
nói với lệnh systemctl để bắt đầu dịch vụ Apache.httpd
là tên của dịch vụ máy chủ web Apache.
3. Sau khi chạy lệnh, bạn sẽ nhận được thông báo sau:
The service httpd has started successfully.
Ghi chú rằng nếu dịch vụ đang chạy, bạn sẽ thấy thông báo sau:
The service httpd is already running.
Dừng dịch vụ Linux
Để dừng dịch vụ Apache:
1. Mở cửa sổ đầu cuối
2. Chạy lệnh sudo systemctl stop httpd.
3. Bây giờ bạn sẽ thấy thông báo sau:
The service httpd has been stopped successfully.
Lưu ý rằng nếu dịch vụ, trong trường hợp này là Apache, không chạy, bạn sẽ nhận được thông báo sau:
Không thể dừng dịch vụ httpd. Đơn vị httpd.service không được tải.
Hoặc bạn có thể nhận được một trong các thông báo sau:
Failed to stop service httpd. Unit httpd.service is not running.
Failed to stop service httpd. Unit httpd.service is in a failed state.
Failed to stop service httpd. Unit httpd.service is locked.
Khởi động lại dịch vụ Linux
Để khởi động lại cùng một dịch vụ (Apache):
1. Mở cửa sổ đầu cuối.
2. Chạy lệnh sudo systemctl restart httpd.
3. Dịch vụ sẽ khởi động lại và bạn sẽ được đưa trở lại dấu nhắc bash.
4. Bạn sẽ nhận được thông báo sau:
The service httpd has been restarted successfully.
Nếu dịch vụ không chạy, bạn sẽ thấy đầu ra sau:
The service httpd is not running.
Bạn cũng có thể sử dụng lệnh sau để kiểm tra trạng thái của dịch vụ trước khi thử khởi động lại:
systemctl status httpd
Bắt đầu, dừng và khởi động lại dịch vụ với việc sử dụng dịch vụ
Để làm cho vấn đề trở nên thú vị, lệnh dịch vụ vẫn hoạt động — ngay cả đối với những bản phân phối đã chuyển sang systemd và systemctl. Điều này có nghĩa là những người gõ dịch vụ theo bản năng khi cần khởi động lại dịch vụ trên Linux sẽ không nhận được lỗi “Lệnh không xác định”.
Trong trường hợp dịch vụ, lệnh sẽ chuyển hướng đến systemctl. Trên thực tế, khi bạn chạy lệnh dịch vụ trên bản phân phối hỗ trợ systemctl, bạn sẽ thấy rõ thông tin chuyển hướng (Hình A).
Hình A
Cách sử dụng lệnh dịch vụ hơi khác so với systemctl. Tên dịch vụ và các tùy chọn bắt đầu, dừng và khởi động lại được chuyển đổi:
sudo service httpd start
sudo service httpd stop
sudo service httpd restart
Trong mỗi trường hợp, bạn sẽ thấy dịch vụ được chuyển hướng đến hệ thốngnhưng dịch vụ bạn đang cố bắt đầu, dừng hoặc khởi động lại sẽ thành công.
Nó không quá phức tạp
Tôi đã làm phức tạp thêm vấn đề bằng cách đề cập đến các phương pháp khởi động, dừng và khởi động lại dịch vụ cũ trong Linux. Sự thật mà nói, quá trình kiểm soát các dịch vụ trong Linux không quá phức tạp; bạn chỉ cần hiểu đúng lệnh để sử dụng.
Để tìm hiểu thêm về những gì systemctl có thể làm cho bạn, hãy đảm bảo đưa ra lệnh man systemctl và đọc trang hướng dẫn.