博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell编辑crontab任务
阅读量:4310 次
发布时间:2019-06-06

本文共 1282 字,大约阅读时间需要 4 分钟。

crontab是Linux下执行定时任务的工具,之前偶尔需要用到时都是通过执行crontab -e命令或者通过root身份直接编辑/etc/cron.*/下的文件来添加定时任务。这段时间遇到了需要通过shell来自动添加或删除crontab的需求。在shell中无法通过crontab -e来与crontab编辑器交互,同时执行命令的人不一定有root身份,也无法直接编辑/etc/cron.*/下的文件。

经过一番实践,通过crontab -l配合sed命令来完成了这个自动添加及删除crontab的操作,在此记录下。

crontab的语法

一张很明晰的crontab语法图,附在这以备用

crontab的语法

shell控制脚本

#!/usr/bin/env bashCUR_PATH=$(cd "$(dirname "$0")"; pwd)# 要定时执行的任务TASK_COMMAND="echo 'aaa' >> /var/cron_test"# 要添加的crontab任务CRONTAB_TASK="*/30 * * * * ${TASK_COMMAND}"# 备份原始crontab记录文件CRONTAB_BAK_FILE="${CUR_PATH}/crontab_bak"# 创建crontab任务函数function create_crontab(){    echo 'Create crontab task...'    crontab -l > ${CRONTAB_BAK_FILE} 2>/dev/null    sed -i "/.*${TASK_COMMAND}/d" ${CRONTAB_BAK_FILE}  # 已存在任务时会被sed删除,防止重复添加    echo "${CRONTAB_TASK}" >> ${CRONTAB_BAK_FILE}    crontab ${CRONTAB_BAK_FILE}        echo 'Complete'}# 清除crontab任务函数function clear_crontab(){    echo 'Delete crontab task...'    crontab -l > ${CRONTAB_BAK_FILE} 2>/dev/null    sed -i "/.*${SCRIPT_NAME}/d" ${CRONTAB_BAK_FILE}    crontab ${CRONTAB_BAK_FILE}        echo 'Complete'}if [ $# -lt 1 ]; then    echo "Usage: $0 [start | stop]"    exit 1ficase $1 in    'start' )        create_crontab        ;;    'stop' )        clear_crontab        ;;esac

转载于:https://www.cnblogs.com/haoxi/p/8138801.html

你可能感兴趣的文章
PHP Curl发送数据
查看>>
HTTP协议
查看>>
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
laravel 定时任务秒级执行
查看>>
浅析 Laravel 官方文档推荐的 Nginx 配置
查看>>
Swagger在Laravel项目中的使用
查看>>
Laravel 的生命周期
查看>>
CentOS Docker 安装
查看>>
Nginx
查看>>