Sortieren von Diensten in Linux

Sortieren von Diensten in Linux

Ich habe ein paar Linux-Server, auf denen alle unterschiedliche Dienste laufen. Wenn ich ausführe service --status-all, bekomme ich ein paar Bildschirmausgaben. Ich dachte, ich wäre schlau und leite sie an weiter sort, um als Gruppe zu sehen, welche Dienste gestartet, nicht gestartet oder unbekannt sind. Ich habe den Befehl ausgeführt, aber er sortierte nur die [ ? ]Einträge oben und alle Einträge [ - ]und [ + ]sind zu einem einzigen Durcheinander zusammengeballt!

Der von mir verwendete Befehl war service --status-all | sort. Gibt es eine bessere Möglichkeit, auch die Plus- und Minuszeichen zu sortieren?

Dies gilt insbesondere für eine Debian-Box, auf der nur die Befehlszeile ausgeführt wird.

Antwort1

Es scheint, dass service --status-alldie Ergebnisse in stdout geschrieben werden [ + ], [ - ]die [ ? ]Ergebnisse jedoch in stderr. Um sortsie alle zu sortieren, müssen Sie daher die stdout- und stderr-Streams wie folgt kombinieren:

service --status-all 2>&1 | sort

Die Sortierung wird durch den Wert von beeinflusst LC_COLLATE, der standardmäßig mit Ihrer Einstellung übereinstimmt LANG. Wenn Sie den Wert von nicht für alle Ihre Anwendungen ändern möchten, LC_COLLATEdiese Liste aber nach +, -und sortieren möchten ?, verwenden Sie stattdessen diesen Befehl:

service --status-all 2>&1 | LC_COLLATE=C sort

Um dies LC_COLLATEfür alle Ihre Anwendungen festzulegen, fügen Sie dies in Ihr ~/.profile, ~/.bash_profileoder ein anderes Skript ein, das zum Festlegen Ihrer Umgebung bei der Anmeldung verwendet wird:

export LC_COLLATE=C

verwandte Informationen