CentOS에서 명령을 실행하고 있으며 동시에 두 가지 작업을 수행하고 싶습니다.
- 명령의 실행 시간을 파일에 쓰고
- 정지 명령에 대한 시간 제한 설정
첫 번째 구현을 성공적으로 구현했습니다. 다음과 같습니다:
(time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt
보시다시피 time 명령을 사용하여 명령에 걸리는 시간을 계산한 다음 시간 결과를 파일로 전달합니다 measures.txt
. 예는 다음과 같습니다 measures.txt
.
real 0m0.002s
user 0m0.000s
sys 0m0.000s
다음과 같은 두 번째 항목을 추가하려고 합니다.
(timeout 1s time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt
이 명령의 결과는 내 파일을 엉망으로 만들고 다음과 같은 결과를 반환합니다.
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 6368maxresident)k
0inputs+0outputs (0major+440minor)pagefaults 0swaps
보시다시피, "실시간" 결과는 어떻게든 사라졌고 다른 결과는 다른 형식이었습니다. time
명령의 결과와 를 구분하는 방법은 무엇입니까 timeout
?
편집: 두 번째 아이디어는 시간 초과 대신 ulimit 명령을 사용하는 것입니다. 나는 똑같은 것을 시도했지만 ulimit를 사용했습니다.
(ulimit -t 10 time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt
하지만 이번에는 Measures.txt에 결과가 기록되지 않았습니다.
답변1
동일한 예제를 시도하면 예상한 결과가 나오므로 환경에 문제가 있는 것 같습니다. 예를 들어:
# command #1
$ (time echo "hi") 2>> measures.txt
hi
$ cat measures.txt
real 0m0.000s
user 0m0.000s
sys 0m0.000s
# command #2
$ (timeout 1s time echo "hi") 2>> measures.txt
hi
$ cat measures.txt
real 0m0.000s
user 0m0.000s
sys 0m0.000s
0.00user 0.00system 0:00.05elapsed 0%CPU (0avgtext+0avgdata 552maxresident)k
56inputs+0outputs (1major+173minor)pagefaults 0swaps
명령을 두 개의 별도 호출로 구성하는 대신 다음을 수행해 보십시오.
(
time ./minisat+_64-bit_static opb_clauses.txt
timeout 1s time ./minisat+_64-bit_static opb_clauses.txt
) 2>>../measures.txt