Користувальницькькі налаштування

Налаштування сайту


systemd

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
systemd [2015/04/16 07:28]
wombat настройка системного времени
systemd [2017/06/29 21:02] (поточний)
wombat e-mail on failure
Рядок 1: Рядок 1:
 +====== systemd ======
  
 +====== Настройка ======
 +
 +===== Службы =====
 +
 +Просмотреть список зарегистрированных служб:
 +
 +  sudo systemctl list-unit-files
 +
 +Разрешить службу:​
 +
 +  sudo systemctl enable transmission.service
 +
 +Запустить службу:​
 +
 +  sudo systemctl start transmission.service  ​
 +
 +Остановить службу:​
 +
 +  sudo systemctl stop transmission.service
 +
 +Проверить состояние службы:​
 +  sudo systemctl status transmission.service
 +
 +
 +===== Таймеры =====
 +
 +Просмотреть список зарегистрированных таймеров:​
 +
 +  sudo systemctl -a list-timers
 +
 +Запустить некоторый таймер (в данном случае -- ''​updatedb''​):​
 +
 +  sudo systemctl start updatedb.timer
 +
 +
 +===== Настройка времени =====
 +
 +  timedatectl list-timezones
 +  sudo timedatectl set-timezone Europe/Kiev
 +
 +((https://​wiki.archlinux.org/​index.php/​Time))
 +
 +
 +===== Уведомление на e-mail =====
 +
 +Чтобы получать уведомления на электронную почту об ошибке запуска некоторой службы systemd, нужно((https://​wiki.archlinux.org/​index.php/​Systemd/​Timers#​MAILTO)) сделать следующее:​
 +
 +**1.** Создать скрипт отправки сообщения (пример дан для ''​bsd-mailx'';​ для ''​sendmail''​ можно посмотреть [[https://​wiki.archlinux.org/​index.php/​Systemd/​Timers | здесь]]).
 +
 +<file bash "/​usr/​local/​bin/​systemd-email">​
 +#!/bin/bash
 +
 +export LANG=C
 +/​usr/​bin/​mail -a "​Content-Transfer-Encoding:​ 8bit" -a "​Content-Type:​ text/plain; charset=UTF-8"​ -s "​$2"​ $1 <<​ERRMAIL
 +
 +$(systemctl status --full "​$2"​)
 +ERRMAIL
 +</​file>​
 +
 +**2.** Создать службу systemd для отправки сообщения.
 +
 +<file ini "/​etc/​systemd/​system/​status-email-admin@.service">​
 +[Unit]
 +Description=status email for %i to admin
 +
 +[Service]
 +Type=oneshot
 +ExecStart=/​usr/​local/​bin/​systemd-email admin@server.org %i
 +#​User=nobody
 +User=root
 +Group=systemd-journal
 +</​file>​
 +
 +Здесь "''​admin@server.org''"​ -- это e-mail, на который нужно высылать сообщение. Пользователь "''​root''"​ нужен для случая,​ когда ''​systemctl''​ не запускается от других пользователей. В противном случае лучше использовать пользователя "''​nobody''"​.
 +
 +**3.** Если всё настроилось и работает,​ то нужно добавить следующую строку в раздел ''​[Unit]''​ файлов служб systemd, при ошибке запуска которых требуется высылать письмо:​
 +
 +  OnFailure=status-email-admin@%n.service
 +
 +
 +====== Создание ======
 +
 +==== Службы ====
 +
 +<file ini '/​etc/​systemd/​system/​mount-data.service'>​
 +[Unit]
 +Description=Mount USB HDD
 +
 +[Service]
 +Type=oneshot
 +RemainAfterExit=yes
 +
 +#​PIDFile=/​run/​thttpd.pid
 +#​ExecStart=/​usr/​bin/​thttpd -D -C /​etc/​thttpd.conf
 +ExecStart=/​usr/​local/​bin/​mount_data.sh
 +#​ExecReload=
 +ExecStop=/​usr/​local/​bin/​mount_data.sh unmount
 +#​Restart=always
 +
 +# No USB HDD attached
 +RestartPreventExitStatus=1
 +
 +
 +#[Install]
 +#​WantedBy=multi-user.target
 +</​file>​
 +
 +<file bash '/​usr/​local/​bin/​mount_data.sh'>​
 +#!/bin/bash
 +
 +if [ "​$1"​ == "​unmount"​ ]
 +then
 +    MOUNT=`mount | grep '/​mnt/​data'​`
 +    if [ -n "​$MOUNT"​ ]
 +    then
 +        echo "​Unmounting /​mnt/​data"​
 +        umount /mnt/data
 +    else
 +        echo "​ERROR:​ /mnt/data is not mounted."​
 +    fi
 +else
 +    if [ -e /dev/sda4 ]
 +    then
 +      echo "​Mounting /dev/sda4 as /​mnt/​data"​
 +      mount /mnt/data
 +    else
 +      echo "​ERROR:​ No HDD."
 +      exit 1
 +    fi
 +fi
 +</​file>​
 +
 +<file systemd '/​etc/​systemd/​system/​multi-user.target.wants/​transmission.service'>​
 +[Unit]
 +...
 +Requires=mount-data.service
 +After=mount-data.service
 +...
 +</​file>​
 +
 +
 +
 +
 +
 +===== Ссылки =====
 +
 +http://​www.freedesktop.org/​software/​systemd/​man/​systemd.service.html
 +
 +http://​www.freedesktop.org/​software/​systemd/​man/​systemd.unit.html
 +
 +https://​wiki.archlinux.org/​index.php/​Systemd#​Writing_unit_files
systemd.txt · В останнє змінено: 2017/06/29 21:02 by wombat