후시에서 명령 실행 시간 찾기


22

방금 bash 프롬프트에서 장기 실행 프로세스를 실행했습니다. 뒤늦게, 나는 그것을 실행 time하거나 그것을 시작한 시간을 적어두기를 바랍니다.

이 정보를 소급하여 얻는 방법이 있습니까? 는 .bash_history타임 스탬프를 포함하지 않는 것 같습니다.

필자의 경우 Mac OS X이지만 일반적인 Unix / Linux 솔루션에 관심이 있습니다.

명확히하기 위해 프로세스가 완료되었으며 절대적으로 필요한 경우가 아니라면 다시 실행하지 않는 것이 좋습니다!


나는 또한 이것을 잊어 버렸고 시간을 표시하도록 프롬프트를 구성했습니다.
수학

답변:


23

bash 실제로 껍질을 닫을 때까지의 시간을 기억합니다.

그러니 달리세요

HISTTIMEFORMAT='%x %X ' history

당신도 넣어 경우

HISTTIMEFORMAT=<some format>

에서 종료시 ~/.bashrc에도 기록 ~/.bash_history되므로 이전 셸 세션에서 발생한 일도 확인할 수 있습니다.


굉장한 마이크, 심지어 이것이 가능하다고 생각하지 않았습니다.
Tim

9

Mikel의 대답은 프로그램을 실행하고 잠시 동안 가면 프로세스가 언제 끝났는지 확실하게 알 수 없다는 점을 제외하면 좋습니다. 따라서 프로그램을 시작한 시간이 있어도 시간이 얼마나 걸 렸는지 알 수 없습니다.

준비하지 않고 찾아야 할 경우에 대한 해결책이 없습니다. 그러나 다시 그렇게하려는 경우 나처럼 할 수 있습니다 : 쉘 프롬프트와 함께 현재 시간을 인쇄하십시오. 이렇게하면 터미널이 열려 있으면 프로그램을 시작한 시간과 다음 프롬프트가 인쇄되는 시간을 볼 수 있습니다. 약간의 수학은 실행 시간을 얻을 것입니다.

에서이 작업을 수행하려면 bash다음을 입력하십시오 .bashrc.

export PS1="\A \u@\h \W \$ "

에서 zsh, 당신이를 넣어 .zshrc:

export PS1="%D{%H:%M} %n@%m %1~ %# "

위의 내용은 쉘 프롬프트 형식을 제공 <time> <username>@<hostname> <current dir> <$ or % or #>합니다. 다른 쉘과 미친 멋진 프롬프트에 대해서는 쉘 의 매뉴얼 페이지를 읽으십시오.

참고 : 고정밀이 필요하거나 프로그램이 너무 많은 출력을 생성하여 이전 프롬프트를 볼 수없는 경우에는 도움이되지 않습니다.


2
이러한 이유로 쉘 프롬프트에 타임 스탬프를 포함하지만 프롬프트에 표시된 시간은 프롬프트가 인쇄 된 시간이며 실제로 입력을 마치고 Enter 키를 눌러 명령을 시작하는 시간과는 다를 수 있습니다. 다시 말해서, "유휴 시간 프롬프트"를 직접 고려해야합니다.
jw013

5

프로세스가 여전히 실행중인 ps경우 시작 시간과 사용 된 CPU 시간을 얻는 데 사용할 수 있습니다.

예를 들어, 모든 프로세스의 경우 :

ps -eo cputime,start,pid,command,args

특정 pid (12345)의 경우 :

ps -p 12345 -o cputime,start,pid,command,args

고맙지 만 프로세스는 이미 완료되었습니다. 다시 실행하면이 점을 명심하겠습니다.
Graham Borland

ps리눅스에서 GNU 를 사용 하고 ps있습니다 .MacOSX에서는 BSD 일 수 있으며 논쟁의 여지가 없습니다.
jsbillings

또한 CPU 시간은 "실시간"이 아닙니다.
Juan

4

lastcomm (BSD 프로세스 계정이 활성화 된 경우)은 실행 기간을 제공합니다 (제한된 의미에서 적절하지 않을 수 있음).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.