crontab 항목용 쉘 스크립트

crontab 항목용 쉘 스크립트

다음 작업을 수행하기 위해 쉘 스크립트를 작성해 달라는 요청을 받았습니다.

다음에서 크로엔트리 업데이트

\*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out 

도착하다

\*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out 

편집하기 전에 cronentry를 백업하십시오.

다음 스크립트를 시도했는데 작동하는지 또는 수정이 필요한지 확인해야 합니다. 도와주세요!

cronentry의 쉘 스크립트 업데이트(편집 전 백업)

#!/bin/sh
crontab -l > my_crontab.backup

crontab -l | grep -v "*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out" >*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out

echo "*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out" >>*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out

crontab */15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out

답변1

특정 crontab 항목을 삭제하고 다른 항목으로 바꾸려고 합니다.

다음 명령을 사용하여 기존 crontab 일정을 텍스트 파일로 덤프할 수 있습니다.

crontab -l >crontab-old.txt

기존 crontab 항목이 다음과 같다는 것을 알고 있다고 가정합니다.정확히

*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out 

(추가 공백 없음) 다음을 crontab-old.txt사용하여 파일에서 필터링할 수 있습니다.

grep -v -x -F '*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out' crontab-old.txt >crontab-new.txt

crontab-new.txt파일 에 새로운 계획을 추가하려면 다음을 수행하십시오.

cat <<'END_ENTRY' >>crontab-new.txt
*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out 
END_ENTRY

마지막으로 다음 코드를 사용하여 새 일정을 로드합니다.

crontab crontab-new.txt

이제 crontab-old.txt이전 계획과 crontab-new.txt새 계획이 있고 새 계획이 로드되었습니다.

당연히 넌 그래야 해바라보다이 작업을 수동으로 실행하거나 이를 수행하기 위한 스크립트를 개발하는 경우 위의 각 단계 사이에서 파일을 검토하여 올바르게 편집되었는지 확인하세요.

스크립트에서는 다음과 같이 보일 수 있습니다.

#!/bin/sh

crontab -l >crontab-old.txt

grep -v -x -F '*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out' crontab-old.txt >crontab-new.txt

cat <<'END_ENTRY' >>crontab-new.txt
*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out 
END_ENTRY

crontab crontab-new.txt

이 명령은 주어진 패턴을 일치시키는 grep데 사용됩니다.-F문자열로정규 표현식이 아닌 패턴에는 *정규 표현식의 특수 문자가 포함되어 있으므로 를 사용하면 -F이러한 문자를 특수하게 처리하지 않고도 문자열을 일치시킬 수 있습니다. 나는 또한 -x강제 성공 일치를 사용하여 일치시킵니다.완전한 라인, 줄의 일부가 아닌 처음부터 끝까지.

또한 관련:

관련 정보