![실행 시간의 bash 기록을 저장하시겠습니까?](https://linux55.com/image/100208/%EC%8B%A4%ED%96%89%20%EC%8B%9C%EA%B0%84%EC%9D%98%20bash%20%EA%B8%B0%EB%A1%9D%EC%9D%84%20%EC%A0%80%EC%9E%A5%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
bash 기록을 유지할 수 있습니까?총 실행 시간당신이 실행하는 모든 명령?
즉, 모든 명령이 "시간"으로 시작하고 결과가 명령과 함께 기록에 저장되는 것처럼요?
설명: 명령이 시작된 시간의 타임스탬프를 추가할 수 있다는 것을 이미 알고 있지만 알고 싶었습니다.총 실행 시간, 그리고 처음에만 그런 것이 아닙니다.
답변1
시작 스크립트에서 HISTTIMEFORMAT을 정의하면 bash 기록 파일의 각 줄에 타임스탬프를 추가하게 됩니다. 이 변수의 값은 타임스탬프가 화면에 인쇄되어야 하는 방식(*)입니다. 이 내 꺼야:
HISTTIMEFORMAT='%F-%T '
(*) 살펴보세요 man 3 strftime
(없으면 man date
문제가 해결될 것입니다)
답변2
wait3
자식 프로세스의 사용법은 wait4
포인터 struct rusage
(wait4(2)
). 아래에배쉬 소스 코드, 우리는 다음을 발견합니다:
$ egrep -r 'wait[34][[:blank:]]*\(' .
./jobs.c: wait3 ((union wait *)statusp, options, (struct rusage *)0)
./jobs.c: wait3 (statusp, options, (struct rusage *)0)
./jobs.c: wait3 (statusp, options, (int *)0)
$
공백은 (struct rusage *)0
리소스 사용량이 환불되지 않음을 의미합니다 bash
. 검색은 struct rusage
의 time_command
기능 으로 표시되며 execute_cmd.c
다음을 통해 사용 정보를 수집하는 것으로 나타납니다.getrusage(2)
. 그러나 이는 내장용 TIMEFORMAT
이므로 time
기록 코드와 교차하지 않는 것으로 보입니다. 패치를 적용하지 않으면 모든 것을 실행 한 다음 일부 파일의 표준 오류에 나타나는 시간 정보를 캡처하는 등 bash
의 문제를 해결해야 할 것 같습니다 .time