当用了万恶的crontab -r命令后……

2023-11-04

        明天计划上个新的应用,需要写脚本获取服务器状态并写入数据库,下午写完脚本,准备先放cron里测试一下。登进服务器,想敲crontab -e加一条计划,结果手一滑就敲成了crontab -r,然后就悲剧了,因为发现没有备份!

        没办法,想办法恢复吧。想了想,这种情况,只能去找cron的日志来恢复了。花了点时间,最终还是恢复了。先把crontab文件全部备份一下,然后在这里记录一下恢复过程,或许谁跟我一样悲剧就能用到了。不过我是不想再次悲剧了。

        这台机器上crontab的计划有3种,每天运行1次的,每天运行多次的,特定时间运行的。(注:出问题的日期2011-9-1日,用户为wwiiol)

        1、恢复每天执行1次的计划

        执行下面的命令,就可以获取每天运行1次的计划,然后写入crontab就可以恢复每天运行1次计划了:

grep 'Aug 31.*wwiiol.*CMD' /var/log/cron* | sed 's/.*\([0-2][0-9]:[0-5][0-9]:[0-5][0-9]\).*CMD (\(.*\))/\1 \2/g' | sort -k 3 | uniq -f 1 -u | sed 's/^\([0-2][0-9]\):\([0-5][0-9]\):\([0-5][0-9]\)/\2:\1 * * */g;s/^0//g;s/\(\):0/\1:/g;s/\([0-9]*\):\([0-9]* \*\)/\1 \2/g'

        2、恢复每天执行多次的计划

        执行下面命令找出这些计划,然后在分析具体的执行计划:

grep 'Aug 31.*wwiiol.*CMD' /var/log/cron* | sed 's/.*CMD (\(.*\))/\1/g' | sort -n | uniq -c

        找到的一条计划的命令:

288 /home/program/playnet_rsync.sh all

        这个计划每天运行288次,很容易算出是每5分钟运行1次,再看日志确实是这样的,于是将

*/5 * * * * /home/program/playnet_rsync.sh all

写入crontab文件来恢复计划;

        还有一条:

6 /bin/sh /home/wwiiol/test/stat.sh

        这个计划每天执行了6次,可能是每4小时执行1次,去看日志,发现:

/var/log/cron:Aug 31 02:00:01 gdb12 CROND[8406]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:10:01 gdb12 CROND[8464]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:20:01 gdb12 CROND[8504]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:30:01 gdb12 CROND[8545]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:40:01 gdb12 CROND[8583]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:50:01 gdb12 CROND[8621]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)

        原来是2点到3点之间每10分钟执行一次,将

*/10 2 * * * /bin/sh /home/wwiiol/test/stat.sh

写入crontab文件来恢复计划。

        3、恢复特定时间运行的计划

        这一项是可能存在无法恢复的情况的,因为日志记录的时间是有限的,很可能半年运行一次,甚至一个月运行一次的计划都无法通过日志找出。幸运的话,仔细分析日志就可以找出。

        查看日志,发现共有有一个多月的日志,执行命令:

grep 'wwiiol.*CMD' /var/log/cron* | sed 's/.*CMD (\(.*\))/\1/g' | sort -n | uniq -c

        可得结果:

     32 /bin/sh /home/wwiiol/backup.sh
     32 /bin/sh /home/wwiiol/load_data.sh
      5 /bin/sh /home/wwiiol/lt_colonel_update.sh
     32 /bin/sh /home/wwiiol/program/load_data.sh
     33 /bin/sh /home/wwiiol/program/reg_extend.sh
    192 /bin/sh /home/wwiiol/test/stat.sh
     32 /bin/sh /home/wwiiol/test/total.sh
     33 /bin/sh /home/wwiiol/update_same_ip_account.sh
   9406 /home/program/playnet_rsync.sh all

        对比已经恢复的计划,发现有一条特殊记录:

      5 /bin/sh /home/wwiiol/lt_colonel_update.sh


        再查看日志,发现:

