Systemd Timer не выполняет сценарий оболочки

Я пытался собрать очень простой сценарий оболочки, который запускает красное смещение, если он еще не запущен.

#!/bin/sh
if ps -ef | grep -v grep | grep redshift-gtk; then
    exit 0
else
    /usr/bin/redshift-gtk &
    exit 0
fi

Я пробовал запускать скрипт несколько раз, и я уверен, что он работает.

Я использую Manjaro i3, кстати. Затем я попытался создать службу и таймер в /usr/lib/systemd/system/:

/usr/lib/systemd/system/redshift.service

[Unit]
Description=Runs redshift

[Service]
Type=simple
ExecStart=/bin/bash /home/velo/reshift.sh

[Install]
WantedBy=multi-user.target

Да, название скрипта перешито.

/usr/lib/systemd/system/redshift.timer

[Unit]
Description=Runs redshift at given intervals
Requires=redshift.service

[Timer]
OnCalendar=*-*-* *:45:00
Persistent=true
Unit=redshift.service

[Install]
WantedBy=multi-user.target

Таймер был изменен на любую соответствующую минутную отметку, которая была рядом, чтобы активировать его. После каждого изменения в OnCalender я делал:

>systemctl daemon-restart
>systemctl restart redshift.timer
>systemctl status redshift.timer

Где мне говорят, что он запущен и включен. Проблема в том, что ничего не выполняется всякий раз, когда таймер достигает отметки. Любая идея, что я делаю неправильно?


person D. Johnson    schedule 14.12.2016    source источник
comment
Вы, наконец, нашли решение для этого?   -  person R.J.    schedule 10.08.2018


Ответы (1)


Используйте systemctl list-timers --all для проверки состояния ваших таймеров.

Используйте systemctl start redshift.timer, чтобы запустить таймер.

Кроме того, вы должны поместить свои пользовательские сценарии в папку /etc/systemd/system. Местоположение /usr/lib предназначено для скриптов, устанавливаемых пакетами.

См. также: Запускать скрипт каждые 30 минут с помощью systemd

person Mark Stosberg    schedule 14.12.2016