모든 crontab 항목에 주석을 달고 스크립트를 사용하여 주석 처리를 해제하는 방법

모든 crontab 항목에 주석을 달고 스크립트를 사용하여 주석 처리를 해제하는 방법

명확하게 말하면 기본 파일이 아닌 crontab 항목에 주석을 달고 싶습니다. 보통은 그렇죠

크론탭 -e

30 * * * * /u01/app/abccompny/scripts/GenerateAWRReport.pl
01,31 * * * * /u01/app/abccompny/scripts/table_growth_monitor.sh
30 0,4,8,12 /u01/shivam/script/getMongoData.sh 

각 줄 앞에 "#"을 추가하고 저장합니다. 다시 한번 작업이 완료되면 "#"을 제거합니다.

#30 * * * * /u01/app/abccompny/scripts/GenerateAWRReport.pl
#01,31 * * * * /u01/app/abccompny/scripts/table_growth_monitor.sh
#30 0,4,8,12 /u01/shivam/script/getMongoData.sh 

스크립트를 사용하여 이를 수행하는 효율적인 방법이 있습니까?

답변1

현재 crontab을 파일로 내보내고 crontab을 삭제한 후 이전에 생성된 파일을 사용합니다.

$ crontab -l > cron_content
$ crontab -r
$ <this is where you do your stuff>
$ crontab cron_content

답변2

cron을 다른 파일에 복사하고 변경한 다음 cron을 다시 적용합니다.

cron을 일부 파일에 복사하십시오.

crontabl -l > filename

이제 filename크론이 있으므로 크론을 사용하여 신청할 수 있습니다.

crontab filename

주석은 #으로 시작하므로 줄 시작 부분에 #을 추가하고 제거하겠습니다.

주석을 추가하고 제거하려면 다음을 사용할 수 있습니다.sed

댓글 삭제(#)

sed -i -e 's/^# //g' filename

코멘트 추가(#)

sed -i -e 's/^/# /g' filename

다음을 사용하여 크론을 적용합니다.

crontab filename

예약된 작업을 확인하세요

crontab -l

Happy Scripting

답변3

다음 스크립트를 사용하여 crontab에서 주석을 추가하거나 제거할 수 있습니다.

#!/bin/bash

# you must have permission to read the crontab

if [[ $1 == "-add" ]]; then
        crontab -l > /tmp/cron_export
        awk '$0="#"$0' /tmp/cron_export > /tmp/cron_comment
        crontab -r
        crontab cron_comment
elif [[ $1 == "-remove" ]]; then
        crontab -l > /tmp/cron_export
        awk '{ print substr($0,2) }' /tmp/cron_export > /tmp/cront_uncomment
        crontab -r
        crontab cron_uncomment
else    
        echo "no option was selected. Please use -add to add comments or -remove to remove comments"
fi

# Remove all the create files for the operations

for f in /tmp/cron*; do
    [ -e "$f" ] && rm cron* || echo "No files to remove were found"
    break
done

이 스크립트의 사용법은 다음과 같습니다:

댓글 추가

./youscriptname.sh -add

댓글 삭제

./youscriptname.sh -remove

답변4

오래된 게시물이지만 더 빠르고 간단한 해결책이 있다고 생각합니다.

Linux에서는 모든 것이 파일입니다. crontab은 각 사용자의 cron을 /var/spool/cron/에 저장합니다.

  • 우분투 20.04:/var/spool/cron/crontabs/<사용자>
  • RHEL7에서:/var/spool/cron/<사용자>

따라서 다음을 수행할 수 있습니다.

# comment
sed -i 's/^/#/' /var/spool/cron/<user>

# uncomment
sed -i 's/^#//' /var/spool/cron/<user>

관련 정보