Come posso interrompere un programma in esecuzione all'avvio in Linux. Voglio rimuovere alcune app all'avvio per consentirle di essere gestite supervisord
ad esempio da apache2
Come posso interrompere un programma in esecuzione all'avvio in Linux. Voglio rimuovere alcune app all'avvio per consentirle di essere gestite supervisord
ad esempio da apache2
Risposte:
A seconda della distribuzione, utilizzare lo strumento chkconfig o update-rc.d per abilitare / disabilitare i servizi di sistema.
Su un sistema in stile redhat / suse / mandrake:
sudo chkconfig apache2 off
Su Debian:
sudo update-rc.d -f apache2 remove
Dai un'occhiata alle loro pagine man per maggiori informazioni.
Se hai a che fare con un moderno sistema Ubuntu e alcune altre distro potresti dover avere a che fare con una combinazione di script init tradizionali e script upstart. La gestione degli script di init è coperta da altre risposte. Di seguito è un modo per arrestare l'avvio di un servizio di avvio:
# mv /etc/init/servicename.conf /etc/init/servicename.conf.disabled
Il problema con questo metodo è che non ti consente di avviare il servizio usando:
# service start servicename
Un'alternativa a questa è aprire il servicename.conf
file nel tuo editor preferito e commentare tutte le righe che iniziano con:
start on
Cioè, cambialo in
#start on ...
dove "..." è quello che era dopo "start on" in precedenza. In questo modo, quando si desidera riattivarlo, non è necessario ricordare quali fossero i parametri "start on".
Infine, se hai una nuova versione di upstart puoi semplicemente aggiungere la parola "manuale" alla fine del file di configurazione. Puoi farlo direttamente dalla shell:
# echo "manual" >> /etc/init/servicename.conf
Ciò farà in modo che upstart ignori qualsiasi frase "start on" precedentemente nel file.
Sui recenti sistemi Fedora e Future RHEL
systemctl disable httpd.service
disabiliterà il servizio httpd
systmctl
comando ha funzionato bene.
Per elencare tutti i servizi di avvio
systemctl
Per interrompere l'esecuzione di un servizio all'avvio
sudo systemctl disable servicename
Ad esempio, se dobbiamo interrompere l'esecuzione del server SSH all'avvio
sudo systemctl disable sshd.service
Possiamo abilitarlo nuovamente usando
sudo systemctl enable sshd.service
Quasi tutte le distribuzioni di Linux usano systemd per i servizi di avvio del bootstrap. Quindi i comandi sopra funzionano per la maggior parte delle distro.
Slackware e Arch Linux hanno metodi simili per arrestare / avviare i processi all'avvio, diversi dagli esempi di stile Ubuntu e Redhat sopra riportati.
Sia in Linux Slackware che Arch, gli script sh esistono nella directory /etc/rc.d
, in genere uno script per demone o uno script per sottosistema.
Ad esempio, Slackware avvia il server Web Apache con uno script /etc/rc.d/rc.httpd
, chiamato al momento opportuno durante l'avvio del sistema con l'argomento "start". Arch Linux ha script con nomi diversi, ma lo stesso tipo di cose continua.
Per impedire l'avvio del processo durante l'avvio del sistema, su Slackware, rendi lo script appropriato in /etc/rc.d non eseguibile. Per impedire ad Apache di avviarsi al prossimo avvio:
chmod -x /etc/rc.d/rc.httpd
Per interrompere un Apache che è stato avviato all'avvio: /etc/rc.d/rc.httpd stop
devi essere root.
Arch è un po 'più complesso. Il file /etc/rc.conf, uno script di shell, ha un array DAEMONS. Per impedire l'avvio di Apache all'avvio, è necessario modificare questa riga in /etc/rc.conf:
DAEMONS=(hal syslog-ng network netfs crond alsa sshd httpd ntpd postgresql)
A questa linea:
DAEMONS=(hal syslog-ng network netfs crond alsa sshd ntpd postgresql)
Per interrompere un apache già in esecuzione, eseguiresti /etc/rc.d/httpd stop
come root.
Su Ubuntu 10.04 puoi controllare alcuni programmi di avvio dalla GUI.
System→ Preferences→Startup Applications
1) tocca il tasto super sulla tastiera 2) cerca "Applicazioni di avvio" 3) scegli quale programma vuoi disabilitare 4) premi come questa risposta se stai lavorando.