![Удобное взаимодействие с консолью с отметкой даты/времени, например, с использованием псевдонимов оболочки?](https://rvso.com/image/696999/%D0%A3%D0%B4%D0%BE%D0%B1%D0%BD%D0%BE%D0%B5%20%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5%20%D1%81%20%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C%D1%8E%20%D1%81%20%D0%BE%D1%82%D0%BC%D0%B5%D1%82%D0%BA%D0%BE%D0%B9%20%D0%B4%D0%B0%D1%82%D1%8B%2F%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8%2C%20%D0%BD%D0%B0%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%2C%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%D0%BE%D0%B2%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8%3F.png)
Поэтому я часто обнаруживаю, что мне действительно хочется знать, когда я запустил процесс (или скрипт) после того, как обнаружил, что он занимает много времени... то есть я не могу добавить дату до и после него в командной строке (не прерывая то, что, как я теперь знаю, занимает много времени... и тогда процесс может завершиться, пока меня нет у терминала.
Это заставило меня задуматься - возможно ли исказить псевдоним оболочки таким образом, чтобы по умолчанию '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-м столбце указана дата/время начала.