Как я сказал вhttps://unix.stackexchange.com/a/233855/5132и даже в обсуждении в списке рассылки, на которое косвенно ссылаются & #9786; …
Желание не очищать виртуальный терминал между -выключенным и последующим входом -в значительной степени плывет против течения, как обнаружили Грег Вуледж и другие. Наличие конфиденциальных выходных данных от привилегированных пользователей или боссов, остающихся после выхода -из системы, было проблемой безопасности для Unices (и других операционных систем удаленного -доступа с разделением времени )с 1970-х годов, и для этого требуется много усилий, чтобы отменить все то, что люди приложили для предотвращения этой проблемы. Как вы заметили, для этого они ввели несколько перекрывающихся механизмов.
clear_console
в сценариях выхода из оболочки. (Это само по себе проблематично, поскольку плохо работает с графическими программами, работающими на виртуальном терминале ядра #1, и не работает ни с какими другими типами терминалов, виртуальными или реальными.)Эту команду необходимо удалить.
mingetty
, терминал очищается. (Это происходит перед входом в систему -, что означает, что выходные данные терминала могут остаться нестертыми, если служба входа в систему TTY остановлена. По иронии судьбы, эту функциональность лучше было бы поместить в login
, который, благодаря необходимости PAM, все еще работает с выключенным журналом -.)Чтобы отключить это, необходимо установить параметр --noclear
. В операционных системах systemd это включает в себя запись одного или нескольких файлов переопределения файла модуля, изменение настройки ExecStart
или просто указание autovt@.service
на локальный файл модуля собственной разработки.
getty@.service
сервисный модуль шаблона устанавливает TTYVTDisallocate=yes
, который указывает systemd очистить виртуальный терминал ядра. (Это снова не работает ни с какими другими типами терминалов,даже не пользовательское -пространство виртуальных терминалов, что частично отражено в его названии.)Это также должно быть удалено, опять же с переопределением или другим шаблоном службы, на который указывает autovt@.service
.
Конечно, они не полностью совпадают. mingetty
бесполезен для реальных терминалов, подключенных через последовательные устройства; clear_console
, как ни странно, является частью пакета оболочки Bourne Again и не вызывается людьми, у которых есть Korn, Z, Almquist, Fish, Watanabe или другая оболочка в качестве интерактивной оболочки входа в учетную запись пользователя; а механизм systemd TTYVTDisallocate
неприменим к не -systemd операционным системам.
Как я уже говорил в ходе обсуждения в списке рассылки несколько лет назад, console_clear
вдвойне не нужен. С 2011 года Linux, встроенный -в эмулятор терминала, поддерживает управляющую последовательность ED 3
для очистки буфера обратной прокрутки, поэтому возиться с переключением виртуальных терминалов, имеющим эти пагубные побочные -эффекты, в первом случае не нужно. место. Я добавил команду console-clear
в набор инструментов nosh несколько лет назад, которая выдает эту управляющую последовательность (и, таким образом, может использоваться не только с Linux, встроенным -в эмулятор терминала, а также для работы через удаленное соединение ). Команда ncurses clear
в настоящее время также умеет генерировать соответствующие управляющие последовательности, если так указано в terminfo.
И, конечно же, console-terminal-emulator
стандартно очищает буфер дисплея при зависании терминала.
console-terminal-emulator
. Направляющая ноша . Программное обеспечение.console-clear
. Направляющая ноша . Программное обеспечение.