다음 명령을 사용하여 페이지 공간 값을 얻으려면 사용된 페이지 공간의 비율을 확인해야 합니다. 이를 위해 아래 코드를 사용했는데, 이 스크립트를 실행하면 함수에 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에서 스크립트를 실행하는 데는 몇 가지 규칙이 있습니다.
- 모든 명령에 대해 다음을 사용하십시오.$(어떤 명령)crontab의 경로 문제를 방지하려면 스크립트에서
- 명령줄에서 스크립트를 테스트하는 경우 crontab과 동일한 사용자로 실행하십시오.
- crontab에서 전체 경로 이름 설정
- 다음과 같이 스크립트에서 올바른 쉘을 설정하십시오.셰르본.
이 팁이 작동하지 않는 경우: 스크립트에서 로그 파일을 생성하고 모든 변수를 기록하여 문제를 격리하십시오.