/var/log/cron:Aug 30 06:00:01 gdb12 CROND[26093]: (wwiiol) CMD (/bin/sh /home/wwiiol/lt_colonel_update.sh)
/var/log/cron-20110807:Aug  2 06:00:01 gdb12 CROND[3056]: (wwiiol) CMD (/bin/sh /home/wwiiol/lt_colonel_update.sh)
/var/log/cron-20110814:Aug  9 06:00:01 gdb12 CROND[23422]: (wwiiol) CMD (/bin/sh /home/wwiiol/lt_colonel_update.sh)
/var/log/cron-20110821:Aug 16 06:00:01 gdb12 CROND[912]: (wwiiol) CMD (/bin/sh /home/wwiiol/lt_colonel_update.sh)
/var/log/cron-20110828:Aug 23 06:00:01 gdb12 CROND[7585]: (wwiiol) CMD (/bin/sh /home/wwiiol/lt_colonel_update.sh)

        原来这个计划是每周运行一次,查看一下日期,发现是每周二运行,可以将

0 6 * * 2 /bin/sh /home/wwiiol/lt_colonel_update.sh

写入crontab文件来恢复这个计划。

        不过,最后还是要说一点,一定要备份crontab文件,否则如果有上百条crontab计划的时候,真是要郁闷死啊。

转载于:https://blog.51cto.com/destbai/655879

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当用了万恶的crontab -r命令后…… 的相关文章

  • C#在linux上运行实现

    1 C 开发完了服务 2 部署到linux centos7上 3无法直接运行 解决方法 1 linux cenos7上安装mono 2 执行mono xxx exe 即可 解决方法2 下载 anyexec 1 2 linux x64 tar

