![Cron 작업에서 "서비스: [해당 파일 또는 디렉터리]를 찾을 수 없습니다."라는 오류가 발생하지만 터미널 스크립트에서 수동으로 실행하면 제대로 작동합니다.](https://linux55.com/image/99078/Cron%20%EC%9E%91%EC%97%85%EC%97%90%EC%84%9C%20%22%EC%84%9C%EB%B9%84%EC%8A%A4%3A%20%5B%ED%95%B4%EB%8B%B9%20%ED%8C%8C%EC%9D%BC%20%EB%98%90%EB%8A%94%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%5D%EB%A5%BC%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%22%EB%9D%BC%EB%8A%94%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%98%EC%A7%80%EB%A7%8C%20%ED%84%B0%EB%AF%B8%EB%84%90%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%88%98%EB%8F%99%EC%9C%BC%EB%A1%9C%20%EC%8B%A4%ED%96%89%ED%95%98%EB%A9%B4%20%EC%A0%9C%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
service jbossas status
-> 명령은 jbossas 상태를 확인합니다.
jbossas(PID)가 실행 중입니다(jbossas가 실행 중인 경우).
jbossas가 중지되었습니다(jbossas가 중지된 경우).
#!/bin/ksh
#set -x
OUT_LOG="$1"
stus=$(service jbossas status)
var=$(ps -ef | grep -i '[/]jboss')
hname=$(hostname)
if [ -z "$var" ]; then
echo "service jbossas status" >>$OUT_LOG
echo "$stus" >>$OUT_LOG
mail -s "Please check for possbile impact $(stus)" [email protected] << $OUT_LOG
else
echo "'$stus'"
fi
참고: JBOSS 프로세스가 서버에서 실행되고 있지 않으므로 작업이 jboss 중지됩니다.
쉘에서 스크립트를 수동으로 실행하는 경우(검은색 화면 cmd 프롬프트)
./jboss_status.ksh
다음 제목이 포함된 이메일을 받았는데 스크립트가 정상적으로 실행되었습니다.
"jbossas 중지로 인해 발생할 수 있는 영향을 확인하십시오."
하지만 cron에서 일정을 예약하면
* * * * * /aaa/jboss_status.ksh > /aaa/jboss_status.ksh.error 2>&1
다음과 같은 제목의 메일을 받았습니다. "가능한 영향을 확인하십시오" 참고: "jbossas가 중지되었습니다"는 제목 끝에 인쇄되지 않습니다.
cron으로 생성된 오류 파일에서 다음과 같은 오류가 발생합니다.
/aaa/jboss_status.ksh[20]: service: not found [No such file or directory]
스크립트는 cron에서 잘 실행되지만 출력을 반환합니다.
command : service jbossas status
op: jboss stopped
제목에 인쇄되지 않음
답변1
스크립트 상단에 bash_profile 또는 bash_rc를 가져와야 할 수도 있습니다.
우분투에서
source /home/<user>/.bash_profile
다른 리눅스
source /home/<user>/.bash_rc
답변2
cron을 실행하는 사용자의 PATH 변수를 확인했습니까? 사용 중인 스크립트에 대한 경로나 해당 종속성이 있어야 합니다. 경로 비교:
echo $PATH
스크립트를 수동으로 실행하는 사용자와 cron에서 스크립트를 실행하는 사용자 아래에 있습니다.