/ / Cách tạo một dịch vụ systemd mới trên Linux

Cách tạo một dịch vụ systemd mới trên Linux

systemd là trình quản lý dịch vụ cho nhiều bản phân phối Linux nổi tiếng. Dịch vụ là một đơn vị của chương trình thường chạy trong nền. Về bản chất, các dịch vụ sẽ tự động khởi động ngay khi hệ thống khởi động và có thể chạy mà không cần giám sát.




Nếu bạn cần tạo một tác vụ hoặc chương trình tự động bắt đầu thực thi mỗi khi bạn khởi động hoặc khởi động lại hệ thống của mình, bạn có thể cân nhắc tạo một dịch vụ mới. Hãy tìm hiểu cách tạo một dịch vụ systemd mới, tùy chỉnh trên Linux.



Bước 1: Tạo tệp dịch vụ

Có một số bước cần thiết để tạo tệp dịch vụ systemd mới. Việc đầu tiên là tạo tệp đơn vị cho dịch vụ. Trước khi bạn tạo một tệp dịch vụ, bạn phải hiểu cấu trúc của nó.

Hãy nghiên cứu tệp dịch vụ bằng cách lấy một tệp dịch vụ thực, đang hoạt động từ hệ thống Linux của bạn. Bên dưới, bạn có thể xem tệp dịch vụ cho dịch vụ daemon vmtools.

tập tin dịch vụ daemon vmtools-2

Dịch vụ cụ thể này có thể không có trên hệ thống của bạn trừ khi bạn cũng đang chạy Linux trên VMware có cài đặt các công cụ VMware. Dịch vụ được đề cập không quan trọng vì tất cả các dịch vụ, hay đúng hơn là các tệp đơn vị dịch vụ, có cùng cấu trúc cơ sở với một số tùy chỉnh theo yêu cầu.

Tất cả các tệp dịch vụ systemd phải có ba phần: [Service], [Unit][Install]và một vài tham số dưới mỗi phần. Đây là những gì mỗi phần chứa và tại sao chúng lại quan trọng:

1 đơn vị

Các Đơn vị bao gồm siêu dữ liệu quan trọng như mô tả và phần phụ thuộc của dịch vụ. Nó có ba tham số: Sự miêu tả, TrướcSau đó. Như điều tương tự gợi ý, Sự miêu tả tham số cung cấp một số bối cảnh của dịch vụ và những gì nó làm.

Các TrướcSau đó các tham số xác định các điều kiện cần đáp ứng để dịch vụ thực thi. Ví dụ: nếu bạn đang bắt đầu một dịch vụ máy chủ web, bạn sẽ muốn nó chỉ bắt đầu sau khi dịch vụ mạng trực tuyến. Vì vậy, bạn sẽ đặt giá trị của Sau đó tham số cho dịch vụ mạng.

2. Dịch vụ

Các Dịch vụ phần chứa hai tham số bắt buộc: ExecStart, Kiểuvà một vài tham số tùy chọn khác như ExecReloadvà hơn thế nữa.

ExecStart xác định lệnh sẽ được thực thi khi dịch vụ bắt đầu trong khi Kiểu tham số xác định loại quá trình để sinh sản.

3. Cài đặt

Phần này và dữ liệu của nó được gọi bất cứ khi nào bạn bật hoặc tắt dịch vụ bằng lệnh systemctl.

Nó có một vài tham số. Một trong những cái phổ biến và cần thiết là MuốnBy. Các MuốnBy tham số xác định các đơn vị mục tiêu sẽ bắt đầu bất cứ khi nào dịch vụ được bật. Giá trị mặc định là nhiều người dùng.mục tiêu.

Các tham số được đề cập ở đây không phải là các tham số duy nhất bạn có thể đặt trong tệp đơn vị. Bạn có thể lấy danh sách đầy đủ các tham số từ tài liệu systemd.exec chính thức hoặc bằng cách nhập vào người đàn ông systemd.exec trong một thiết bị đầu cuối.

Tệp đơn vị dịch vụ systemd luôn kết thúc bằng dấu “.dịch vụ” phần mở rộng và phải được lưu trữ trong /etc/systemd/system/ danh mục. Tạo tệp dịch vụ bằng lệnh touch với các đặc quyền nâng cao bằng cách thêm tiền tố vào tệp đó sudo yêu cầu:

 sudo touch /etc/systemd/system/<filename>.service  

Bây giờ bạn đã tạo tệp dịch vụ, hãy bắt đầu điền cú pháp cần thiết để làm cho dịch vụ hợp lệ và hoạt động.

Bước 2: Định cấu hình tệp dịch vụ

cấu hình của dịch vụ nmap tùy chỉnh

Để trình diễn, bạn sẽ tạo một dịch vụ mẫu thực thi Nmap để quét các cổng trên máy của bạn và lưu kết quả đầu ra trong một tệp ba mươi giây một lần. Để đạt được nhiệm vụ này, đây là cách cấu trúc tệp đơn vị dịch vụ:

 [Unit]
