
У меня есть несколько серверов 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