Не так элегантно, но работает. Пожалуйста, замените ext4 на свою собственную fs (или на grep, если их много). Также замените 10 своим пороговым значением.
for fs in `cat /proc/mounts | grep ext4 | awk ' { print $2 }' | tr '\n' ' '` ; do SPC=$( df $fs | awk 'END{ print $(NF-1) }' | sed 's/[^0-9]*//g' ) ; if [ $SPC -gt 10 ]; then echo "$fs used more than 10"; fi done
Справочная страница для systemctl
(man systemctl
) ясно объясняет это поведение и даже предлагает варианты его изменения:
$SYSTEMD_PAGER
Пейджер для использования, когда--no-pager
не задан; переопределяет$PAGER
. Если ни$SYSTEMD_PAGER
, ни$PAGER
не установлены, по очереди пробуется набор известных реализаций пейджера, включаяless
(1) и. more
(1), пока не будет найдено одно. Если реализация пейджера не обнаружена, пейджер не вызывается. Установка для этой переменной среды пустой строки или значения "cat
" эквивалентна передаче--no-pager
.
Таким образом, в вашем случае решение состоит в том, чтобы установить переменную среды при входе в систему:
export SYSTEMD_PAGER=cat
В более широком смысле вы можете определить среду PAGER в конфигурации среды выполнения bash
# In.bashrc or.bash_profile
export PAGER='cat'
Я часто захожу в систему, где менять ~/root/.bashrc
, /etc/profile
и т. д. — плохая идея. И я не всегда запоминаю имя параметра SYSTEMD_PAGER
.
Так что, как ленивый хакер, я просто передаю вывод через cat
илиless
(мой любимый пейджер ), вот так:
systemctl status | cat
systemctl status | less
Этот прием для cat
работает и для многих других программ. Например, если я не хочу иметь дело с тем, как info
перемещается по своим страницам, я просто делаю это:
info bash | less