Функция Ctrl/T отображает одну строку статистической информации о текущем процессе. При нажатии Ctrl/T во время сеанса интерактивного терминала она на мгновение прерывает текущую команду, процедуру команды или изображение для отображения статистики. Статистическая информация включает в себя имена узлов и пользователей, текущее время, текущий процесс, использование ЦП, количество ошибок страниц, уровень активности ввода-вывода и использование памяти. Например:
BOSTON::SMITH 16:21:04 EDT CPU=00:00:03.33 PF=778 IO=296 MEM=277
Что такое Linux для OpenVMS DCL Ctrl/T?
решение1
Я искренне сомневаюсь, что есть точный аналог. Природа процесса Linux (и, следовательно, выполнения команды) настолько отличается от природы процесса VMS и того, как он выполняет команду, что ничего подобного на самом деле существовать не может.
Насколько я понимаю, VMS, когда вы запускаете команду типа TYPE SOMEFILE.TXT
, DCL считывает TYPE.EXE в памятьтот же процессчто DCL запускается, исправляет все перемещения, которые нужны TYPE.EXE, а затем переходит к первой инструкции TYPE.EXE. Когда TYPE.EXE выполнил свою работу, ОС возвращает управление коду DCL, который все еще находится в том же процессе, что и TYPE.EXE.
Этот тяжеловесный процесс, включающий DCL, таблицу лексических символов и хорошо известную таблицу переходов адресов различных вещей, позволяет работать Ctrl-T. Эта последовательность клавиш — всего лишь особая форма прерывания клавиатуры, и код DCL в любом данном процессе может выполнять работу, которую вы описываете.
Процесс Linux не всегда имеет оболочку (аналог DCL). Процесс Linux может даже не иметь кода обработчика прерываний клавиатуры, зарегистрированного в ядре, что означало бы, что любое прерывание клавиатуры (Ctrl-C или Ctrl-) заставляет ядро завершить процесс.
решение2
Семейство BSD UNIX поддерживает сигнал SIGINFO [1] и управляющий символ VSTATUS [2], обычно привязанный к Ctrl/T. Вывод выглядит следующим образом:
load: 0.12 cmd: cat 13579 [ttyraw] 0.00u 0.00s 0% 880k
[1] сигнал(7) [2] stty(1)
решение3
В Linux dd поддерживает SIGUSR1 для статуса: http://man7.org/linux/man-pages/man1/dd.1.html
Sending a USR1 signal to a running 'dd' process makes it print I/O statistics to standard error and then resume copying.
В BSD dd поддерживает SIGINFO для статуса: https://www.freebsd.org/cgi/man.cgi?query=dd&sektion=1
Если dd получает сигнал SIGINFO (см. аргумент status для stty(1)), текущие счетчики входных и выходных блоков будут записаны в стандартный вывод ошибок в том же формате, что и стандартное сообщение о завершении. Если dd получает сигнал SIGINT, текущие счетчики входных и выходных блоков будут записаны в стандартный вывод ошибок в том же формате, что и стандартное сообщение о завершении, и dd завершит работу.
Кстати: в программе VMS BACKUP есть хороший вывод для Control-T.