在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职位

##代码##

因此,一切都按预期进行。