在Linux或者Unix中使用bash脚本创建cron作业或者安排作业
时间:2020-01-09 10:37:54 来源:igfitidea点击:
如何使用Shell脚本更新crond?
在Linux中使用命令行bash shell脚本设置cron作业?
在Linux中使用脚本自动为root用户和普通用户创建cron作业。
使用带有示例的shell脚本通过crontab计划cron作业。
手动创建cron作业的步骤
:授予crontab特权
在开始之前,我们需要为各自的用户赋予crontab特权。
为了本文的目的,我将为root用户和hynman用户创建一些示例cron作业,因此我将为这两个用户分配权限。
将用户名添加到/etc/cron.allow
# cat /etc/cron.allow root hynman
第2步:创建cron文件
为root用户创建一个cron文件
# touch /var/spool/cron/root # /usr/bin/crontab /var/spool/cron/root
为" hynman"用户创建一个" cron"文件
# touch /var/spool/cron/hynman # /usr/bin/crontab /var/spool/cron/hynman
:安排工作
我将创建一些虚拟作业。
为了进行演示,我将安排一个工作,在每个午夜为两个用户清除临时文件
# echo "0 0 * * * rm -f /tmp/root/*" >> /var/spool/cron/root # echo "0 0 * * * rm -f /tmp/hynman/*" >> /var/spool/cron/hynman
:验证Cron作业内容
其中我们可以使用-u定义我们要执行cron操作的用户名/
# crontab -u hynman -l 0 0 * * * rm -f /tmp/hynman/* # crontab -u root -l 0 0 * * * rm -f /tmp/root/*
因此,我们的cron作业已针对" root"和" hynman"用户成功更新。
说明:
我们无需为新更改重新启动" crond"服务。
使用bash shell脚本创建cron作业的脚本
让我们将所有内容放到一个脚本中
#!/bin/bash if [ `id -u` -ne 0 ]; then echo "This script can be executed only as root, Exiting.." exit 1 fi case "" in install|update) CRON_FILE="/var/spool/cron/root" if [ ! -f $CRON_FILE ]; then echo "cron file for root doesnot exist, creating.." touch $CRON_FILE /usr/bin/crontab $CRON_FILE fi # Method 1 grep -qi "cleanup_script" $CRON_FILE if [ $? != 0 ]; then echo "Updating cron job for cleaning temporary files" /bin/echo "0 0 * * * rm -f /home/hynman/cleanup_script.sh" >> $CRON_FILE fi # Method 2 grep -qi "cleanup_script" $CRON_FILE if [ $? != 0 ]; then echo "Updating cron job for cleaning temporary files" crontab -u hynman -l >/tmp/crontab /bin/echo "0 0 * * * rm -f /home/hynman/cleanup_script.sh" >> /tmp/crontab crontab -u hynman /tmp/crontab fi ;; *) echo "Usage:# /tmp/script.sh install Updating cron job for cleaning temporary files{install|update}" exit 1 ;; esac
其中我分享了两种使用shell脚本更新root用户和hynman用户的cron作业的方法。
我们可以在执行脚本后验证更改
# crontab -u root -l 0 0 * * * rm -f /home/hynman/cleanup_script.sh # crontab -u hynman -l 0 0 * * * rm -f /home/hynman/cleanup_script.sh
列出cron职位
##代码##因此,一切都按预期进行。