在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职位
##代码##因此,一切都按预期进行。

