Arresta il programma in esecuzione all'avvio in Linux


29

Come posso interrompere un programma in esecuzione all'avvio in Linux. Voglio rimuovere alcune app all'avvio per consentirle di essere gestite supervisordad esempio da apache2


Questo è esattamente il motivo per cui non l'ho taggato ... Sto cercando tutte le varianti mentre lavoro con diverse distro.
Frozenskys,

Risposte:


29

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.


Perché hai bisogno di -f (suppongo sia la forza) sulle distribuzioni basate su Debian?
Frozenskys,

2
Ci sono due set di file in gioco qui. Hai l'attuale script di init in /etc/init.d/ e hai i collegamenti ad esso nella tua directory runlevel /etc/rcrunlevel.d/. Questi ragazzi puntano allo script in /etc/init.d/ Se non usi -f update-rd.d fallirà A MENO CHE lo script in /etc/init.d/ sia già cancellato. Se usi -f update-rc.d eliminerà correttamente i file di collegamento indipendentemente dal fatto che lo script /etc/init.d/ sia stato eliminato.
jacksonh,

Ah, questo ha molto senso, avevo dimenticato che gli script runlevel erano solo collegamenti agli script init. Grazie per la spiegazione aggiuntiva.
Frozenskys,

6

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.conffile 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.


2

Sui recenti sistemi Fedora e Future RHEL

systemctl disable httpd.service

disabiliterà il servizio httpd


Grazie! Avevo provato molti metodi, ma questo systmctlcomando ha funzionato bene.
amato da Gesù, il

1

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.


Benvenuto in U&L e grazie per il tuo contributo! Vorrei sottolineare che questa domanda ha circa otto anni ormai, quindi la risposta accettata era corretta per il momento. L'uso di systemctl ora può essere corretto , ma è corretto per una domanda diversa .
Jeff Schaller

@Prince grazie per le spiegazioni dettagliate. Mi ha aiutato a capire come funziona l'avvio di avvio nel mio Xubuntu.
amato da Gesù, il

0

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 stopcome root.


0

Su Ubuntu 10.04 puoi controllare alcuni programmi di avvio dalla GUI.

SystemPreferencesStartup Applications

Preferenze delle applicazioni di avvio


1
L'immagine originale non è più lì.
Tshepang,

-1

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.