Primeiramente, conforme escrito, seu ping
será executado para sempre, a menos que seja incapaz de encontrar o host, porque ele é executado até que ele capture um sinal (ou seja, SIGINT
) dizendo para parar.
Os scripts em /etc/rc.local
não são, pelo que me lembro, executados em segundo plano. Como tal, o seu script nunca termina, pois é um loop infinito. Dependendo exatamente do motivo pelo qual você está fazendo isso, você pode contextualizá-lo ou alterá-lo para sair quando uma condição for atendida.
Se você está fazendo isso para atrasar até que uma rede apareça, você pode:
while ! ping -c1 10.9.0.1; do
sleep 1
done
Ou, se você realmente quiser que um ping de uma vez por segundo seja executado em segundo plano, você pode usar screen
ou nohup
ou disown
para separar o processo do shell e permitir que a inicialização prossiga.
De qualquer maneira, isso é uma coisa potencialmente perigosa para fazer, já que você não tem nenhum meio de parar o script na inicialização se as coisas derem errado.
Você pode ser mais bem servido com um script em /etc/init.d/
, que está vinculado ao seu nível de execução escolhido que tem lógica suficiente para abortar se as coisas demorarem demais.