Запис основних системних файлів обслуговування


103

Я розробляю додаток Nodejs, з яким користувач взаємодіє через HTTP на localhost. Тут практично немає параметрів, і демон практично не має залежностей, і його потрібно просто підписати на час входу.

Я хотів би дотримуватися ідіоми на кожній платформі для запуску сценаріїв, а це означає Upstart в Ubuntu та systemd на Fedora.

  • Чи є хороші підручники для написання системних файлів?
  • Чи слід знати про «найкращі практики»?

Я знайшов ці ресурси:

Я здебільшого шукаю подібний API, а також базовий формат, який слід дотримуватися.


На сторінці Wiki Linux Arch Linux про systemd є цікавий розділ про написання службових файлів.
— Руді Матела

> man systemd.service>> man systemd.unit
— truezion

Відповіді:


29

Я б почав із сторінок керівництва Systemd . Вони являють собою всебічний ресурс системи та послуг.

Існує також FAQs Freedesktop Systemd .


43
Сторінки man будуть корисні (хоч би хотілося, щоб це було чистіше), але чи є базовий підручник із системними файлами? Як і які деталі необхідні, які деталі рекомендовані, а які - необов’язкові. Чоловічі сторінки, здається, припускають, що я вже є експертом у системних файлах, що я не є.
— beatgammit

Не те, що мені відомо, на жаль. Напевно, існує припущення, що якщо ви пишете інциденти, ви вже знаєте, як писати інциденти. Подивіться через скрипти Arch і вибрати той , який схожий на те , що вам потрібно: archlinux.org/packages/community/i686/systemd
— jasonwryan

1
Дякую! З вашою допомогою та знайденим у мене блогом я зміг отримати основний робочий стан. Сидд здається набагато приємнішим, ніж вискок або старий systemv init демон.
— битгаміт

49
Хто встигає там, той живе для того, щоб почати з цього. Я маю на увазі, якщо ви знаєте, що ви робите, це чудовий довідник, але свята корова, сторінки керівництва є складними.
— Джонатан Комар

1
@ macmadness86 ОП шукала авторитетного джерела (див. останній пункт); для більшості потреб прочитання службового файлу для подібного додатка та консультації з певними частинами manсторінки буде більш ніж достатньо для того, щоб потрапити до вас. Вони насправді досить прості.
— Jasonwryan

180

Наступний приклад натхненний цим посиланням, яке насправді не згадує всі кроки та перераховано лише для того, щоб зарахувати джерело: http://patrakov.blogspot.com/2011/01/writing-systemd-service-files.html

Крок 1 : Я створив цей файл (розташування примітки), який по суті запускає процес bash з розширеним аргументом. Ви можете запустити власну команду, яка може відрізнятися від 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

Крок 2 :

Перезавантажити systemd:

systemctl daemon-reload

Почніть нову послугу:

systemctl enable foo

(так само ви можете disable)

(необов’язково) Крок 3 : Він повинен запускатися автоматично при наступному перезавантаженні в багатокористувацький режим (запустити рівень 3), але якщо ви хочете запустити його відразу:

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

Оновлення: Для повноти слід додати, що, здається, у ubuntu bionic є дуже ретельна сторінка. RTFM тут


57
Дякуємо, що опублікували швидкий підручник, а не просто посилання на сторонні сторінки чоловіка!
— Toby J

2
systemctl має ярлик команди cat, для довідки.
— Енді Беттісворт

Що таке ярлик команди cat? Як спосіб створення та редагування системних файлів управління, не вводячи весь шлях?
— JpaytonWPD

які дозволи в цьому ідеалі мають мати цей файл?
— knocte

2
Як повідомляє сторінка man systemd.unit man, ви повинні розмістити його /etc/systemd/system. / usr / lib / systemd - це те, куди належні пакети розповсюдження розміщують свої файли.
— wbkang

4

2
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
— Стівен Рауч

1
@StephenRauch Я знаю, що прості посилання не дуже вітаються, але це величезна тема, і це не просто узагальнити у відповідь.
— каракал

Це був найчитабельніший посібник, який я знайшов. Це хороша відповідь. :-)
— добре

DigitalOcean також має досить вичерпний набір навчальних посібників та супровідну
— irbanana
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.