Вопрос или проблема
У меня большие проблемы с таймерами systemd.
$ sudo systemd-analyze Notify_Satdisk_Needs_H20.service
Неизвестная команда 'Notify_Satdisk_Needs_H20.service'.
Notify_Satdisk_Needs_H20.service
[Unit]
Description="Скрипт для показа сообщения от спутниковой антенны"
[Service]
ExecStart=usr/local/bin/SatDiskMessage.sh
Ответ или решение
Проблема, с которой вы сталкиваетесь, связана с неверным использованием команды systemd-analyze
. Данная команда не может использоваться для анализа отдельных юнитов, таких как сервисы, напрямую. Вместо этого вам следует использовать другие команды для работы с юнитами systemd.
Вот шаги, которые помогут вам диагностировать и исправить вашу проблему с таймером systemd:
-
Проверьте правильность указания пути к скрипту: Убедитесь, что путь к исполняемому файлу в секции
[Service]
указан правильно. В вашем случае у вас написаноExecStart=usr/local/bin/SatDiskMessage.sh
, вместоExecStart=/usr/local/bin/SatDiskMessage.sh
. Необходимо добавить начальный слеш, чтобы указать абсолютный путь.Вот исправленный фрагмент вашего сервиса:
[Service] ExecStart=/usr/local/bin/SatDiskMessage.sh
-
Создайте таймер для вашего сервиса: Если у вас еще нет таймера, создайте файл таймера
/etc/systemd/system/Notify_Satdisk_Needs_H20.timer
со следующим содержимым. Примерный текст может выглядеть так:[Unit] Description=Запуск скрипта SatDiskMessage через определенные интервалы [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target
Вы можете настроить
OnCalendar
в соответствии с вашими требованиями. Например, можно использоватьOnCalendar=hourly
для запуска ежечасно. -
Перезагрузите конфигурацию systemd: После внесения изменений перезагрузите конфигурацию:
sudo systemctl daemon-reload
-
Активируйте и запустите ваш таймер: Активируйте таймер, чтобы он начинал запускаться автоматически:
sudo systemctl enable Notify_Satdisk_Needs_H20.timer
После этого запустите таймер:
sudo systemctl start Notify_Satdisk_Needs_H20.timer
-
Проверьте статус таймера и сервиса: Убедитесь, что таймер работает корректно:
systemctl list-timers --all
И проверьте статус вашего сервиса:
systemctl status Notify_Satdisk_Needs_H20.service
Если после выполнения всех шагов у вас по-прежнему остаются проблемы, проверьте журналы для вашего сервиса:
journalctl -u Notify_Satdisk_Needs_H20.service
Это поможет вам выявить возможные ошибки, связанные с выполнением скрипта.
Следуя вышеуказанным шагам, вы сможете исправить вашу проблему с таймерами systemd.