2013-01-24 1 views
0

저는 Amazon EC2에서 서버를 만들고 서버를 처음 부팅 할 때 실행되는 bash 스크립트를 userdata로 전달합니다. 여기에는 응답 given here을 사용하는 사용자에 대해 crontab에 행을 추가하는 명령이 포함되어 있습니다.부팅시 bash 스크립트가 작동합니다. 터미널에 없습니다.

directory="/home/intahwebz/current/tools/amazon/" 
command="cd $directory && sh backupSQLToS3.sh" 
job="15 1 */2 * * $command" 
cat <(fgrep -i -v "$command" <(crontab -u intahwebz -l)) <(echo "$job") | crontab -u intahwebz - 

이 스크립트는 오류 메시지를 표시하지 않으며 cronab이 crotab에 설치되어 있기 때문에 부팅하는 동안 문제가없는 것 같습니다.

그러나 서버 업그레이드 중에 스크립트를 실행하고 싶습니다. 명령 줄에서 스크립트를 실행하려고하면 오류가 발생합니다.

이 오류를 해결하려면 어떻게해야합니까?

+0

쉘과 같은 소리는'<(...)'구문을 지원하지 않습니다 (그 라인의 유일한'(')이기 때문입니다.) 대화식 쉘은 부팅시 스크립트를 실행하는 쉘과 다를 수 있습니까? –

답변

1

당신의 접근 방식은 완벽하게 나를 위해 노력하고 있습니다 :

$ whoami 
test 

$ echo $SHELL 
/bin/bash 

$ command="cd $directory && sh backupSQLToS3.sh" 

$ job="15 1 */2 * * $command" 

$ crontab -l 


$ cat <(fgrep -i -v "$command" <(crontab -u test -l)) <(echo "$job") | crontab -u test - 

$ crontab -l 

15 1 */2 * * cd && sh backupSQLToS3.sh 

내가 변수 "디렉토리"로 설정 놓친하지만 코드가 나를 위해 잘 작동합니다.

+0

감사합니다. 명령 줄을 사용하여 모든 것을 복사하여 새 스크립트 파일에 붙여 넣었습니다. 두 스크립트를 비교하면 첫 번째 < – Danack

0

bash 스크립트를 실행하는 데 bourne 쉘 (/bin/sh)을 사용하는 것 같습니다. sh 대신 bash을 사용해보세요.

+0

스크립트를 'bash installCrontab.sh'로 호출하고 맨 위에 #!/bin/bash가 있으므로 Bash를 사용하고 있다고 확신합니다. – Danack

관련 문제