Description=Demonstration of custom nmap service.
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/nmap -sS -O -oN /home/<user>/results.txt localhost
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

Mặc dù các tham số được đề cập ở đây đã được giải thích trước đây, nhưng chúng ta hãy tìm hiểu xem chúng ảnh hưởng như thế nào đến dịch vụ mới tạo của chúng ta và cũng khám phá những tham số mới được giới thiệu trong bài học này: Khởi động lại, Khởi động lạiSecNgười dùng.

Dưới đây là ý nghĩa của các tham số trong mỗi phần:

  • Sự miêu tả: Văn bản mà con người có thể đọc được để mô tả các chức năng của dịch vụ.
  • Sau=mạng.mục tiêu: Ra lệnh cho systemd rằng dịch vụ này phụ thuộc vào mạng.mục tiêu và chỉ nên bắt đầu sau khi mạng.mục tiêu dịch vụ đã được bắt đầu. Lưu ý rằng Sau đó không được sử dụng để thiết lập bất kỳ mối quan hệ phụ thuộc trực tiếp nào, nó chỉ hoạt động như một trình kích hoạt.
  • Loại = đơn giản: Có nhiều loại dịch vụ. Tuy nhiên, dịch vụ trong phần trình diễn này là một quy trình thông thường và do đó chúng tôi tuyên bố như vậy. Bạn có thể tìm thấy tất cả các giá trị khác nhau cho điều này trên trang tài liệu chính thức được liên kết trước đó.
  • Khởi động lại = luôn luôn: Điều này có nghĩa là bất cứ khi nào dịch vụ thoát, dịch vụ sẽ luôn khởi động lại.
  • Khởi động lạiSec=30: Điều này đặt khoảng thời gian giữa mỗi lần bắt đầu dịch vụ thành 30 giây.
  • Người dùng = gốc: Điều này xác định rằng dịch vụ sẽ chạy với tư cách là người dùng gốc. Trong trường hợp này, đây là bước phải làm vì Nmap sẽ không thể chạy nếu không có quyền root.
  • Thực thiBắt đầu: Lệnh này giữ đường dẫn tuyệt đối đến chương trình sẽ được thực thi cùng với tất cả các cờ hoặc đối số bắt buộc cần thiết để chương trình hoạt động bình thường.
  • WantedBy=multi-user.target: Tham số này trong tệp dịch vụ chỉ định mục tiêu nào sẽ bao gồm hoặc “muốn” dịch vụ. Khi một dịch vụ được bao gồm trong một mục tiêu, điều đó có nghĩa là dịch vụ đó sẽ bắt đầu khi hệ thống đạt đến mục tiêu đó trong quá trình khởi động. Trong trường hợp này, dịch vụ sẽ bắt đầu khi hệ thống chuyển sang chế độ nhiều người dùng. Chế độ nhiều người dùng là trạng thái hệ thống được khởi động hoàn toàn và cho phép nhiều người dùng đăng nhập và sử dụng hệ thống.

Bước 3: Kích hoạt và bắt đầu dịch vụ

trạng thái dịch vụ nmap-1

Bây giờ bạn đã tạo tệp đơn vị, các bước duy nhất còn lại để kích hoạt dịch vụ của bạn là kích hoạt và chạy nó. Bạn có thể kích hoạt và bắt đầu dịch vụ của mình bằng lệnh systemctl.

Đây là cách sử dụng systemctl để bật, bắt đầu và kiểm tra trạng thái dịch vụ của bạn:

 sudo systemctl enable <filename>.service
sudo systemctl start <filename>.service
sudo systemctl status <filename>.service

Bây giờ, dịch vụ tùy chỉnh của bạn sẽ được thiết lập và chạy! Trong trường hợp này, bạn sẽ thấy quá trình quét Nmap chạy ba mươi giây một lần và đầu ra được lưu trữ trong results.txt tập tin trong thư mục chính.

Thiết lập Dịch vụ systemd trên Linux thật dễ dàng!

Mặc dù thiết lập một dịch vụ tùy chỉnh từ đầu có vẻ khó khăn lúc đầu, nhưng đó là một cách khá dễ dàng để thiết lập một quy trình tự thực hiện, không cần giám sát để thực hiện các nhiệm vụ lặp đi lặp lại cho bạn và tăng năng suất của bạn.

Trong dịch vụ demo, chúng tôi hầu như không tìm hiểu sơ qua về cách bạn có thể định cấu hình và thiết lập dịch vụ. Để tìm hiểu tất cả về cách bạn có thể tùy chỉnh dịch vụ của mình, bạn nên xem qua tài liệu chính thức được liên kết trong ghi chú.

Nếu bạn cảm thấy việc thiết lập và duy trì một dịch vụ là quá nhiều nhiệm vụ, hãy cân nhắc kiểm tra một cách khác để tự động hóa các tác vụ lặp đi lặp lại trên Linux.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *