bash 스크립트를 사용하여 crontab 설치


11

crontab에 두 개의 스크립트를 설치하는 스크립트를 만들었습니다.

#!/bin/bash

 sudo crontab -l > mycron
 #echo new cron into cron file

 echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script
 echo "*/12 * * * * bash  /mnt/md0/capture/merge_pcap.sh" >> mycron     #schedule the merge script

#install new cron file
 crontab mycron
rm mycron

스크립트가 실행되고 crontab에 두 줄을 추가합니다. 그러나 스크립트를 다시 실행하면 해당 줄이 다시 추가되므로 동일한 내용을 나타내는 네 줄이 나타납니다. crontab에 삽입 된 줄이 반복되지 않도록 설치 스크립트를 실행하고 싶습니다. 어떻게해야합니까


나는 당신의 목표가 무엇인지 이해하지 못합니까? 왜 처음에 스크립트를 작성 했습니까? 원본 게시물의 정보 를 수정 하고 추가하십시오. tks
X Tian

답변:


19

/etc/cron.d이상을 사용 하는 것이 좋습니다 crontab.

/etc/cron.dcrontab 항목처럼 동작하는 파일을 배치 할 수 있습니다 . 형식은 약간 다릅니다.

예를 들면
/etc/cron.d/pcap다음과 같습니다.

*/05 * * * * root bash /mnt/md0/capture/delete_old_pcap.sh
*/12 * * * * root bash  /mnt/md0/capture/merge_pcap.sh

형식의 차이점은 시간 스펙 이후와 같이 작업을 실행하도록 사용자를 추가하는 것입니다.

이제 파일이 존재하는지 간단히 확인할 수 있으며 덮어 쓰더라도 중요하지 않습니다.

 

cron 데몬에 없을 수도 있습니다 /etc/cron.d. 나는 어떤 크론 데몬이 그것을 가지고 있는지 알지 못하지만, vixie cron은 리눅스의 표준 크론 데몬입니다.


3

대신 함수를 선언 할 수 있습니다.

add() {
  grep -Fq "$1" mycron || echo "$1" >> mycron
}

다음과 같이 말하여 호출하십시오.

add "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh"

파일에 존재하지 않는 경우에만 행을 추가합니다.


grep -Fq "$ 1"의 기능을 알려주시겠습니까?
Jishnu U Nair 2012

그리고 스크립트는 에러 grep을줍니다 : 입력 파일`mycron '또한 출력입니다
Jishnu U Nair

@JishnuUNair -Fgrep패턴을 고정 문자열로 해석합니다.
devnull

@JishnuUNair 위의 텍스트를 올바르게 복사하셨습니까?
devnull

예, 올바르게 복사했습니다.
Jishnu U Nair 2012

1

내가 사용하는 bash에서

    crontab -l | { cat; echo "*/10 * * * * /script/script.sh > /dev/null 2>&1"; } | crontab -

또한이 스크립트를 사용하여 원격 서버에 cron 항목을 추가하십시오

    cronok="##";
    cronok+=`ssh $host 'crontab -l'`;
    pattern="reboot.sh"

    if [[ "$cronok" == *${pattern}* ]]; then
         echo "found cron  at [$host]"
      else
        echo "Cron at [$host] not found adding now"
       `ssh $host 'crontab -l | { cat; echo "*/10 * * * * /root/reboot.sh > /dev/null 2>&1"; } | crontab -'`
       echo "finished cron"
    fi

0

스크립트를 작성하고 crontab에 추가하여 중지 할 수 있습니다.

####You should calculate tiem you want kill your script.
#######code of calculating........
pid=`ps ax |egrep myscript |awk {'print $1'}`
kill -9 $pid
#OR
kill $pid

3
이것은 질문에 대답하지 않습니다. 또한 kill -9최후의 수단으로 만 이루어져야합니다 – unix.stackexchange.com/questions/8916/…
Graeme
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.