cron 작업으로 실행될 때 null 값을 전달하는 쉘 스크립트 [닫기]

cron 작업으로 실행될 때 null 값을 전달하는 쉘 스크립트 [닫기]

다음 명령을 사용하여 페이지 공간 값을 얻으려면 사용된 페이지 공간의 비율을 확인해야 합니다. 이를 위해 아래 코드를 사용했는데, 이 스크립트를 실행하면 함수에 null 값이 전달됩니다.

MAX=`free -m | grep Swap | gawk '{ print $2 }'`
MIN=`free -m | grep Swap | gawk '{ print $3+300 }'`
DIV=`echo $MIN/$MAX*100|bc -l`
PAGESPACE=`print $(( round(DIV) ))`

PAGESPACE내 함수 중 하나에 매개변수로 전달하고 있습니다.

기능:

monPar 0 0 $PAGESPACE 80 90 db1adm "PAGE SPACE" now

이 스크립트를 수동으로 실행하면 올바른 값이 제공됩니다. 문제는 이 스크립트가 crontab에서 실행될 때 발생합니다. 이 스크립트는 함수에 0 값을 전달합니다.

답변1

cron 작업이 제대로 작동하지 않는 첫 번째 문제는 cron 작업에서 명시적으로 설정해 보거나 모든 유틸리티에 대해 절대 경로를 사용 $PATH하십시오
.$PATH

두 번째로 가능성이 높은 문제는 쉘을 확인하는 것입니다. 이는 round(DIV)일반적인 쉘 산술 연산자가 아니므로 cron이 사용하는 쉘에서는 사용하지 못할 수도 있습니다.


또한 를 PAGESPACE=실행하여 이를 단순화 할 수 있습니다 PAGESPACE=$(( round(DIV) )). 백틱은 필요하지 않습니다(쉘이 정상적인 동작을 따르는 경우에는 필요하지 않지만 그것이 어떤 쉘인지는 모릅니다).

답변2

crontab에서 스크립트를 실행하는 데는 몇 가지 규칙이 있습니다.

  1. 모든 명령에 대해 다음을 사용하십시오.$(어떤 명령)crontab의 경로 문제를 방지하려면 스크립트에서
  2. 명령줄에서 스크립트를 테스트하는 경우 crontab과 동일한 사용자로 실행하십시오.
  3. crontab에서 전체 경로 이름 설정
  4. 다음과 같이 스크립트에서 올바른 쉘을 설정하십시오.셰르본.

이 팁이 작동하지 않는 경우: 스크립트에서 로그 파일을 생성하고 모든 변수를 기록하여 문제를 격리하십시오.

관련 정보