Como executar um script automaticamente no linux?

4

Eu uso a linha de comando do linux e sou iniciante nisso. Eu criei dois arquivos, test.sh e test.log . o processo é qualquer saída que vai para test.log e eu obtenho com sucesso a saída em test.log . Eu quero executar um script automaticamente a cada 5 segundos e escrever somente se houver alguma alteração com o arquivo .sh .

test.sh contém:

#!/bin/bash
while [ true ] ;
do
echo "" date and Time >> test.log
date +%x_r >> test.log
lsusb >> test.log

sleep 5;
done

Minha pergunta: Existe alguma maneira de executá-lo automaticamente e anexar apenas a nova alteração no arquivo com a nova data? por exemplo, se alguém inserir um dispositivo USB na minha máquina, ele será anexado à nova data no arquivo de log existente.

    
por Ghassan 16.11.2016 / 16:17

2 respostas

1

Isso deve funcionar, ele armazena a última saída de lsusb em $ lastoutput e anexa se eles forem iguais ou não

#!/bin/bash
while [ true ] 
do
    currentoutput="$(lsusb)"
    if [ "$currentoutput" != "$lastoutput" ]
    then
        echo "" date and Time >> test.log
        date +%x_r >> test.log
        lastoutput="$(lsusb)"
        lsusb >> test.log
    fi
    sleep 5
done
    
por Evan Chen 16.11.2016 / 17:29
-1

Você precisa:

  • coloque seu arquivo no diretório /etc/init.d
  • torne seu arquivo sh executável (use o comando chmod +x )

Se não funcionar corretamente, crie um link simbólico do seu arquivo para /etc/rc.d/ :

ln -s /etc/init.d/test.sh /etc/rc.d/ 

Isso ajuda:)

    
por Dodi lila 16.11.2016 / 18:25

Tags