2014-12-03 4 views
1

야간 사이클링 서비스에서 주간으로 변경되었지만 INI를 업데이트 한 후 서버에서 서비스를 바로주기를 원합니다. 나는 'at'명령을 사용하여 INI 파일을 업데이트하는 명령과 함께 보낼 수 있다고 생각했습니다.명령 스크립트의 Linux는 계속 반복됩니다.

문제는 이것입니다. 저는 cronjob에서 사용하는 명령과 동일한 명령을 사용하고 있지만, cronjob에서와 같이 cronjob에서 사용하는 것과 동일한 명령을 사용하고 있습니다. 의사록.

15 04 * * 6 /u01/home/me/scripts/cycleSRVC.sh >/u01/me/tomax/logs/cycleSRVC.log 2>&1 

#!/bin/bash 

export SRVINI=/u01/home/me/scripts/buildini 
SERVERLIST=$SRVINI/serverlist.txt 

## Generate the body to send out to each server 
touch $SRVINI/body.ini 
## copying server.ini commented out as Senthil wants a different copy that he will edit 
#cp $SRV_DATA/server.ini $SRVINI/ 
$SRVINI/generate_body.pl 
#rm $SRVINI/server.ini 

## scp the body of the ini file to each server 
for i in `cat $SERVERLIST` ; do 
    scp $SRVINI/body.ini $i:$SRVINI/ 
done 

## Call outside perl script to manipulate the files 
for i in `cat $SERVERLIST` ; do 
    ssh $i "source ~/.bash_profile ; cd $SRVINI ; $SRVINI/buildini.pl ; at now + 15 minutes <<< '/u01/home/server/scripts/cycleSRVC.sh > /u01/home/server/logs/cycleSRVC.log 2>&1'" 
done 

rm $SRVINI/body.ini 

cronjob에 '에서'사용

스크립트 나는 'ATQ'를 사용하고 하나의 작업 만이 각 서버에 생성되는 것을 확인했습니다. 이것은 내 스크립트가 ssh를 통해 올바르게 전송되고있는 것처럼 느껴집니다.

주기 스크립트가 cronjob으로 실행될 때 문제가 없으므로 작동하는 것을 알고 있습니다.

'at'명령을 전달하는 여러 가지 방법을 시도해 보았습니다. 모든 서버에서 하나의 작업을 생성했지만 모두 실행되지만 몇 분 후에 다시 시작됩니다. 사이클링, 서비스 중단 및 백업.

진행 방법 상실. 현재 INI에 대한 업데이트를 수행 할 때마다 8 대의 모든 서버에서 서비스를 수동으로 순환합니다. 도움을 많이 주시면 감사하겠습니다. 감사.

는 UPDATE

나는 그것이 실행 된 후 나는 'ATQ'를 할 때이 그냥 실행하고 계속 실행 뜻

>atq 
22  2014-12-02 22:01 = usr 

으로 표시 것으로 나타났습니다? 이것은 싸이클 스크립트에 오류가있어서 at 명령을 완료하지 못했음을 의미합니까? 그렇다면 왜 그것이 cronjob으로 작동합니까?

최종 업데이트 :

문제를 발견. 그것은 cycleSRVC.sh 스크립트에 있었으며 'at'가 아닙니다. 내 서비스가 다시 시작되면 내가 전화 :

# Restart services 
/u01/app/progs/start.sh 
sleep 30 

내가 배경에 '&'밀어 start.sh를 추가해야합니다. 그렇게하지 않으면 이상한 상태에 놓고 나중에 수면을하게됩니다. 이상한 작은 일로 인해 많은 문제가 발생했습니다.

동일한 좌절감을 가진 다른 사용자를 돕기 위해 여기에 게시하십시오.

+0

이 질문을 '답이 없음'목록에서 제외하려면 답변을 해결책으로 게시하십시오. 또한 : http://stackoverflow.com/help/self-answer –

+0

@Ruud Thanks! 할거야. – bigw8

답변

0

'at'을 구현 한 것은 아무 것도 잘못되었습니다. 문제는 싸이클 스크립트에서 발생했습니다.

코드가 최종 업데이트되었습니다.

관련 문제