CodeGym /Các khóa học /Docker SELF /Những điều cơ bản về quản lý dịch vụ: các lệnh systemctl ...

Những điều cơ bản về quản lý dịch vụ: các lệnh systemctl (khởi động, dừng, khởi động lại dịch vụ)

Docker SELF
Mức độ , Bài học
Có sẵn

Những điều cơ bản về quản lý dịch vụ: các lệnh systemctl (khởi động, dừng, khởi động lại dịch vụ)

1. Services trong Linux là gì?

Services là nền tảng của bất kỳ bản phân phối Linux nào hiện đại. Muốn chạy web server của bạn trên Nginx? Hãy khởi động và cấu hình service tương ứng. Muốn database MySQL hoạt động? Lại là một service nữa. Ngay cả cron yêu thích của bạn, thứ sẽ chạy các bash-script đáng khen ngợi, nó cũng là một service. Quản lý services là một kỹ năng mà bạn chắc chắn sẽ áp dụng không chỉ trong công việc mà còn cho các dự án cá nhân của mình. À mà, trong các buổi phỏng vấn, câu hỏi "Làm thế nào để bạn dừng một service?" xuất hiện thường xuyên đấy, hơn bạn nghĩ nhiều.

Định nghĩa và vai trò

Service trong Linux là một chương trình chạy ngầm (tức là như một daemon, từ tiếng Anh "daemon"). Những chương trình này có thể tự động chạy khi hệ thống khởi động hoặc được khởi động thủ công khi cần. Chúng chịu trách nhiệm thực hiện các nhiệm vụ cụ thể, chẳng hạn như:

  • Xử lý các yêu cầu web (ví dụ: nginx/apache).
  • Hỗ trợ truy cập từ xa (ví dụ: openssh).
  • Thực hiện các nhiệm vụ theo lịch trình (ví dụ: cron).

Về bản chất, services chính là những "con ngựa thồ" thực hiện các nhiệm vụ không dễ thấy nhưng lại cực kỳ quan trọng cho hệ thống hoạt động.


2. Cơ bản quản lý dịch vụ với systemctl

systemctl là gì?

Bắt đầu với cái này nhé, systemctl — đây là lệnh chính để quản lý dịch vụ trong các hệ thống sử dụng systemd. Nếu hệ thống bạn đang chạy trên một bản phân phối Linux hiện đại (như Ubuntu, Fedora hoặc CentOS), rất có thể nó đang dùng systemd.

Các chức năng cơ bản

  1. Chạy dịch vụ: bắt đầu hoạt động của dịch vụ nếu nó đang bị tắt.
  2. Dừng dịch vụ: dừng hoạt động của dịch vụ.
  3. Khởi động lại dịch vụ: dừng và khởi động lại dịch vụ.
  4. Kiểm tra trạng thái: xem trạng thái hiện tại của dịch vụ.

Dưới đây là cấu trúc cơ bản của lệnh:

sudo systemctl [hành động] [tên_dịch_vụ]

Chạy và dừng dịch vụ

Chạy:

Hãy tưởng tượng rằng bạn đã cài đặt máy chủ web nginx và muốn khởi động nó. Đây chính là lúc cần dùng lệnh start:

sudo systemctl start nginx

Dừng:

Nhưng nếu bạn muốn tạm thời tắt máy chủ web thì sao? Lệnh stop sẽ cứu bạn:

sudo systemctl stop nginx

Khởi động lại dịch vụ

Khởi động lại dịch vụ cần thiết để áp dụng các thay đổi cấu hình hoặc đơn giản là làm mới dịch vụ (nôm na là cho nó uống cà phê và nhắc rằng phải làm việc). Dùng lệnh restart:

sudo systemctl restart nginx

Kiểm tra trạng thái

Bạn không chắc nginx có đang chạy không? Lệnh status sẽ cung cấp đầy đủ thông tin:

sudo systemctl status nginx

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

  • ID của tiến trình (PID).
  • Thời gian khởi chạy.
  • Nhật ký lỗi nếu có gì đó không ổn.

Ví dụ đầu ra:

nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
   ...

3. Tự động chạy services

Bật chế độ tự động chạy

Để service tự động chạy mỗi khi hệ thống khởi động, hãy dùng lệnh này:

sudo systemctl enable nginx

Tắt chế độ tự động chạy

Còn nếu bạn không muốn service tự động khởi chạy khi bật hệ thống:

sudo systemctl disable nginx

Dưới đây là cách kiểm tra đơn giản xem chế độ tự động chạy đã được bật chưa:

systemctl is-enabled nginx

Thực hành quản lý services

Hãy thực hiện bài tập tổng hợp với ví dụ về dịch vụ cron.

  1. Khởi động dịch vụ cron:

    sudo systemctl start cron
    
  2. Kiểm tra xem nó có hoạt động không:

    sudo systemctl status cron
    

    Hãy chắc chắn rằng trạng thái là "active (running)".

  3. Dừng dịch vụ cron:

    sudo systemctl stop cron
    

    Kiểm tra xem trạng thái có chuyển thành "inactive (dead)" không.

  4. Khởi động lại dịch vụ cron:

    sudo systemctl restart cron
    

4. Sự khác biệt giữa các dịch vụ đang chạy, bị tắt và gặp lỗi

Các dịch vụ có thể ở các trạng thái khác nhau. Dưới đây là các dạng chính:

  1. Active (running) — dịch vụ đang hoạt động; tất cả đều ổn.
  2. Inactive (dead) — dịch vụ đã dừng.
  3. Failed — xảy ra lỗi khi khởi động, dừng hoặc thực hiện dịch vụ.

Để nhanh chóng tìm tất cả các dịch vụ đang ở trạng thái lỗi, sử dụng:

systemctl --failed

5. Lỗi phổ biến và những rắc rối

Lỗi: Unit not found

Nếu bạn nhận được thông báo như sau:

Failed to start nginx.service: Unit nginx.service not found.

Điều này có thể có nghĩa là dịch vụ bạn cần không được cài đặt hoặc tên của nó bị sai. Hãy kiểm tra tên chính xác:

systemctl list-unit-files | grep nginx

Lỗi quyền truy cập

Nếu bạn quên chạy lệnh với quyền sudo, rất có thể bạn sẽ nhận được từ chối truy cập:

Permission denied

Đừng quên thêm sudo trước các lệnh systemctl.


6. Ứng dụng trong dự án thực tế

Quản lý dịch vụ là việc mà bạn sẽ sử dụng trong bất kỳ vai trò nào liên quan đến Linux:

  • DevOps: tự động hóa và quản lý tất cả các dịch vụ hệ thống.
  • Quản trị máy chủ: theo dõi trạng thái của web server, cơ sở dữ liệu và các dịch vụ khác.
  • Phát triển trên Linux: bạn cần hiểu cách quản lý các dịch vụ liên quan đến dự án của mình (ví dụ như khởi chạy server phát triển).

Như vậy, việc biết lệnh systemctl không chỉ là một kỹ năng trừu tượng mà còn là một công cụ thực sự để làm việc. Ví dụ: cần khởi động lại web server sau khi cập nhật trang web? Một lệnh gọi sudo systemctl restart nginx — và xong việc!

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION