Удобное взаимодействие с консолью с отметкой даты/времени, например, с использованием псевдонимов оболочки?

Удобное взаимодействие с консолью с отметкой даты/времени, например, с использованием псевдонимов оболочки?

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

Это заставило меня задуматься - возможно ли исказить псевдоним оболочки таким образом, чтобы по умолчанию 'date' вызывался до и после каждой записи в командной строке? Было бы очень полезно иногда иметь возможность прокручивать терминал назад и получать представление о том, сколько времени заняло то или иное действие.

Есть ли у других людей умные способы решения этой проблемы? Я уверен, что это достаточно распространенный сценарий.

Что касается решений с этим подходом, я предполагаю, что это немного связано с этим вопросом. Запустить интерактивную оболочку bash с начальными командами без немедленного возврата в оболочку («супер»)

где ясно, что можно добавлять команды.. но это только часть решения. Возможно, добавление команд с последующим выводом в командную строку текущего времени было бы довольно изящным решением?

Мысли?

решение1

Вы можете просто изменить переменную приглашения оболочки, PS1чтобы она отображала текущую временную метку. Можно использовать один из следующих вариантов:

\t     the current time in 24-hour HH:MM:SS format
\T     the current time in 12-hour HH:MM:SS format
\@     the current time in 12-hour am/pm format
\A     the current time in 24-hour HH:MM format

Вы можете найти их вместе с другими опциями в man bash. Отредактируйте свой .bashrcфайл, чтобы внести PS1необходимые изменения.

Затем вы можете определить, когда выполняется любая команда. Конечно, если вы будете бездействовать в течение длительного времени, прежде чем нажать Enter, вы не получите точное время.

Редактировать:Другая возможность — использовать tsутилиту, чтобы показать, как продвигается ваш скрипт. Выполните ваш скрипт как:

$ /path/to/script | ts

Каждое эхо-выражение будет отображаться с меткой времени.

решение2

ПРИМЕЧАНИЕ:это не прямой ответ на вопрос автора поста, но, возможно, он может быть полезен для решения его проблемы.

Для уже запущенных процессов вы можете получить дату/время начала, выполнив простую команду ps ax -F. Она покажет вывод, аналогичный следующему:

apache 1733 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1734 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1735 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1736 1678 0 83467 7768 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1737 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1738 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd

Как вы видите, в 8-м столбце указана дата/время начала.

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