Предотвращение запуска таймера 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 обычного пользователя, который сохраняет атрибуты собственности моих файлов. Задача решена.

  • systemd: изящно сбой резервного копирования, когда внешний диск не подключен
  • Синхронизировать почту с помощью offlineimap через службу / таймер systemd; получение пароля из гнома
  • Каков правильный способ отключения блока таймера systemd?
  • системный таймер каждые 2 часа через 30 минут после часа?
  • Запуск пользовательского таймера systemd, когда у них нет открытого сеанса
  • использование таймеров systemd вместо cron
  • Как узнать, какая команда выполняется файлом systemd .timer?
  • systemd.unit `RequiresMountsFor =` vs `ConditionPathIsDirectory =`
  • 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.

    Interesting Posts

    Предотвращение завершения работы с использованием сценария оболочки при завершении работы

    Удалить обратную косую черту + последовательности новой строки

    Запись с микрофона на неопределенный срок

    Awesome WM-плитки KDE сетевой и аккумуляторный виджет

    Как узнать, какой интерфейс является моим публичным интерфейсом?

    Форматирование внешнего жесткого диска с помощью скрипта Bash

    Можете ли вы поменять местами единый процесс?

    Перечислите все DNS-серверы, в том числе VPN

    Неверный синтаксис в sql

    Вчера я совершил ошибку, которая случайно удалила 1800 ГБ моего Файлового сервера

    Сценарий, который удаляет лишние пробелы между буквами в тексте

    Виртуальная точка беспроводного доступа

    Ethernet с перерывами выходит из строя

    Как объединить два файла в новый и отсортировать вывод в одной строке

    apt-get dist-upgrade ничего не делает при попытке перейти с хриплого на jessie

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