bash: script repetidamente executado em .bash_profile bloqueia login

1

Eu tenho um script bash (vamos chamá-lo script.sh), que se parece com isso

while true; do
  if [ $someFile -eq = "1" ]
  then
    # make laptop LED blink here
  fi
done

Então, quando algum arquivo tem algum valor (no meu caso, este arquivo é alterado quando as mensagens chegam), o script faz um LED piscar. Como você pode imaginar, esse script nunca para.

Normalmente, faço chamadas quando preciso saber se há novas mensagens e não consigo abrir o laptop e verificar a tela.

Hoje eu disse para mim mesmo: vamos colocar isso no .bash_profile para que o script seja acionado no login.

Mas quando tento fazer o login, infelizmente a tela congela.

Como posso dizer ao bash: executar isso, mas de maneira não bloqueante?

Ou: há outra solução para disparar isso na inicialização sem congelar a máquina?

    
por Sefertto 10.04.2013 / 18:02

3 respostas

3

Bom pensamento. Mas você parou a seqüência de login em seu loop infinito :-)
Então, tente lançar seu script com um comando como

nohup ~/script.sh &

Dessa forma, ele será enviado para segundo plano e permitirá que seu login continue.

Melhor ainda, leia sobre cron e sleep ...

    
por 10.04.2013 / 18:14
0

A melhor maneira seria adicionar isso a cron . Crie um crontab com a seguinte linha:

@reboot ~/script.sh &

Também pode haver complicações da maneira como você está fazendo o led piscar. Você pode obter respostas melhores se incluir o script inteiro para que possamos ver o que está acontecendo.

    
por 10.04.2013 / 18:51
0

Em vez de executar isso via cron com um loop explícito, leia em inotify , "um subsistema de kernel do Linux que age para estender sistemas de arquivos para notar mudanças no sistema de arquivos, e relatar essas mudanças para aplicações ".

A documentação das ferramentas inotify-tools mostra como instalar e fornecer exemplos de uso.

    
por 15.04.2013 / 20:13