Systemd Timer不执行shell脚本

时间:2016-12-14 12:12:03

标签: shell timer systemd manjaro

我一直试图整理一个非常简单的shell脚本,如果它还没有运行,就会启动redshift。

#!/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

我告诉它正在运行并启用。问题是,只要计时器到达标记,就不会执行任何操作。知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

使用systemctl list-timers --all检查计时器的状态。

使用systemctl start redshift.timer启动计时器。

另外,您应该将自定义脚本放在/etc/systemd/system下。 /usr/lib位置适用于由软件包安装的脚本。

另请参阅:Run script every 30 minutes with systemd