
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-all
die Ergebnisse in stdout geschrieben werden [ + ]
, [ - ]
die [ ? ]
Ergebnisse jedoch in stderr. Um sort
sie 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_COLLATE
diese Liste aber nach +
, -
und sortieren möchten ?
, verwenden Sie stattdessen diesen Befehl:
service --status-all 2>&1 | LC_COLLATE=C sort
Um dies LC_COLLATE
für alle Ihre Anwendungen festzulegen, fügen Sie dies in Ihr ~/.profile
, ~/.bash_profile
oder ein anderes Skript ein, das zum Festlegen Ihrer Umgebung bei der Anmeldung verwendet wird:
export LC_COLLATE=C