Сортировка служб в Linux

Сортировка служб в Linux

У меня есть несколько серверов Linux, на каждом из которых запущены разные службы. Когда я запускаю service --status-all, я получаю несколько экранов вывода. Я подумал, что было бы умнее передать его в sort, и посмотреть в группе, какие службы запущены, не запущены или неизвестны. Я выполнил команду, но она отсортировала только [ ? ]записи сверху, а все [ - ]записи и [ + ]слиплись в одну кучу!

Команда, которую я использовал, была service --status-all | sort. Есть ли лучший способ также отсортировать знаки «плюс» и «минус»?

Это касается только Debian-компьютера, работающего только из командной строки.

решение1

Похоже, что service --status-allзаписывает [ + ]и [ - ]результаты в stdout, а [ ? ]результаты в stderr. Поэтому, чтобы использовать sortдля сортировки всех из них, вам придется объединить потоки stdout и stderr следующим образом:

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

На сортировку влияет значение LC_COLLATE, которое по умолчанию совпадает с вашими LANGнастройками. Если вы не хотите менять значение LC_COLLATEдля всех своих приложений, но хотите, чтобы этот список был отсортирован по +, -и ?, то используйте вместо этого следующую команду:

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

Чтобы настроить LC_COLLATEвсе приложения, вставьте это в свой ~/.profile, ~/.bash_profile, или любой другой скрипт, который используется для настройки вашей среды при входе в систему:

export LC_COLLATE=C

Связанный контент