Mehrere Dienste in einer Zeile stoppen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

Mehrere Dienste in einer Zeile stoppen

Beitrag von Quickly1971 » 29.05.2010 16:05:02

Hallo.
Ich stehe gerade auf dem Schlauch. Habe ein Script geschrieben und würde es gerne etwas verkleinern.

In dem Script werden 12 Dienste gestoppt. Kann ich diese Befehle in eine Zeile setzen?

Bisher habe ich

Code: Alles auswählen

...
/etc/init.d/postfix stop
/etc/init.d/fetchmail stop
/etc/init.d/clamav-daemon stop
/etc/init.d/clamav-freshclam stop
/etc/init.d/spamassassin stop
usw......
Kann ich diese Stop-Befehle in eine Zeile bekommen?

Vielen Dank für Eure Hilfe.

Quickly
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

fbartels
Beiträge: 326
Registriert: 20.08.2009 10:06:56
Kontaktdaten:

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von fbartels » 29.05.2010 16:45:54

Hätte da eine Lösung mit zwei Zeilen für dich:

Code: Alles auswählen

SERVICE="postfix fetchmail .."
for i in $SERVICE; do /etc/init.d/$i stop; done
Gruß Felix

Benutzeravatar
Meillo
Moderator
Beiträge: 9252
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von Meillo » 29.05.2010 16:51:38

fbartels hat geschrieben:Hätte da eine Lösung mit zwei Zeilen für dich:

Code: Alles auswählen

SERVICE="postfix fetchmail .."
for i in $SERVICE; do /etc/init.d/$i stop; done
Wenn du keine Variable verwendest und statt dessen die Namen direkt an die Stelle schreibst hast du nur noch eine Zeile. (Abgesehen davon, kannst du natürlich immer auch Zeilen mit Strichpunkten aneinander hängen.)
Use ed once in a while!

fbartels
Beiträge: 326
Registriert: 20.08.2009 10:06:56
Kontaktdaten:

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von fbartels » 29.05.2010 16:59:12

@Meillo

stimmt natürlich, hat aber den Nachteil das es bei vielen Diensten schnell unübersichtlich wird.

Code: Alles auswählen

for i in postfix fetchmail ...; do [...]

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von ThorstenS » 29.05.2010 18:08:16

Falls dir /etc/init.d zu viel Schreibarbeit sein sollte:
Im Paket Debiansysvconfig steckt das binary service. Damit kannst du die Scripte auch beenden.

Benutzeravatar
Meillo
Moderator
Beiträge: 9252
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von Meillo » 29.05.2010 18:21:52

fbartels hat geschrieben:@Meillo

stimmt natürlich, hat aber den Nachteil das es bei vielen Diensten schnell unübersichtlich wird.

Code: Alles auswählen

for i in postfix fetchmail ...; do [...]
Dem stimme ich voll zu. Ich würde es auch so machen wie du es vorgeschlagen hast. (Nur würde ich den Variablennamen in Kleinbuchstaben schreiben.)
Use ed once in a while!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von rendegast » 29.05.2010 19:08:39

Einen Runlevel ohne diese Dienste?
(Bei debian sind in Grundeinstellung Runlevel 2=3=4=5)
Und dann einfach

Code: Alles auswählen

init $Runlevel
Zudem werden sie dann auch in der richtigen Reihenfolge gestoppt bzw gestartet,
insbesondere bei Einrichtung mittels 'insserv'.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von Saxman » 29.05.2010 21:19:16

Quickly1971 hat geschrieben: Bisher habe ich

Code: Alles auswählen

...
/etc/init.d/postfix stop
/etc/init.d/fetchmail stop
/etc/init.d/clamav-daemon stop
/etc/init.d/clamav-freshclam stop
/etc/init.d/spamassassin stop
usw......
Nur mal am Rande, weil Ich das hier lese und es sich noch nicht herumgesprochen hat.
The debian Way...
man invoke-rc.d hat geschrieben:All access to the init scripts by Debian packages’ maintainer scripts should be done through invoke-rc.d.
Macht auch mehr Spass da es sich schneller tippen lässt.

Code: Alles auswählen

/et[TAB]in[TAB].[TAB]ssh stop
gegen:

Code: Alles auswählen

invo[TAB] ss[TAB] stop
:D :D :D
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von ThorstenS » 31.05.2010 07:25:51

Mit service sparst du dann sogar noch ein Zeichen - Vorraussetzung ist aber ein aktiviertes bash-completion
ser[TAB]ss[TAB]sto[TAB]

Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

Re: Mehrere Dienste in einer Zeile stoppen

Beitrag von Quickly1971 » 31.05.2010 13:41:24

Vielen Dank für die aufgezeigten Wege!

Wieder was dazu gelernt. :hail:

Quickly
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

Antworten