V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
la2la
V2EX  ›  Linux

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

  •  
  •   la2la · Jul 5, 2019 · 8160 views
    This topic created in 2488 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  Jul 18, 2019

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

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

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

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

    不要出事了才想起来,然后用高超的实力拉一堆解决方案,不用花钱买教训还是不错的。
    wtks1
        26
    wtks1  
       Jul 5, 2019 via Android
    莫非直接 crontab -r 了?
    smallthing
        27
    smallthing  
       Jul 5, 2019
    git 备份配置的我眼泪掉下来
    om6r5sqSGG9Magr0
        28
    om6r5sqSGG9Magr0  
       Jul 5, 2019
    没事 明天看哪些业务数据没动了 就知道问题出在哪里了 [滑稽]
    la2la
        29
    la2la  
    OP
       Jul 5, 2019
    @Takamine 重新部署啊
    shm7
        30
    shm7  
       Jul 5, 2019 via iPhone
    人人都有大权限,不出事概率低吧。你们运维呢
    watzds
        31
    watzds  
       Jul 5, 2019 via Android
    什么用户?就你们几个开发??我还以为几十万用户啥的
    la2la
        32
    la2la  
    OP
       Jul 5, 2019
    @shm7 我们都是普通用户,他是部门老大有 root 权限
    sampeng
        33
    sampeng  
       Jul 5, 2019
    我们用 jenkins 做的定时任务。美其名曰好看。。呵呵呵。。好看个锤子。。。
    shouqw
        34
    shouqw  
       Jul 6, 2019
    用 puppet
    autogen
        35
    autogen  
       Jul 6, 2019
    我也 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  
       Jul 8, 2019
    @wtks1
    @autogen
    crontab 命令是针对“单个用户”的啊,为什么会清空“所有用户”的 crontab 呢?
    autogen
        37
    autogen  
       Jul 14, 2019
    @julyclyde 因为大家都是用同一个 user 跑程序(比如所有的服务都用 admin 用户部署)
    julyclyde
        38
    julyclyde  
       Jul 17, 2019
    @autogen 唉,好倒霉
    julyclyde
        39
    julyclyde  
       Jul 17, 2019
    提倡使用 /etc/cron.d/ 啊,按任务分类,而不是按用户名分类
    这样的分类方法和粒度都更适合管理
    la2la
        40
    la2la  
    OP
       Jul 18, 2019
    @Takamine 想起来的布置上,其他的等人来找我再说 0.0
    Takamine
        41
    Takamine  
       Jul 18, 2019 via Android
    @la2la 哈哈哈哈哈哈哈哈。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4660 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 94ms · UTC 10:07 · PVG 18:07 · LAX 03:07 · JFK 06:07
    ♥ Do have faith in what you're doing.