V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
la2la
V2EX  ›  Linux

当部门老大错误操作清了所有用户的 crontab 的定时任务,问他还一脸无辜的说:我的也没了。((*・∀・)ゞ→→

  •  
  •   la2la · 2019-07-05 15:15:27 +08:00 · 7599 次点击
    这是一个创建于 2002 天前的主题,其中的信息可能已经有所发展或是发生改变。

    定时备份自己的任务真的是个习惯,鬼知道我的几十个定时任务都是啥( -'`-)

    第 1 条附言  ·  2019-07-18 10:37:15 +08:00

    补充一个后续吧,我真的没搞清楚老大是怎么操作的,咱也不敢问,但是有一个更难受的是重新布置的crontab任务竟然不执行了。。。

    $ systemctl status crond
    ● crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2019-07-02 10:33:21 CST; 2 weeks 1 days ago
     Main PID: 615 (crond)
       CGroup: /system.slice/crond.service
               └─615 /usr/sbin/crond -n
    

    但是明明发现crond服务在运作着啊(我linux仅限于基本使用)
    于是老大让我们把定时任务迁移到另一个机器上(想想路径,数据库授权,表权限绑定一堆事就很烦)

    41 条回复    2019-07-18 18:24:14 +08:00
    ben1024
        1
    ben1024  
       2019-07-05 15:25:16 +08:00
    为何不用版本控制 + 中控任务调度
    tusj
        2
    tusj  
       2019-07-05 15:27:34 +08:00
    避免记在心里,口耳相传。
    代码化+版本控制才是正道
    liuzhiyong
        3
    liuzhiyong  
       2019-07-05 15:28:24 +08:00 via Android
    哈哈,备份加版本控制,干活必不可少呀。
    lithiumii
        4
    lithiumii  
       2019-07-05 15:32:31 +08:00
    吓得我立刻备份了自己的几十条任务(并没有
    la2la
        5
    la2la  
    OP
       2019-07-05 15:35:09 +08:00
    @ben1024 我不太清楚你说的意识。能简单的说一下用到那些技术吗?谢谢!
    d0m2o08
        6
    d0m2o08  
       2019-07-05 15:37:18 +08:00   ❤️ 1
    la2la
        7
    la2la  
    OP
       2019-07-05 15:41:45 +08:00
    @d0m2o08 嗯,有一部分的任务使用 rundeck 部署的,但是也有一部分是 crontab,不过还好影响不大,都是一些整理文件,转移数据类的脚本。不过自己几个月前部署的任务是真的想不起是干啥的
    rockyou12
        8
    rockyou12  
       2019-07-05 15:47:33 +08:00
    lz 可以试试 ansible 来部署 cron,ansible 脚本放 git 上,又有了版本控制
    exip
        9
    exip  
       2019-07-05 15:48:01 +08:00   ❤️ 2
    老大看你们摸鱼太厉害又不便明说就搞了这么一出
    julyclyde
        10
    julyclyde  
       2019-07-05 16:14:11 +08:00
    怎么做到清了“所有”用户的 crontab 的?把 /var 删了?
    x7395759
        11
    x7395759  
       2019-07-05 16:18:16 +08:00
    老大没有错啊哈哈哈哈哈
    la2la
        12
    la2la  
    OP
       2019-07-05 16:52:38 +08:00   ❤️ 1
    @julyclyde 咱也没权限,咱也不干问啊
    AngryPanda
        13
    AngryPanda  
       2019-07-05 16:55:33 +08:00 via Android
    我猜他用了 cron -r

    本来想敲-e,结果按错了成了-r

    我也中招几次了
    Cbdy
        14
    Cbdy  
       2019-07-05 16:57:41 +08:00 via Android
    为啥不用 Spring Schedule
    memedahui
        15
    memedahui  
       2019-07-05 17:23:11 +08:00
    还好我写在 spring 里面
    la2la
        16
    la2la  
    OP
       2019-07-05 17:24:13 +08:00   ❤️ 1
    @AngryPanda 我查了一下这个命令果然非常坑,那他是咋删除所有用户的呢? corntab -r 不是删除当前用户的吗
    ben1024
        17
    ben1024  
       2019-07-05 17:27:45 +08:00   ❤️ 1
    @la2la
    是有专门的服务做定时任务的调度,当然也可以集成在项目中。(例如 nesbot/carbon )
    cron 只进行配置一个分钟级别定时任务不断进行触发定时调度,或者用其他服务进行秒级触发
    这样会有很多好处(限制并发,限流,开闭,分发等),如果有精力还可以做图形化控制
    la2la
        18
    la2la  
    OP
       2019-07-05 17:32:26 +08:00
    @ben1024 好的。但是现在我们业务还没有这么复杂,我涉及到的都是比较简单的脚本,用 rundeck 感觉就够用了
    lshero
        19
    lshero  
       2019-07-05 17:32:57 +08:00
    gocron 真的很好用
    Takamine
        20
    Takamine  
       2019-07-05 17:45:39 +08:00
    我比较想知道那你接下来怎么办...。
    ily433664
        21
    ily433664  
       2019-07-05 17:50:47 +08:00
    说的没有错啊,他的也没了 2333333
    deepdark
        22
    deepdark  
       2019-07-05 17:54:45 +08:00 via Android
    @lithiumii 哈哈哈哈哈哈哈我也想去备来着,打开 mobaxterm 就放弃了
    yghack
        23
    yghack  
       2019-07-05 17:57:25 +08:00
    赶紧拿执行日志找回来吧
    MartinWu
        24
    MartinWu  
       2019-07-05 18:20:33 +08:00
    莫名有点萌
    whywhywhy
        25
    whywhywhy  
       2019-07-05 18:30:39 +08:00 via Android   ❤️ 1
    平时技术太高超了,什么都能做。

    现在知道什么是最重要的了吧,数据!备份!

    不要出事了才想起来,然后用高超的实力拉一堆解决方案,不用花钱买教训还是不错的。
    wtks1
        26
    wtks1  
       2019-07-05 18:34:38 +08:00 via Android
    莫非直接 crontab -r 了?
    smallthing
        27
    smallthing  
       2019-07-05 18:35:35 +08:00
    git 备份配置的我眼泪掉下来
    Enochyun
        28
    Enochyun  
       2019-07-05 18:42:02 +08:00
    没事 明天看哪些业务数据没动了 就知道问题出在哪里了 [滑稽]
    la2la
        29
    la2la  
    OP
       2019-07-05 19:00:34 +08:00
    @Takamine 重新部署啊
    shm7
        30
    shm7  
       2019-07-05 19:20:04 +08:00 via iPhone
    人人都有大权限,不出事概率低吧。你们运维呢
    watzds
        31
    watzds  
       2019-07-05 19:23:57 +08:00 via Android
    什么用户?就你们几个开发??我还以为几十万用户啥的
    la2la
        32
    la2la  
    OP
       2019-07-05 20:29:50 +08:00
    @shm7 我们都是普通用户,他是部门老大有 root 权限
    sampeng
        33
    sampeng  
       2019-07-05 20:59:54 +08:00
    我们用 jenkins 做的定时任务。美其名曰好看。。呵呵呵。。好看个锤子。。。
    shouqw
        34
    shouqw  
       2019-07-06 05:24:11 +08:00
    用 puppet
    autogen
        35
    autogen  
       2019-07-06 07:49:24 +08:00
    我也 crontab -r 和-e 经常搞错。。。。。。。。。。

    加个这个脚本到 bashrc 里:


    etime=`date -d "0 days ago" +%Y%m%d_%H%M%S`

    if [ "$1" = "-r" ] ; then
    echo "My God! Dangerous..."
    echo "Exit..."
    exit 2
    fi

    if [ "$1" = "-l" ] ; then
    /usr/bin/crontab -l
    exit 0
    fi

    if [ "$1" = "-e" ] ; then
    mkdir -p ~/cronbak
    /usr/bin/crontab -l > ~/cronbak/cron.bak.$etime.a
    /usr/bin/crontab -e
    /usr/bin/crontab -l > ~/cronbak/cron.bak.$etime.b
    fi
    julyclyde
        36
    julyclyde  
       2019-07-08 11:55:00 +08:00
    @wtks1
    @autogen
    crontab 命令是针对“单个用户”的啊,为什么会清空“所有用户”的 crontab 呢?
    autogen
        37
    autogen  
       2019-07-14 06:08:28 +08:00
    @julyclyde 因为大家都是用同一个 user 跑程序(比如所有的服务都用 admin 用户部署)
    julyclyde
        38
    julyclyde  
       2019-07-17 17:53:26 +08:00
    @autogen 唉,好倒霉
    julyclyde
        39
    julyclyde  
       2019-07-17 17:53:59 +08:00
    提倡使用 /etc/cron.d/ 啊,按任务分类,而不是按用户名分类
    这样的分类方法和粒度都更适合管理
    la2la
        40
    la2la  
    OP
       2019-07-18 10:41:34 +08:00
    @Takamine 想起来的布置上,其他的等人来找我再说 0.0
    Takamine
        41
    Takamine  
       2019-07-18 18:24:14 +08:00 via Android
    @la2la 哈哈哈哈哈哈哈哈。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2542 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:49 · PVG 12:49 · LAX 20:49 · JFK 23:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.