Могу ли я предотвратить разбиение вывода «service foo status» на страницы через «меньше»?

# запускает строку комментария в sed:

 #comment 
 

Комментарий продолжается до следующей новой строки (или до конца фрагмента сценария -e).

Итак, команда ничего делать не должна.

46
07.02.2017, 19:48
4 ответа

Из man systemctl :

ENVIRONMENT
...
   $SYSTEMD_PAGER
       Pager to use when --no-pager is not given; overrides $PAGER.
       Setting this to an empty string or the value "cat" is equivalent to
       passing --no-pager.

   $SYSTEMD_LESS
       Override the default options passed to less ("FRSXMK").

Итак, где-то в инициализации вашей среды, установите:

SYSTEMD_PAGER=
19
20.08.2021, 11:46

less обычно отключает режим пейджера, если обнаруживает, что его вывод не является терминалом. Поэтому вы можете попробовать сделать вывод вашей команды

sudo service supervisor status | cat
37
20.08.2021, 11:46

Ubuntu является системой systemd, где команда service status фактически вызывает systemctl status, а systemctl имеет опцию --no-pager, которая делает именно то, что вы ищете. Поэтому, возможно, вам будет лучше использовать прямую команду systemctl в вашем сценарии.

sudo systemctl --no-pager status supervisor

переменная окружения SYSTEMD_PAGER

Другой способ, как указал @jwodder, - установить переменную окружения SYSTEMD_PAGER. Это имеет дополнительное преимущество, поскольку также влияет на вывод systemctl при вызове другим приложением, например service.

export SYSTEMD_PAGER=
sudo service supervisor status

Позволит вам получить тот же результат.

78
20.08.2021, 11:46

Вам также потребуется изменить файл sudoers:

 Defaults        env_keep += "SYSTEMD_PAGER"
4
20.08.2021, 11:46

Теги

Похожие вопросы