Execute o shell script no boot do linux, mas apenas uma vez por dia

3
  • Execute o shell script na inicialização do linux (Inicialização), mas apenas uma vez por dia. Como posso fazer isso?
  • Estou usando o Redhat enterprise linux 5
por Kumar 04.02.2010 / 09:27

5 respostas

3

Coloque seu script no init.d para que ele seja executado na inicialização.

Para garantir que ele seja executado apenas uma vez por dia, tudo o que você precisa fazer é armazenar a data da execução anterior e compará-la à data atual. Isso é bastante simples de se fazer em qualquer linguagem de script.

    
por 04.02.2010 / 09:46
1

Eu uso isso. O código abaixo salve no arquivo executável, nome depo e você lê o comentário no arquivo.

#!/bin/bash

# depo = day-execute-per-onetime = execute onetime per day
# add argumets whose execute onetime per day

# Example: ./depo "uname -a" # let's try run twotimes

if [ $# = 0 ]; then
    echo "Missing arguments, add one or more commands what you want to execute. Like $ depo \"uname -a\" date";
    exit;
fi;

TODAY='date +%Y-%m-%d'
HOME_DIR="$HOME/.depo/"
COMMAND='echo $@ | sha1sum | cut -d ' ' -f1'

SYNC_FILE="$HOME_DIR/$COMMAND"
mkdir -p "$HOME_DIR"
touch "$SYNC_FILE"

SYNC_DATE='cat "$SYNC_FILE"'
if [ "$SYNC_DATE" == "$TODAY" ]; then
    exit
fi

for arg; do
   eval $arg
done

echo $TODAY > "$SYNC_FILE"
    
por 05.04.2017 / 20:33
0

Adicione ao init.d. Faça com que o script "toque" em um arquivo pequeno em um diretório ao qual ele tenha acesso, um diretório inicial como um usuário não privilegiado (a menos que precise de outros privs). Não use tmp, pois você não tem garantias de que o arquivo persistirá. Nomeie o arquivo com o nome do processo, procure-o e verifique a hora da última modificação nele. Se for inferior a 86400 segundos, saia e continue. Faça a verificação antes de "tocar" no arquivo ou você sempre achará que o script não foi executado no último dia.

    
por 04.02.2010 / 09:48
0

Em um sistema debian, eu colocaria meu script em /etc/cron.daily e apenas instalaria anacron .

Anacron é provavelmente a ferramenta que você está procurando.

Não sei se o RHEL inclui rpm ou se você terá que procurá-los ou até compilar a partir da fonte.

    
por 04.02.2010 / 11:00
0

Você deve usar anacron para executar isso. É usado para coisas que você quer uma vez por dia.

    
por 04.02.2010 / 11:12