记一次线上bug:crontab 被意外清空

问题概述

同事反馈,某台服务器的crontab 被清空了.

看了cron运行日志来看,问题出在这里:

Jul  3 10:01:24 10-10-65-235 crontab[19333]: (root) REPLACE (root)

这一时刻被替换掉了,后续就没有任务执行了。

然后紧急恢复备份,并从日志中检查遗漏项。

问题排查

定位出问题后,就从history中找执行的操作。

可从history中没有看到 crontab -r 的操作被执行。

后在Google搜索问题找到一些类似的情况,是由于远程登录、加空格之类的导致的(https://cloud.tencent.com/developer/article/2222953)。

我看了后,就发现这一定是我的锅了,并且受影响的还有其他两台设备。

问题复现

我的操作是从远程服务器通过 ssh 直接执行的命令,卡住之后 ctrl+C中断了操作,于是任务被清空。

复现流程:

  • 创建任务(保证任务列表中有内容,不为空)。

    • ╭─ ~/cmd ▓▒░·······························································░▒▓   10:29:52 ─╮
      ╰─ crontab -l ─╯
      # Minute Hour Day of Month Month Day of Week who Command
      # (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) 20 17 * * 1-5 open "https://tengyun.qianxin-inc.cn/home/workspace/worklog" ╭─ ~/cmd ▓▒░·······························································░▒▓ 10:29:54 ─╮
      ╰─ ─╯
  • 使用ssh命令执行能卡住的命令,如crontabcrontab -

    • ╭─ ~/cmd ▓▒░·······························································░▒▓   10:29:54 ─╮
      ╰─ ssh nanshao@127.0.0.1 crontab ─╯
  • 命令卡住,此刻查看 crontab -l 还是有的。

    • ╭─ ~/cmd ▓▒░·······························································░▒▓   10:30:59 ─╮
      ╰─ crontab -l ─╯
      # Minute Hour Day of Month Month Day of Week who Command
      # (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) 20 17 * * 1-5 open "https://tengyun.qianxin-inc.cn/home/workspace/worklog" ╭─ ~/cmd ▓▒░·······························································░▒▓ 10:31:02 ─╮
      ╰─ ─╯
  • 使用ctrl+C结束掉后检查任务列表。

    • ╭─ ~/cmd ▓▒░·······························································░▒▓   10:29:54 ─╮
      ╰─ ssh nanshao@127.0.0.1 crontab ─╯
      ^C%
      ╭─ ~/cmd ▓▒░··························································░▒▓ 55s 10:31:30 ─╮
      ╰─ crontab -l ─╯ ╭─ ~/cmd ▓▒░·······························································░▒▓ 10:31:33 ─╮
      ╰─ ─╯

问题复现成功。

其他测试

  • 后又分别在本机直接测试了这些指令,均没有清空任务列表。只有在ssh操作时,会被清空。
  • ssh 操作中 ssh XXX@XXX bash -c "crontab -l" 该命令也会被卡住。

总结

产生的操作,弄明白了,但是原理还是没搞明白。

避坑方法:

  • 定时备份。
  • 在卡住时,不要中断,先备份,在停止掉。

又是一次难忘的经历。

记一次线上bug:crontab 被意外清空的更多相关文章

  1. 记一次线上bug排查-quartz线程调度相关

    记一次线上bug排查,与各位共同探讨. 概述:使用quartz做的定时任务,正式生产环境有个任务延迟了1小时之久才触发.在这一小时里各种排查找不出问题,直到延迟时间结束了,该任务才珊珊触发.原因主要就 ...

  2. 解Bug之路-记一次线上请求偶尔变慢的排查

    解Bug之路-记一次线上请求偶尔变慢的排查 前言 最近解决了个比较棘手的问题,由于排查过程挺有意思,于是就以此为素材写出了本篇文章. Bug现场 这是一个偶发的性能问题.在每天几百万比交易请求中,平均 ...

  3. 「日常开发」记一次因使用Date引起的线上BUG处理

    生活中,我们需要掌控自己的时间,减少加班,提高效率:日常开发中,我们需要操作时间API,保证效率.安全.稳定.现在都2020年了,了解如何在JDK8及以后的版本中更好地操控时间就很有必要,尤其是一次线 ...

  4. 线上bug的解决方案--带来的全新架构设计

    缘由 本人从事游戏开发很多年一直都是游戏服务器端开发. 因为个人原因吧,一直在小型公司,或者叫创业型团队工作吧.这样的环境下不得不逼迫我需要什么都会,什么做. 但是自我感觉好像什么都不精通..... ...

  5. 程序员如何描述清楚线上bug

    案例 一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id.原因是修改了一个返回操作人姓名的函数,返回了操作人的id.但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员 ...

  6. 线上bug分析

    昨天下午大神把组内几十号人召集在一起开Online bug分析大会,主要是针对近期线上事故从事故原因和解决方案两个维度来分析. 对金融软件来说,每一次的线上事故都有可能给公司带来重大的损失,少扣了用户 ...

  7. 听说”双11”是这么解决线上bug的

    听说"双11"是这么解决线上bug的 --Android线上热修复的使用与原理 预备知识和开发环境 Android NDK编程 AndFix浅析 Android线上热修复的原理大同 ...

  8. 线上bug或故障界定及填写规范

    [线上故障与线上Bug界定] 一.线上故障: 1.  故障参照公司规范稍做调整: a)         1级故障:资讯首页或主App首页无法打开:多条业务线同时不可用:超过15分钟: b)       ...

  9. 关于线上bug

    之所以想写下线上bug,因为发觉有些公司对线上bug的处理是比较严格甚至是很苛刻,涉及到的相关人可能会因此而背黑锅. 之所以会存在这样情况,因为公司各部门都有关联,特别是用户.老板的投诉,也给公司会造 ...

  10. 记录一次线上bug

    记录一次线上bug,总的来说就是弱网和重复点击.特殊值校验的问题. 测试场景一:        在3g网络或者使页面加载速度需要两秒左右的时候,输入学号,提交学生的缴费项目,提交完一个 学生的缴费后, ...

