Incrementar uma variável toda vez que o sistema é inicializado

2

A idéia é inicializar uma variável e configurá-la como 0. Em seguida, crie um script que seja executado na inicialização e aumente essa variável em 1 sempre que o sistema for inicializado novamente.

Parece bastante simples, certo?

    
por les 07.02.2014 / 05:34

4 respostas

3

Salve a variável em um arquivo e, em seguida, leia esse arquivo toda vez que o sistema for inicializado.

VAR='cat ~/.foo'
echo $(($VAR + 1 )) > ~/.foo

Em seguida, edite ~ / .foo e insira 0

Você precisará colocar isso dentro de um script que é chamado de cada inicialização. Cada distro é diferente.

Alguns usam

init.d
upstart
systemd
runinit

link

    
por 07.02.2014 / 05:58
0
touch /var/log/bootcount
echo $[$(</var/log/bootcount)+1] > /var/log/bootcount

Adicione isso a /etc/rc.local (ou equiv para o seu sabor do linux)

(assumindo que o sistema sh é bash )

    
por 07.02.2014 / 05:59
0

Adicionar uma linha como essa ao rc.local de um sistema deve funcionar:

$ touch count.txt; CNT=$(<count.txt); echo $(($CNT + 1)) > count.txt

Onde você deseja manter o arquivo de contagem, você pode simplesmente mover count.txt ou especificá-lo usando uma variável ou um caminho completo. O acima se encarrega de criar o arquivo na primeira vez que este é executado, e continuará a incrementar o número nesse arquivo toda vez que rc.local for executado.

OBSERVAÇÃO: O uso de $(<count.txt) pode apresentar um problema em certas implementações de sh ; nessas situações, você pode optar por usar $(cat count.txt) .

Exemplo

$ rm count.txt 
$ touch count.txt; A=$(<count.txt); echo $(($A + 1)) > count.txt
$ cat count.txt 
1

$ touch count.txt; A=$(<count.txt); echo $(($A + 1)) > count.txt
$ touch count.txt; A=$(<count.txt); echo $(($A + 1)) > count.txt
$ touch count.txt; A=$(<count.txt); echo $(($A + 1)) > count.txt
$ cat count.txt 
4
    
por 07.02.2014 / 08:50
0

Aqui eu apresento uma função de shell que lê o arquivo e incrementa um valor armazenado no arquivo. O valor é armazenado na variável count . Finalmente escreve o valor incrementado de volta ao arquivo.

#!/bin/sh

DATAFILEDIR='/var/cache/bootcount'
DATAFILE="$DATAFILEDIR"/count

update_data_file() {
  if [ -w "$DATAFILE" ]; then
    while IFS='=' read key value; do
      case "$key" in
        'count') count="$value" ;;
      esac
    done < "$DATAFILE"
  else if [ ! -d "$DATAFILEDIR" ]; then
    mkdir -p "$DATAFILEDIR"
    count=1
  fi fi

  count=$(($count + 1))
  echo "count=$count" > "$DATAFILE"
}

update_data_file

echo "Boot count is $count"

exit 0

Você pode colocar o script em /usr/local/bin e adicioná-lo a /etc/rc.local .

    
por 07.02.2014 / 08:38