Lança um comando no final da inicialização do Linux

2

Eu tenho um Raspberry sem tela / teclado / mouse que não faz nada além de lançar um fluxo de rádio na inicialização:

mplayer http://95.81.146.2/fip/all/fiphautdebit.mp3

Eu coloquei este comando no final de /etc/rc.local . Infelizmente, em 50% das vezes, a reprodução não inicia (talvez porque o WIFI não tenha sido conectado corretamente ainda?) E eu tenho que reiniciar para fazer o som tocar.

Como posso verificar o que aconteceu durante rc.local inicialização, mais tarde, com uma conexão SSH? Eu tentei com dmesg , mas não consegui ver o resultado de mplayer . Qual é o script mais apropriado para colocar tal comando? ( rc.local , /etc/profiles ?)

    
por Basj 09.02.2014 / 23:09

1 resposta

2

Em vez de executar o mplayer diretamente da sua inicialização, eu escreveria um script e o executaria.

Seu script acabaria por executar o mesmo comando mplayer que você deu, mas antes da mão você pode verificar se a sua conexão wifi está funcionando e funcionando (talvez fazendo ping no seu roteador), isso dá o seu controle de script. Pode esperar até que a conexão apareça e depois iniciar o mplayer.

Se você colocar o script em algo como rc.local, ele será iniciado uma vez na inicialização. se você iniciá-lo a partir do seu perfil, ele será iniciado quando você fizer o login.

Aqui está um exemplo de script que aguarda até que ele pinte com sucesso um endereço IP antes de iniciar o mplayer.

#!/bin/bash

RouterIP="128.0.0.1"
TimeOut=2
WaitTime=8


echo "Waiting for network connection"
while ! ping -q -c 1 -w $TimeOut $RouterIP > /dev/null
do
  echo Timeout, waiting $WaitTime seconds
  sleep $WaitTime
  echo "Waiting for network connection"
done

mplayer blah blah

Você pode alterar o endereço IP para a porta interna de seu roteador e corrigir a linha do mplayer.

Nomeie-o como startRadio e torne-o executável e teste-o.

'./ startRadio

Adicione-o ao script de inicialização desejado, mas redirecione stdout e stderr para / dev / null e inicie-o como um processo em segundo plano.

por exemplo,

/path/to/your/script/startRadio >/dev/null 2>&1 &
    
por 10.02.2014 / 01:53