随机推荐

  • C语言 leetcode刷题篇 删除有序数组中的重复项

    给你一个 升序排列 的数组 nums 请你 原地 删除重复出现的元素 使每个元素 只出现一次 返回删除后数组的新长度 元素的 相对顺序 应该保持 一致 由于在某些语言中不能改变数组的长度 所以必须将结果放在数组nums的第一部分 更规范地说
  • 跨域 访问总结

    文章转载自https segmentfault com a 1190000011145364 什么是跨域 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源 这里跨域是广义的 广义的跨域 1 资源跳转 A链接 重定向 表单提交 2 资源
  • Mybatis从头到尾(一)--MyBatis简介及项目搭建

    一 简介 MyBatis的前身是iBATIS 是ClintonBegin在2001年发起的一个开源项目 最初侧重于密码软件的开发 后来发展成为一款基于Java的持久层框架 2004年 Clinton将iBATIS的名字和源码捐赠给了Apac
  • labelme 5.0.1版本指南(二)labelme快捷键详解与修改

    如何自定义labelme的快捷键 非常简单也很实用 吐槽一下Ctrl J创建 Ctrl N编辑 对我的键盘很不友好 路径文件名是这个是这个 home mac labelmerc 打开以后可以看到各种快捷键 shortcuts close C
  • 深度学习06-pytorch从入门到精通

    文章目录 概述 环境准备 安装cuda和cudnn 安装pytorch 基础 张量 定义 numpy转换 数学函数 随机数 计算函数 矩阵处理函数 自动梯度 案例 计算图 torchvision模块 Transforms DataSet D
  • 鲜为人知的编程真相(转载)

    当程序员的经历让我知道了一些关于软件编程的事情 下面的这些事情可能会让朋友们对软件开发感到惊讶 一个程序员用在写程序上的时间大概占他的工作时间的10 20 大部分的程序员每天大约能写出10 12行的能进入最终的产品的代码 不管他的技术水平有
  • 数据量超过亿级别,MySQL大表迁移该如何做?

    MySQL 作为当前应用最广泛的开源关系型数据库之一 具有高性能 稳定性和易用性等特性 是许多网站 应用和商业产品的主要数据存储 在一些场景中 如果出现单表行数上亿的情况 就可能需要开发和 DBA 对大表进行优化 分表 归档或扩容操作 而在
  • std::shared_ptr 和 std::weak_ptr的用法以及引用计数的循环引用问题

    在std shared ptr被引入之前 C 标准库中实现的用于管理资源的智能指针只有std auto ptr一个而已 std auto ptr的作用非常有限 因为它存在被管理资源的所有权转移问题 这导致多个std auto ptr类型的局
  • 一文解决linux下mysql FEDERATED 存储引擎的配置和使用(笔者亲测有效)

    C C 气象数据中心实战工业级项目系列文章目录 第五章 解决linux下mysql FEDERATED 存储引擎的配置和使用 文章目录 C C 气象数据中心实战工业级项目系列文章目录 一 linux下mysql FEDERATED 存储引擎
  • 华为OD机试 - 文件目录大小(Python)

    题目描述 一个文件目录的数据格式为 目录id 本目录中文件大小 子目录id列表 其中目录id全局唯一 取值范围 1 200 本目录中文件大小范围 1 1000 子目录id列表个数 0 10 例如 1 20 2 3 表示目录1中文件总大小是2
  • ubuntu 下 opencv的安装以及配置(亲测有效)

    当在Ubuntu上安装OpenCV时 可以按照以下详细步骤进行操作 1 更新apt包列表 sudo apt update 这将更新系统的包列表 确保可以获取到最新的软件包信息 2 安装所需依赖项 sudo apt install build
  • Vue命名规范

    JS文件命名 一般采用的是小驼峰命名法 如 pieChartHelp 第一个单词小写 其他单词首字母大写 Components 文件命名 一般采用的是大驼峰命名法 如PieChart 所有单词的首字母大写 常量命名 一般全部大写 每个单词使
  • 目标检测YOLO实战应用案例100讲-无监督领域自适应目标检测方法研究与应用

    目录 无监督领域自适应目标检测方法研究 领域自适应目标检测 目标检测相关技术介绍
  • 数学建模之主成分分析(matlab算法)

    主成分分析是一种降维算法 它能将多个指标转换为少数几个主成分 这些主成分是原始变量的线性组合 且彼此之间互不相关 其能反映出原始数据的大部分信息 一般来说 当研究的问题涉及到多变量且变量之间存在很强的相关性时 我们可以考虑使用主成分分析的方
  • 非对称加密算法

    文章目录 概述 DH Diffie Hellman 秘钥交换算法 RSA 基于因子分解 ElGamal 基于离散对数 ECC Elliptical Curve Cryptography 椭圆曲线加密 概述 对称加密算法是因为秘钥的对称而由来
  • alpha shapes提取平面点云边界点

    1 原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单 有效的快速提取边界点算法 其克服了点云边界点形状影响的缺点 可快速准确提取边界点 其原理如下 如下图所示 对于任意形状的平面点云 若一个半径为a的圆
  • 从零到一不一样的TOC商城项目:Cloud-Alibaba+DDD,私活利器开源

    刚果商城 不一样的商城系统 刚果商城是个从零到一的商城项目 包含商城核心业务和基础架构两大模块 参照商城系统原型 推出用户 消息 商品 订单 优惠券 支付 网关 购物车等业务模块 通过商城系统中复杂场景 给出对应解决方案 使用 DDD 模型
  • 瑞吉外卖项目1 + 源码

    目录 一 瑞吉外卖项目介绍 1 1 项目介绍 1 2 技术点 1 3 功能架构 项目中所用到的全部功能 1 4 角色 不同角色所对应的不同权限 二 开发环境搭建 2 1 创建项目对应的数据库 两种方式 2 1 1 图形界面创建库形式 2 1
  • 大二第二周总结

    问题 想到了之前追的辩论赛 主题是 被误解是表达者的宿命 反方认为被误解不是表达者的宿命 由于表达者表意含混造成误解的可能性是人力可控的 表达者可在真诚沟通的基础之上 根据对方反应不断调整语言 或者采用表情和肢体等表达方式 对于暂时未理解表
  • 当用了万恶的crontab -r命令后……

    明天计划上个新的应用 需要写脚本获取服务器状态并写入数据库 下午写完脚本 准备先放cron里测试一下 登进服务器 想敲crontab e加一条计划 结果手一滑就敲成了crontab r 然后就悲剧了 因为发现没有备份 没办法 想办法恢复吧