一个用于添加/删除定时任务的shell脚本
运行效果:
脚本用于对SCRIPT_PATH变量执行的路径的脚本进行三个操作:
- 添加(add_cron_job函数)
- 删除(remove_cron_job函数
- 查看现有的定时任务(view_cron_jobs函数)
脚本缺点是只能对一个脚本进行添加与删除,可根据自己的需求进行修改
以下是脚本代码
#!/bin/bash # HOME路径 # 修改为脚本路径(不一定非得是这个路径,根据自己需求修改) SCRIPT_PATH='/home/test/data/xxxxxxxx.sh' # 修改执行时间(此处是1分钟执行一次) JOB_MINUTE="*" JOB_HOUR="*" JOB_DAY="*" JOB_MONTH="*" JOB_WEEK="*" add_cron_job(){ # 生成一个唯一的标识符(为了保证临时文件的文件名不与其他文件重复,导致冲突) local identifier=$(date +%s%N) # 创建一个临时文件 local tmp_file="./tmp_$identifier" # 将现有的 crontab 任务导出到临时文件 crontab -l > "$tmp_file" # 检查是否已经存在相同的定时任务 if grep -q "$SCRIPT_PATH" "$tmp_file"; then echo "Cron job already exists. Skipping." else # 添加定时任务到临时文件 echo "$JOB_MINUTE $JOB_HOUR $JOB_DAY $JOB_MONTH $JOB_WEEK $SCRIPT_PATH" >> "$tmp_file" # 将临时文件导入 crontab crontab "$tmp_file" echo "Cron job added sucessfully" fi # 删除临时文件 rm "$tmp_file" } # 删除crontab任务 remove_cron_job(){ local identifier=$(date +%s%N) local tmp_file="./tmp_$identifier" crontab -l > "$tmp_file" sed -i "\|$SCRIPT_PATH|d" "$tmp_file" if grep -q "$SCRIPT_PATH" "$tmp_file"; then echo "Failed to remove cron job" else crontab "$tmp_file" echo "Cron job already removed" fi rm "$tmp_file" } # 显示当前的crontab内容 view_cron_jobs() { crontab -l } # 主菜单 show_menu() { echo "====== 抽取记录定时任务管理 ======" echo "1. 添加定时任务" echo "2. 删除定时任务" echo "3. 查看定时任务" echo "4. 退出" echo "=================================" } # 处理用户输入 handle_input() { read -p "请输入选项: " choice case $choice in 1) add_cron_job ;; 2) remove_cron_job ;; 3) view_cron_jobs ;; 4) exit 0 ;; *) echo "无效的选项,请重试。" ;; esac } # 主循环 while true; do show_menu handle_input echo done