随机推荐

  1. 全网最详细中英文ChatGPT-GPT-4示例文档-智能聊天机器人从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...

  2. Linux搭建docker

    ### 1. 查看系统的内核版本 ```bash[root@wide ~]# uname -r3.10.0-1160.el7.x86_64``` ### 2. 将yum更新到最新版本 ```bash[ ...

  3. hackathon 复盘:niche 海外软件工具正确的方法 6 个步骤

    上周末,去参加了北京思否 hackathon,两天时间内从脑暴 & 挖掘软件 IDEA -> Demo 研发路演,这次经历让我难忘.这里我的看法是每个开发者圈友,都应该去参加一次 hac ...

  4. [C++项目] 通讯录管理系统

    文章目录 通讯录管理系统 1.系统需求 2.创建项目 2.1 创建项目 2.2添加文件 3.菜单功能 4.退出功能 5.添加联系人 5.1 设计联系人结构体 5.2 设计通讯录结构体 5.3 main ...

  5. 关于 static

    由static定义的被称为类属性 例如(  static String company = "博客园"  ) 类方法 例如(  public static void printCo ...

  6. 一文吃透Tomcat核心知识点

    架构 首先,看一下整个架构图.最全面的Java面试网站 接下来简单解释一下. Server:服务器.Tomcat 就是一个 Server 服务器. Service:在服务器中可以有多个 Service ...

  7. LeetCode 双周赛 103(2023/04/29)区间求和的树状数组经典应用

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 这场周赛是 LeetCode 双周赛第 103 场,难得在五一假期第一天打周赛的人数也没 ...

  8. 2022-02-16:将数组分割成和相等的子数组。 给定一个有 n 个整数的数组,你需要找到满足以下条件的三元组 (i, j, k) : 0 < i, i + 1 < j, j + 1 < k < n

    2022-02-16:将数组分割成和相等的子数组. 给定一个有 n 个整数的数组,你需要找到满足以下条件的三元组 (i, j, k) : 0 < i, i + 1 < j, j + 1 & ...

  9. 2021-08-31:去除重复字母。给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。力扣316。

    2021-08-31:去除重复字母.给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次.需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置).力扣316. 福大大 答案 ...

  10. vue核心

    VUE简介 vue--一套用于构建用户界面的渐进式JavaScript框架 vue特点 采用组件化模式--提高代码复用率--让代码更好维护 声明式编程--让编码人员无需直接操作DOM--提高开发效率 ...