すべての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/ に保存します。

  • Ubuntu 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>

関連情報