Thông thường, cần phải bật hoặc tắt các service tạm thời hoặc vĩnh viễn trên hệ thống Ubuntu của chúng ta. Đôi khi, chúng ta có thể yêu cầu một số service nhất định tự động khởi động khi khởi động, chẳng hạn như ssh hoặc web server và đôi khi chúng ta có thể cần phải tắt các service mà chúng ta không còn yêu cầu nữa và đang tiêu tốn CPU và RAM.
Trong hướng dẫn này, chúng ta xem xét cách chúng ta có thể bật và tắt các dịch vụ trên Ubuntu. Để làm điều này, trước tiên chúng ta phải hiểu rằng có 3 hệ thống init chính cho Ubuntu
- Systemd
- Upstart
- SysV
Mỗi hệ thống init có một cách khởi động và dừng service khác nhau. Chúng ta sẽ xem xét từng thứ trong số này.
Cách bật và tắt các dịch vụ trong Systemd init
Để bắt đầu một dịch vụ trong systemd, hãy chạy lệnh như sau:
systemctl start-service-name
Ví dụ: để khởi động dịch vụ web apache, hãy chạy
systemctl start apache2
Để xác minh rằng service đang chạy, hãy chạy
systemctl status apache2
Đầu ra
Để dừng dịch vụ đang chạy dịch vụ
systemctl dừng apache2
Để xác nhận rằng dịch vụ không chạy, hãy chạy
trạng thái systemctl apache2
Output
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Thu 2018-03-15 17:09:05 UTC; 35s ago Docs: man:systemd-sysv-generator(8) CGroup: /system.slice/apache2.service ├─2499 /usr/sbin/apache2 -k start ├─2502 /usr/sbin/apache2 -k start └─2503 /usr/sbin/apache2 -k start Mar 15 17:09:04 ip-172-31-41-251 systemd[1]: Starting LSB: Apache2 web server... Mar 15 17:09:04 ip-172-31-41-251 apache2[2475]: * Starting Apache httpd web ser Mar 15 17:09:05 ip-172-31-41-251 apache2[2475]: * Mar 15 17:09:05 ip-172-31-41-251 systemd[1]: Started LSB: Apache2 web server.
Để bật service apache2 khi khởi động server
systemctl stop apache2
Để tắt dịch vụ apache2 chạy khi khởi động
systemctl disable apache2
Để khởi động lại service
systemctl restart apache2
Để kiểm tra xem dịch vụ hiện đã được định cấu hình để bắt đầu vào lần khởi động tiếp theo hay chưa
systemctl is-enabled apache2
Output
Executing /lib/systemd/systemd-sysv-install is-enabled apache2 enabled
Để kiểm tra xem service có đang hoạt động hay không
systemctl is-active apache2
Output
active
Cách xóa hoàn toàn các service Systemd
Điều gì sẽ xảy ra nếu bạn đã cài đặt một gói và sau đó quyết định rằng bạn không cần nó nữa. Làm thế nào để bạn xóa nó hoàn toàn? Làm theo các lệnh bên dưới.
Đầu tiên, dừng dịch vụ
systemctl stop service-name
Sau đó, tắt dịch vụ
systemctl disable service-name
Xóa dịch vụ trong systemd
rm /etc/systemd/system/service-name rm /etc/systemd/system/service-name/[related symlinks]
Reload systemd
systemctl daemon-reload
Cuối cùng thì chạy,
systemctl reset-failed
Cách bật và tắt các service trong Upstart init
Hệ thống Upstart init được công bố ngay trước systemd Nó được sử dụng trong Ubuntu 9.10 đến Ubuntu 14.10. Sau đó, nó đã bị loại bỏ dần để mở đường cho systemd init trong Ubuntu 15.04 và các phiên bản mới hơn. Trong ví dụ này, hãy xem cách chúng ta có thể bắt đầu và dừng, bật và tắt các service trong Ubuntu 14.04.
Upstart sử dụng các tệp cấu hình để kiểm soát các service. Các tệp này được giữ trong thư mục /etc/init. Các tệp này được tạo thành từ các plain text được sắp xếp theo các khổ và mỗi khổ mô tả một service và cách hoạt động của nó.
Để kiểm tra xem một service đang chạy hay không, hãy chạy lệnh dưới đây
initctl status service-name
HOẶC LÀ
service service-name status
HOẶC LÀ
status service-name
Trong ví dụ này, chúng ta sẽ kiểm tra trạng thái của cúp, một print server Linux.
initctl status cups
HOẶC LÀ
service cups status
HOẶC LÀ
status cups
Output
cups start/running, process 3029
Để dừng service, hãy chạy lệnh dưới đây
initctl stop cups
HOẶC LÀ
service cups stop
HOẶC LÀ
stop cups
Output:
cups stop/waiting
Để kích hoạt một service trong Upstart init
Trong tệp /etc/init/*.conf, bạn sẽ tìm thấy chỉ thị ” resawn ” khởi động một service nếu nó gặp sự cố bất ngờ hoặc khi hệ thống khởi động lại. Nó thường được kích hoạt theo mặc định.
Ví dụ: trong tệp /etc/init/cups.conf bên dưới,
Đối số đầu tiên (3) là số lần thử khởi động lại và đối số thứ hai (12) là khoảng thời gian giữa các lần thử lại. Nếu nó không tự khởi động lại, nó sẽ được giữ ở trạng thái dừng.
Tắt một service trong upstart init
chạy lệnh dưới đây
echo manual >> /etc/init/service.override
Điều này tạo ra một tệp ghi đè vô hiệu hóa một service mà không làm thay đổi định nghĩa công việc.
Đối với service cup, lệnh sẽ là
echo manual >> /etc/init/cups.override
Khi hệ thống khởi động lại , cup sẽ ở trạng thái dừng. Nếu bạn muốn kích hoạt lại service, bạn phải xóa tệp /etc/init/cups.override.
Công cụ Sysv-rc-conf
Đây là một giao diện điều khiển dựa trên văn bản cung cấp cho bạn một tổng quan về service khác nhau và runlevel họ đang lên kế hoạch để bắt đầu. Nó có thể được cài đặt bằng lệnh sau
apt-get install sysv-rc-conf
Để chạy tool này, hãy chạy
sysv-rc-conf
Jobs-Admin tool
Đây là một tính năng khác cho phép bạn kiểm soát các dịch vụ và quy trình trong môi trường GUI . Bạn có thể cài đặt cái này bằng cách chạy.
apt-get install job-admin
Cách bật và tắt các service trong SysV init
Để kích hoạt một dịch vụ trong SysV init run
update-rc.d enable service-name
Ví dụ: Nếu bạn muốn bật apache, bạn sẽ chạy
update-rc.d enable apache2
Để tắt một service, hãy chạy
update-rc.d disable service-name
Ví dụ
update-rc.d disable apache2
Gần như tất cả các hệ thống Linux đều chạy trên Systemd init Từ Ubuntu, Debian, RHEL và CentOS. Do đó, bạn sẽ phát hiện ra rằng mình sẽ sử dụng nhiều lệnh systemctl hơn để start, stop, enable và disable các service. Tôi hoan nghênh bạn thử các lệnh như được hiển thị trong bài viết này. Cảm ơn bạn.