需要明确的是,我想评论 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
有了你的 cron,你可以使用你的 cron 来应用
crontab filename
注释以 # 开头,因此我们将从行首添加和删除 #。
要添加和删除评论,您可以使用sed
删除评论 (#)
sed -i -e 's/^# //g' filename
添加评论 (#)
sed -i -e 's/^/# /g' filename
应用 cron 使用
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>