LINUX.ORG.RU
ФорумAdmin

systemd не отрабатывает скрипт в юните


0

1

Создал я для тестирования юнита скриптик:

#!/bin/bash
date | mail somemail@mail.ru
Сам скриптик запускаю, и все работает, и под рутом, и под обычным юзером. mail у меня отправляет msmtp, msmtprc доступен все(сейчас уже ясно, что дело было видимо не в правах) Юнит запускается таймером, каждую минуту, такой интервал я сделал для того, что бы не ждать когда наступит событие, причем сам скрипт, если его немного поменять, например вместо mail сделать перенаправление в какой либо файл отрабатывает. Текст юнита:
[Unit]
Description=testTimer

[Service]
Type=oneshot
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart=/usr/bin/tmail.sh
Цель:
[Unit]
Description=HalfHourly Timer Target
StopWhenUnneeded=yes

Код таймера:
[Unit]
Description=HalfHourly Timer

[Timer]
OnBootSec=1min
OnUnitActiveSec=1min
Unit=timer-halfhour.target

[Install]
WantedBy=basic.target
Делал по ЭТОЙ статье, за тем лишь исключением, что изменил временные интервалы, сначала на пол часа, а потом на минуту. В общем мне не особо понятно где проблема. Запуск юнита руками:
systemctl start testtimer.service на дает ничего. При этом:
someserver /usr/share # systemctl status testtimer.service                      testtimer.service - testTimer
   Loaded: loaded (/etc/systemd/system/timer-halfhour.target.wants/testtimer.service)
   Active: inactive (dead) since Пн 2013-10-14 21:48:11 MSK; 43s ago
  Process: 14398 ExecStart=/usr/bin/tmail.sh (code=exited, status=0/SUCCESS)
 Main PID: 14398 (code=exited, status=0/SUCCESS)

окт 14 21:48:11 someserver systemd[1]: Starting testTimer...
окт 14 21:48:11 someserver systemd[1]: Started testTimer.

Помогаем.



Последнее исправление: tw (всего исправлений: 1)

systemctl start testtimer.service на дает ничего

Угу, потому что сервис уже запущен. Сделай stop на него.

ExecStart=/usr/bin/tmail.sh (code=exited, status=0/SUCCESS)

Значит скрипт отработал.

true_admin ★★★★★
()

Ну и надо после изменения скриптов reload делать. По идее, systemctl об этом должен был написать.

true_admin ★★★★★
()

Вообще, я бы кроном сделал. Плодить два-три юнита чтобы тупо запустить один скрипт это фейл.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Вообще, плодить кучу процессов с аналогичной функциональностью - вот это фейл. А вообще цель - научиться. Да, пробовал останавливать, да, делал relaod, только он касается именно изменений самих юнитов. Вопрос в том, почему скрипт отрабатывает, а на почту нихрена не приходит? Перенаправлять вывод со скрипта пробовал - пусто. Вопрос в msmtp я думаю, но где искать...Настройки доступны.

tw
() автор топика

Выкинь нафиг таргет. Делаешь так:

Это - emailme.timer

[Unit]
Description=Email me gently

[Timer]
OnBootSec=1min
OnUnitActiveSec=10min

Это - emailme.service

[Unit]
Description=Emails me

[Service]
Type=oneshot
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart=/usr/bin/tmail.sh

[Install]

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)
Ответ на: комментарий от alex_the_v

Завтра попробую, но честно говоря не вижу разницы между моей реализацией и твоей, скрипт то у меня выполняется, а вот мейл не отправляется, читай выше.

tw
() автор топика
Ответ на: комментарий от blackst0ne

Похоже что нет: someserver ~ # systemctl status testtimer.service testtimer.service - testTimer Loaded: loaded (/etc/systemd/system/timer-halfhour.target.wants/testtimer.service) Active: inactive (dead) since Ср 2013-10-16 20:49:01 MSK; 11s ago Process: 518 ExecStart=/usr/bin/tmail.sh (code=exited, status=0/SUCCESS) Main PID: 518 (code=exited, status=0/SUCCESS)

окт 16 20:49:01 someserver systemd[1]: Starting testTimer... окт 16 20:49:01 someserver systemd[1]: Started testTimer. Скрипт выполняется - писем нет.

tw
() автор топика
Ответ на: комментарий от alex_the_v

Сделал так, как говорит alex_the_v, как я и думал - не помогло. Скрипт запускаетя, о чем свидетельствуют записи в файл о PPID и exit code=0, но писем нет. Загадка в общем.

tw
() автор топика
Ответ на: комментарий от alex_the_v

Как то так:

окт 25 21:11:44 someserver systemd[1]: Started Emails me.
окт 25 21:21:44 someserver systemd[1]: Starting Emails me...
окт 25 21:21:44 someserver systemd[1]: Started Emails me.
окт 25 21:31:44 someserver systemd[1]: Starting Emails me...
окт 25 21:31:44 someserver systemd[1]: Started Emails me.
окт 25 21:41:44 someserver systemd[1]: Starting Emails me...
окт 25 21:41:44 someserver systemd[1]: Started Emails me.
окт 25 21:51:44 someserver systemd[1]: Starting Emails me...
окт 25 21:51:44 someserver systemd[1]: Started Emails me.
Мне тут посоветовали strace попробовать из юнита и без него, но пока не разобрался как сохранить его вывод максимально единообразно. Может подскажет кто?

tw
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.