Como matar um processo contínuo iniciado a partir de rc.local?

3

Estou trabalhando em um sistema operacional Raspberry Pi com Raspbian (baseado no Debian). Para testes, adicionei esse comando em /etc/rc.local :

python /home/pi/test.py

Funciona bem ao iniciar este script. Mas o problema é que eu esqueci que há um loop infinito no script, algo como:

while True:
    print 'Hello"
    time.sleep(5)

Esse loop bloqueia o sistema, então não posso entrar no sistema para editar o script. Ctrl + C não funciona para matá-lo. Então, eu me pergunto como matar um processo contínuo iniciado a partir de rc.local ?

    
por Skyler 31.10.2014 / 03:02

2 respostas

4

Você não pode matar o processo de forma interativa a partir do console, mas você tem várias opções para evitar a execução dele durante a inicialização.

a) Inicialize em um modo de usuário único

Anexe o s separado por espaço à linha em cmdline.txt na partição de inicialização (FAT). Após a inicialização, você pode renomear /etc/rc.local , torná-lo não executável ( chmod a-x /etc/rc.local ) ou editá-lo.

b) Inicialize com um shell em vez de init

Anexe o init=/bin/sh separado por espaço à linha em cmdline.txt . Isso irá ignorar o início de qualquer script de inicialização. Então você pode fazer as mesmas medidas contra /etc/rc.local como acima.

c) Monte a partição Linux em um sistema diferente

Coloque o cartão SD em um sistema diferente e monte a partição com /etc/rc.local . Então você pode fazer as mesmas medidas contra /etc/rc.local como acima.

    
por 31.10.2014 / 03:41
0

Eu tenho um mesmo tipo de aplicativo que é reproduzido infinitamente após a reinicialização. Para qualquer alteração, eu monto isso em outro sistema e faço as alterações e coloco de volta no meu quadro. É a maneira mais fácil de fazer isso.

    
por 31.10.2014 / 04:07