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
!).