1

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

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

Это специально для коробки Debian, запускается только из командной строки

1 ответ1

2

Похоже, что service --status-all записывает результаты [ + ] и [ - ] в стандартный вывод, но [ ? ] результаты в 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .