일/Data Mining

crontab 에서 쉘 스크립트 실행이 되지 않을 때.

LEEHK 2013. 3. 14. 09:00

 

 

오라클 설치 후 이런저런 설정 파일 경로를 정해줘야 하는 부분이 있다.

그것이 ~/.profile 이거나 ~/.bash_profile 이다.

 

 

이번에 서버를 새로 받아 작업 세팅하는데, 지금까지 열 몇 대를 작업하는 동안 본 적 없는 문제가 발생해서 당황했는데,

어디서나 누구에게 문제가 생기면 도와주는 신짱이 해결해줬다 신짱 최고~

 

 

> 문제.

 

.sh 파일의 . ~/.profile 부분을 주석처리하면 돌지만, 오라클 설정 에러가 남.(.profile 에 오라클 경로 설정이 있기 때문)
.sh 파일의 . ~/.profile 부분을 두면, 그냥 실행할 때는 돌지만 crontab 에서 돌지 않음.

 

 

> 해법. Thx To 신짱. >_<~

 

보통 crontab에 걸어둔 스크립트에서
결과가 화면으로 출력되게 하면 안돌아가는 경우가 있음
21 16 * * * /home/program/test/test.sh > /home/program/test/test.sh.log 2> /home/program/test/test.sh.log
이런식으로 아무것도 화면으로 출력되지 않게 하는게 좋아

 

 

 

 

* 참고 : http://sunshout.tistory.com/1155#recentTrackback

 

쉘에서 output을 화면이 아닌 다른 파일로 리다이렉션이 필요할 경우가 많다.
이는 어떤 쉘을 사용하는냐에 따라 명령어가 차이가 있다.

아래는 Bash에서의 리다이렉션 명령어 이다.

Character

Action

>

Redirect standard output

2>

Redirect standard error

2>&1

Redirect standard error to standard output

<

Redirect standard input

|

Pipe standard output to another command

>>

Append to standard output

2>&1|

Pipe standard output and standard error to another command


예를 들어 dynamips 의 output과 에러를 파일로 적고 싶다면
dynamips -H 7200 &> /temp/log

이것은 모든 output을 /temp/log 로 보내는 방법이다.

이렇게 하면 된다.