Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Наступна ревізія | Попередня ревізія | ||
systemd [2015/03/18 00:47] wombat створено |
systemd [2017/06/30 00:02] (поточний) wombat e-mail on failure |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
====== systemd ====== | ====== systemd ====== | ||
+ | |||
+ | ====== Настройка ====== | ||
===== Службы ===== | ===== Службы ===== | ||
Рядок 32: | Рядок 34: | ||
sudo systemctl start updatedb.timer | 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 |