Agende o script cancelável para ser executado após a duração

2

Eu quero poder executar um script depois de uma certa duração. Também quero poder cancelá-lo e reprogramá-lo, ou seja, aumentar a duração on-the-fly.

Eu estava pensando em algo parecido com isso - >

stop_prev_instance.sh; sleep 60 && /etc/init.d/myscript reload

Meu problema é que eu preciso que o stop_prev_instance.sh pare somente a execução anterior se fosse sleep ing, e não se o comando /etc/init.d/myscript reload estivesse em execução.

Qual seria o caminho certo para resolver este problema?

    
por user3490458 08.05.2017 / 10:29

1 resposta

2

Talvez use lockfile (do projeto procmail) para esse script "cancelar e recarregar".

#!/bin/bash

SLEEP=$1
LOCKFILE="/tmp/reload.lock"
MYPID=$$
MYNAME=$(basename "$0")

lockfile "$LOCKFILE"
# kill all other scripts with the same name
KILLPIDS=$(pgrep "^${MYNAME:0:12}" | grep -v "^$MYPID\$")
kill $KILLPIDS 2>/dev/null
rm -f "$LOCKFILE"

sleep "$SLEEP"

lockfile "$LOCKFILE"
/etc/init.d/myscript reload
rm -f "$LOCKFILE"

No máximo, o um script será executado entre os comandos lockfile e rm .

Note que o arquivo reload-lock deve estar melhor posicionado em algum lugar onde apenas um usuário tenha permissões de gravação (não /tmp !).

    
por 08.05.2017 / 12:33