Поскольку ваш служебный файл находится в / usr / lib / systemd / user
, он рассматривается как пользовательский сервис и запускается вашим собственным экземпляром systemd
(запускается как systemd --user
). Это означает, среди прочего, что процесс запускается под вашим пользователем, а не под root
, и запускается для каждого пользователя, который входит в систему. На основе ссылки на файл конфигурации в / etc
, я бы предположил, что только один экземпляр этого процесса должен работать в любой момент времени, и что он должен работать как root
(или какой-либо другой системный аккаунт). Если этот процесс должен запускаться как root
, переместите этот файл в / usr / lib / systemd / system
(или еще лучше, / etc / systemd / system
, поскольку это ваш собственный служебный файл) и игнорируйте остальную часть этого ответа.
Если ваш служебный файл должен запускаться под вашим собственным пользователем, обратите внимание, что в пользовательском режиме доступны только следующие цели:
When systemd runs as a user instance, the following special units are available, which have
similar definitions as their system counterparts: default.target, shutdown.target,
sockets.target, timers.target, paths.target, bluetooth.target, printer.target,
smartcard.target, sound.target.
Ни multi-user.target
, ни сеть. target
доступны, поэтому ваша служба не запускается автоматически. Если вы хотите, чтобы он запускался, измените multi-user.target
на default.target
и удалите After = network.target
. Затем запустите systemctl --user enable arkos-redis.service
.
Не совсем уверен, что вам нужно, но вы можете запустить фоновое задание, которое что-то делает, а затем ждет X секунд, прежде чем повторить.
Пример
( while : ; do echo hello ; sleep 10 ; done ) &
Вы можете использовать команду date для динамической настройки продолжительности операции сна.
Пример
now() { date '+%s'; }
next() { date -d $(date -d "1 hours" '+%H:00:00') '+%s'; }
( while : ; do echo "Your Tasks Here" ; sleep $(next) - $(now) ; done ) $
Внутренний формат даты следующей функции ()структурирован для запуска в час. Если вы хотите, чтобы он запускался каждые пятнадцать минут, вы можете настроить его следующим образом.
next() { date -d $(date -d "15 minutes" '+%H:%M:00') '+%s'; }
См. также:Команда даты Linux, поиск секунд до следующего часа
Примечание. :Уничтожение приведенного выше сценария немного раздражает из-за того, что в фоновом режиме выполняется операция сна. Уничтожьте с помощью PID или не думайте, что -не заземлит работу шлейфа.