Что такое Linux для OpenVMS DCL Ctrl/T?

Что такое Linux для OpenVMS DCL Ctrl/T?

ОтOpenVMS Словарь DCL:

Функция 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.

Связанный контент