cron을 사용한 런타임 명령

cron을 사용한 런타임 명령

그래서 나는 다음 줄을 가진 crontab을 가지고 있습니다:

30 16 * * * (time sysbench --test=cpu --cpu-max-prime=20000 run) 2>> ~/cpu.out

시간 출력의 기본값은 stderr이고 이를 파일로 리디렉션하고 싶기 때문에 이것을 사용하고 있습니다.

터미널에서 명령을 실행하면 필요한 출력이 기록됩니다.

real X.XXXs
user X.XXXs
sys  X.XXXs

그러나 cron을 사용하여 실행하면 파일에 다음이 기록됩니다.

39.69 user 0.92 system 0:40.67elapsed 99%CPU (0avgtext+0avgdata 1400maxresident)k0inputs+1outputs (0major+450minor) pagefaults 0swaps

누구든지 나를 도와줄 수 있나요?

추신: 매뉴얼 페이지에는 -o 옵션이 있지만 작동하지 않으며 이 작업을 시도하면 오류가 발생합니다.

답변1

이것을 셸에서 실행하면 실제로 다음과 같은 bash 내장 함수를 사용하게 됩니다.

anthony@Zia:~$ time perl -e 'sleep 1'

real    0m1.003s
user    0m0.000s
sys     0m0.004s

Cron은 내장된 bash를 사용하지 않습니다 /usr/bin/time.

anthony@Zia:~$ /usr/bin/time perl -e 'sleep 1'
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 1800maxresident)k
0inputs+0outputs (0major+514minor)pagefaults 0swaps

두 번째에는 실제로 bash에 내장된 모든 정보 등이 포함되어 있습니다. 그것은 "실제"를 "과거"로 표시합니다. (이것이 -o이 옵션이 작동하지 않는 이유이기도 합니다. /usr/bin/time내장 bash 옵션이 아닌 bash 옵션입니다.)

내장된 bash를 사용해야 하는 경우 다음 두 가지를 시도해 볼 수 있습니다.

  1. SHELL=/bin/bashcrontab 위에 올려주세요 .
  2. 명시적으로 호출하도록 명령을 변경하십시오 bash -c "your command here".

관련 정보