Viết tập tin dịch vụ systemd cơ bản


103

Tôi đang phát triển một ứng dụng Nodejs mà người dùng tương tác qua HTTP trên localhost. Thực tế không có tham số nào và trình nền hầu như không có phụ thuộc và nó chỉ cần được đăng nhập theo thời gian đăng nhập.

Tôi muốn theo dõi các thành ngữ trên mỗi nền tảng cho các kịch bản khởi động và điều đó có nghĩa là Khởi động trên Ubuntu và systemd trên Fedora.

  • Có bất kỳ hướng dẫn tốt để viết tập tin hệ thống systemd?
  • Có 'thực hành tốt nhất' nào cần biết không?

Tôi đã tìm thấy những tài nguyên này:

Tôi chủ yếu tìm kiếm một loại API như một tài liệu tham khảo, cũng như một định dạng cơ bản để theo dõi.


Trang Arch Linux Wiki về systemd có một phần thú vị về việc viết các tệp dịch vụ.
Rudy Matela

> man systemd.service >> man systemd.unit
truezion 2/214

Câu trả lời:


29

Tôi sẽ bắt đầu với các trang hướng dẫn Systemd . Họ đại diện cho một nguồn lực toàn diện của hệ thống và dịch vụ.

Ngoài ra còn có các câu hỏi thường gặp về hệ thống freedesktop .


43
Các trang man sẽ hữu ích (tôi ước nó sạch hơn), nhưng có hướng dẫn tập tin hệ thống cơ bản không? Giống như phần nào là cần thiết, phần nào được khuyến nghị và phần nào là tùy chọn. Các trang người đàn ông dường như cho rằng tôi đã là một chuyên gia về các tệp hệ thống, mà tôi thì không.
beatgammit

Không phải là tôi nhận thức được, không may. Có thể có một giả định rằng nếu bạn đang viết initscripts, bạn đã biết cách viết initscripts. Xem qua các tập lệnh Arch và chọn một tập lệnh tương tự với những gì bạn cần: archlinux.org/packages/community/i686/systemd
jasonwryan

1
Cảm ơn! Với sự giúp đỡ của bạn và blog tôi tìm thấy, tôi đã có thể làm cho một cái cơ bản hoạt động. Systemd có vẻ đẹp hơn rất nhiều so với upstart hoặc systemv init daemon cũ.
beatgammit

49
Ai có thời gian sống để BẮT ĐẦU với điều đó. Ý tôi là, nếu bạn biết những gì bạn đang làm đó là một tài liệu tham khảo tuyệt vời, nhưng thánh bò thì các trang hướng dẫn rất phức tạp.
Jonathan Komar

1
@ macmadness86 OP đang tìm kiếm một nguồn có thẩm quyền (xem đoạn cuối); đối với hầu hết các nhu cầu, đọc tệp dịch vụ cho một ứng dụng tương tự và sau đó tư vấn các phần cụ thể của mantrang sẽ là quá đủ để đưa bạn đến đó. Họ thực sự khá đơn giản.
jasonwryan

180

Ví dụ sau được lấy cảm hứng từ liên kết này, thực sự không đề cập đến tất cả các bước và được liệt kê chỉ để ghi có nguồn: http://patrakov.blogspot.com/2011/01/writer-systemd-service-files.html

Bước 1 : Tôi đã tạo tệp này (vị trí ghi chú) về cơ bản thực hiện quy trình bash với một đối số mở rộng. Bạn có thể bắn lệnh của riêng bạn có thể khác với bash.

[root@y500-fedora ~]# cat /etc/systemd/system/foo.service 
[Unit]
Description=foo

[Service]
ExecStart=/bin/bash -c "while true; do /bin/inotifywait -qq --event close_write /sys/class/backlight/acpi_video0/brightness; su myusername -c '/bin/xbacklight -display :0 -set $(cat /sys/class/backlight/acpi_video0/brightness)'; done"

[Install]
WantedBy=multi-user.target

Bước 2 :

Tải lại systemd:

systemctl daemon-reload

Bắt đầu dịch vụ mới:

systemctl enable foo

(tương tự như bạn có thể disable)

(tùy chọn) Bước 3 : Nó sẽ tự động khởi động vào lần khởi động lại tiếp theo vào chế độ nhiều người dùng (chạy cấp 3) nhưng nếu bạn muốn bắt đầu ngay:

systemctl start foo
systemctl status foo # optional, just to verify

Cập nhật: Để hoàn thiện, tôi nên thêm rằng ubfox bionic dường như có một trang man rất kỹ lưỡng. RTFM tại đây


57
Cảm ơn bạn đã đăng một hướng dẫn nhanh chóng và không chỉ liên kết đến các trang người đàn ông ngoại vi!
Toby J

2
systemctl có một phím tắt lệnh cat, để tham khảo.
Andy Bettisworth

Phím tắt lệnh mèo là gì? Giống như một cách để tạo và chỉnh sửa các tệp điều khiển systemd mà không cần nhập toàn bộ đường dẫn?
JpaytonWPD

các quyền mà tập tin này nên có là gì?
knocte

2
Theo trang man systemd.unit, bạn nên đặt nó vào /etc/systemd/system. / usr / lib / systemd là nơi các gói phân phối thích hợp đặt các tệp của chúng.
wb Khang

4

2
Mặc dù điều này về mặt lý thuyết có thể trả lời câu hỏi, tốt hơnnên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Stephen Rauch

1
@StephenRauch Tôi biết rằng các liên kết đơn giản không được hoan nghênh nhưng đây là một chủ đề lớn và không dễ để tóm tắt trong một câu trả lời.
caracal

Đây là hướng dẫn dễ đọc nhất mà tôi tìm thấy. Đây là một câu trả lời tốt. :-)
đối xử tốt với các mod của bạn vào

DigitalOcean cũng có một bộ hướng dẫn khá đầy đủ và tài liệu liên quan: digitalocean.com/community/tutorials/
mẹo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.