На самом деле вы должны использовать либо
#! /bin/env sh
либо
#! /bin/env bash
так вы вызываете любую из оболочек тем способом, которым они установлены в данной системе.
Чтобы быть супер безопасным (например в случаях перезагрузки одного пользователя) используйте sh
, в противном случае используйте bash
.
Чтобы остановить все запущенные в данный момент таймеры, вы можете просто использовать:
systemctl stop '*.timer'
Чтобы перезапустить таймеры позже, вам нужно будет вспомнить, какие из них были запущены в данный момент.
timers=$(systemctl list-units --type=timer --state=active --no-legend | awk '{print $1}')
systemctl stop $timers
#...
systemctl start $timers
(По-видимому, шаблоны для юнитов не соответствуют неактивным юнитам, поэтому systemctl start '*.timer'
не работает.)
Хороший вопрос. Я не вижу возможности для этого в man systemctl
илиman systemd.timer
В относительно чистой системе, скорее всего, лишь небольшое их количество может работать во время теста. Таким образом, после того, как вы запустите команды systemctl stop
в первый раз, в следующий раз сохраните команды остановки/запуска в bash-скриптах и просто автоматизируйте команды остановки/запуска таким образом.