2016-12-29 8 views
0

주니퍼 swith EX 시리즈에서 crontab을 사용 했습니까? 다른 구성으로이 프로세스를 실행해야하기 때문에 httpd 작업을 다시 시작하고 싶습니다. 로깅과 함께 간단한 스크립트를 만듭니다.주니퍼 EX 스위치. Crontab jobs

#!/bin/csh 
echo 'Go...' 
cp /jail/var/etc/httpd.conf_new /jail/var/etc/httpd.conf 
echo 'changed' 
set http_pid=`ps aux | grep 'httpd --config' | grep -v grep | awk '{print $2}'` 
echo 'Process PID: ' "$http_pid" 
kill -9 "$http_pid" 

또한 나는 crontab을에서 일자리를 만들

10 12 * * * csh /var/root/test.sh >> test.log 

그때 출력이 cmd를에서 사전 처리를 실행

: 다음 크론에서 실행할 때

Go... 
changed 
Process PID: 3158 

그리고 모든 것을 확인하지만, 다음과 같이 보입니다 :

Go... 
changed 
Process PID: 

다음과 같이 crontab 줄을 변경 (추가)하려고합니다 :

SHELL=/bin/csh 
PATH=... 

그러나 작동하지 않았습니다. 또한 나는 다음과 같이 뭔가 작업과 라인을 변경하려고 :

10 12 * * * /var/root/.profile; csh /var/root/test.sh >> test.log 
10 12 * * * sh /var/root/.profile; csh /var/root/test.sh >> test.log 
10 12 * * * (sh /var/root/.profile; csh /var/root/test.sh) >> test.log 

은 어쩌면 당신은 내가 무엇을 더 할 수있는 상황을 제대로 실행하기 위해 알아?

답변

1

주말에 해결되었습니다. @reboot을 사용하여 crontab을 통해 스크립트를 실행하면 httpd이 실행되기 전에 스크립트가 실행되므로 PID가 없습니다. 나는 내 crontab 줄에 sleep 60을 넣었고 스크립트는 실행될 때 60 초 동안 지연되었다. httpd가 실행 중이며 PID가있다.

@reboot sleep 60; sh /jail/var/etc/httpd_replace_config.sh > /jail/var/etc/httpd_replace_config.txt 
+0

이 내 문제 중 하나에 대한 유일한 해결책은 다음과 같습니다

여기 내 crontab 명령입니다. 두 번째는 ps의 변수 http_pid 로의 전송 결과입니다. 스크립트의 동작을 단계별로 분석했는데 쿼리 ps aux 결과는 문자열 길이가 80 자로 제한되어 있음이 밝혀졌습니다. 내 grep이 찾고있는 문자열을 감지하지 못했습니다. ps aux를 ps -A (더 짧은 버전)로 변경해야합니다. – KlapenHz