Interrompe temporariamente todas as unidades temporizadas do systemd

3

Estou escrevendo um script que prepara meu sistema Linux para benchmarking. Entre outras coisas, quero parar todas as unidades de timer do sistema e reverter essa ação depois.

Em suma, preciso do equivalente a service crond stop/start .

Tudo o que encontrei até agora é systemctl list-timers e, em seguida, pare manualmente cada um deles, e depois inicie manualmente cada um deles. Você conhece alguma solução melhor e mais genérica?

    
por jimis 08.10.2018 / 15:07

2 respostas

3

Para parar todos os timers em execução no momento, você pode simplesmente usar:

systemctl stop '*.timer'

Para reiniciar os timers mais tarde, você terá que lembrar quais estavam em exibição no momento.

timers=$(systemctl list-units --type=timer --state=active --no-legend | awk '{print $1}')
systemctl stop $timers
# ...
systemctl start $timers

(Aparentemente, os padrões para unidades não correspondem a unidades inativas, por isso systemctl start '*.timer' não funciona.)

    
por 09.10.2018 / 17:47
0

Boa pergunta. Não vejo uma opção para isso em man systemctl ou man systemd.timer

Em um sistema relativamente limpo, provavelmente há apenas um pequeno número que pode ser executado durante o seu benchmark. Portanto, depois de executar os comandos systemctl stop na primeira vez, na próxima vez, salve seus comandos stop / start em scripts bash e apenas automatize os comandos stop / start dessa maneira.

    
por 08.10.2018 / 17:17