3/07/2012

[Fedora 16] Systemd - how to add new service / init script

Всички сме се сблъсквали с това да добавяме наши скриптове, които искаме да се пускат със стартирането на системата. Във Fedora 16  Verne (всъщност мисля, че започна от 14 Laughlin, но не съм сигурен) управлението на тези процеси е прехвърлено върху Systemd. Според разработчиците, това е по-сигурната система за управление, както и доста по-гъвкавата.

Идеята е, че всеки един скрипт, който напишем можем да го сложим в произволна директория (например /usr/bin/). След, което се създава малък unit файл в /etc/systemd/system/, в който се описва какво точно прави този скрипт, кога да се зарежда и параметрите за инсталация като service при стартиране на системата. Eто стъпките:

Първо нека създадем нашият скриптов файл в /usr/bin/system-fan .
# touch /usr/bin/system-fan
След това задаваме права за изпълнение (не съм сигурен дали е неубходимо, но така и така този скрипт мога да го ползвам от конзолният ред):
# chmod +x /usr/bin/system-fan
Написаме нашият скриптов файл, например:
#!/bin/bash

echo low > /sys/class/drm/card0/device/power_profile
Това е команда, с която ще вкараме видео картата в нисък режим (това е само за ATI карти в Fedora 16 Verne).
След което създаваме малкият unit файл /etc/systemd/system/system-fan.service :
# touch /etc/systemd/system/system-fan.service
И го попълваме по следният начин:
[Unit]
Description=System Fan
After=syslog.target

[Service]
ExecStart=/usr/bin/system-fan

[Install]
WantedBy=graphical.target
Накратко това означава - изпълнява се след syslog и е изискване на graphical runlevel (еквивалента на runlevel 5 от SysVInit).

След това изпълняваме следната, команда за да разрешим този сървис по време на инициализация:
# systemctl enable system-fan.service
Ако искаме да я стартираме веднага:
# systemctl start system-fan.service
Вече имаме инициализиращ потребителски скрипт.

http://www.freedesktop.org/software/systemd/man/

No comments:

Post a Comment