Итак, я часто обнаруживаю, что действительно хочу знать, когда я запустил процесс (или скрипт) после того, как обнаружил, что это занимает много времени .. то есть я не мог предварительно отложить дату до и после нее в командной строке (не прерывая что-то, что я теперь знаю, занимает много времени) .. и тогда процесс может завершиться, пока я буду далеко от терминала.
Это заставило меня задуматься - можно ли исказить псевдоним оболочки так, чтобы по умолчанию «дата» вызывалась до и после каждой записи в командной строке? Было бы очень полезно иногда прокручивать назад в терминале и ощущать, сколько времени занимает работа.
Есть ли у других умные способы решить эту проблему - я уверен, что это достаточно распространенный сценарий.
Что касается решений с этим подходом, я предполагаю, что это немного связано с этим Q. Запустите интерактивную подоболочку bash с начальными командами, не возвращаясь сразу в ("супер") оболочку
где ясно, что вы можете добавлять команды ... но это только часть решения. Возможно, предварительное ожидание, а затем получение приглашения оболочки для отображения текущего времени было бы довольно изящным решением?
Мысли?
Вы можете просто изменить приглашение оболочки 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
Каждый оператор эха будет отображаться с отметкой времени.
НОТА: это не прямой ответ на вопрос OP, но, возможно, он может быть полезен для решения этой проблемы.
Для уже запущенных процессов вы можете получить дату / время начала, выполнив простой 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-й столбец показывает дату / время начала.