Предотвращение запуска таймера systemd при запуске

Я переношу свои кронабы на блоки таймера systemd. Все они выглядят примерно так:

.timer файл:

[Unit] Description=timer that uses myjob.service [Timer] OnCalendar=*-*-* *:00:00 Unit=myjob.service [Install] WantedBy=timers.target 

.service file:

 [Unit] Description=Script that runs myjob.sh [Service] ExecStart=/home/user/myjob.sh 

Мои таймеры работают, но они также выполняются при перезагрузке системы. Я хотел бы, чтобы мои события OnCalendar выполнялись только в указанное время, а не в любое случайное время, когда я перезагружаю компьютер. Есть идеи?


ОБНОВЛЕНИЕ: Я решил эту проблему, переведя свои «пользовательские» таймеры в корневые / системные таймеры.

  1. Я отключил все мои файлы .service и .timer и вывел их из своего домашнего каталога в / etc / systemd / system.

  2. Я добавил раздел «User =» в каждый служебный файл, так что мои скрипты запускались обычным пользователем, а не как root.

Теперь мои таймеры не запускаются при запуске системы, и у меня также возникали проблемы со спорадическим запуском при входе в систему через ssh. Теперь это также было решено, что они находятся под контролем учетной записи root, но запуск моих сценариев по-прежнему выполняется как PID обычного пользователя, который сохраняет атрибуты собственности моих файлов. Задача решена.

3 Solutions collect form web for “Предотвращение запуска таймера systemd при запуске”

Я решил эту проблему, переведя свои «пользовательские» таймеры в корневые / системные таймеры.

  1. Я отключил все мои файлы .service и .timer и вывел их из своего домашнего каталога в / etc / systemd / system.

  2. Я добавил раздел «User =» в каждый служебный файл, так что мои скрипты запускались обычным пользователем, а не как root.

Теперь мои таймеры не запускаются при запуске системы, и у меня также возникали проблемы со спорадическим запуском при входе в систему через ssh. Теперь это также было решено, что они находятся под контролем учетной записи root, но запуск моих сценариев по-прежнему выполняется как PID обычного пользователя, который сохраняет атрибуты собственности моих файлов. Задача решена.


ОП опубликовал это как редактирование вопроса, поэтому я воспроизвел его здесь.

В соответствии с документацией вы должны изменить свою конфигурацию на Persistent=false или удалить Persistent вообще, потому что она по умолчанию неверна.

У меня также была такая же проблема, и я не мог понять, почему единицы всегда будут запускаться при запуске, независимо от параметра Persistent в файле .timer, и мне потребовалось некоторое время, но я, наконец, нашел причину (указал в правильном направлении by @alexander комментарий Толкачева).

Проблема в том, что я всегда включал что-то вроде WantedBy=basic.target в разделе [Install] файла .service (потому что его часть стандартной пасты для копирования systemd). Оказывается, это фактически заставляет блок запускаться всякий раз, когда basic.target (aka system boot).

https://www.freedesktop.org/software/systemd/man/systemd.unit.html#WantedBy= https://www.freedesktop.org/software/systemd/man/systemd.special.html#basic.target

Я подозреваю, что OP непреднамеренно решила проблему, отключив старый .service (который вы должны сделать, чтобы удалить символическую ссылку, созданную WantedBy ), и либо опустить раздел [Install] при повторном написании, либо никогда не запускать systemctl enable .

TLDR; Вы не хотите раздел [Установить] в файле .service, который запускается файлом .timer.

  • Каков правильный способ отключения блока таймера systemd?
  • Ошибка анализа на блоке таймера systemd. Неверная документация?
  • Как настроить Systemd Timer для запуска службы в последний день месяца
  • systemd: Как выполнять задание как периодически, так и один раз при завершении работы системы?
  • Удаление таймера, созданного с помощью systed-run --on-calendar
  • системный таймер каждые 2 часа через 30 минут после часа?
  • Interesting Posts

    Записи Я могу безопасно исключить выполнение резервных копий

    связывать монтаж и выход df

    Как выполнить синтаксический анализ / proc / cmdline перед запросом имени tty с помощью systemd

    Сортировка текста по определенному местоположению на каждой строке

    Найти соединения на ip на маршрутизаторе OpenWRT?

    как предотвратить распознавание / доступ к экспортируемой переменной среды дочерней оболочкой (bash)?

    Отметить пакеты между машинами (клиент и маршрутизатор)?

    Невозможно скомпилировать XBMC 12 из-за проблемы TAGLIB

    запустить локальный прокси-сервер SOCKS, туннелированный через SSH

    Arch Linux думает, что у меня около 16 концертов, когда у меня всего 8

    Переменная Bash в html

    Изменяют ли регуляторы Linux cpufreq временно sysfs’s scaling_max_freq?

    Файловая система и точка подключения

    Почему приложениям пространства пользователя нужны заголовки ядра?

    Как отобразить UDP-соединение?

    Linux и Unix - лучшая ОС в мире.