V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
oldcai
V2EX  ›  分享创造

让服务器上长时间运行的命令运行完自动通知你

  •  
  •   oldcai ·
    oldcai · 2018-02-07 05:37:39 +08:00 · 5458 次点击
    这是一个创建于 2466 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作用

    一个命令要运行很久,又有后续任务等着这个命令处理完才能做,而等待的时候不想总是过来查看是否已经运行完毕。

    用法举例

    比如你正在运行

    sleep 3600
    

    可以输入这段命令

    curl -s --user 'api:key-xxxxxxxxxxxxxxxxxx' \
        https://api.mailgun.net/v3/oldcai.com/messages \
        -F from='Notification <[email protected]>' \
        -F [email protected] \
        -F subject="Task on <$HOST> Has Been Completed\!" \
        -F text="returned $?"
    date
    
    

    运行完了就会发邮件提示你了,邮件内容也可以改成其他的。

    效果示例:

    虽然没什么技术含量,但是很方便。

    不足之处

    • 需要先注册 mailgun 账号,装 curl
    • 求助:任务太多时候,容易记不清是哪个任务完成了,希望能把上条命令也加入到邮件内容中。补充:history 命令不适合 zsh 这种共享命令历史的终端,希望这个能有办法获得到像按上方向键那样的 shell 结果。

    进阶用法

    在 textexpander,或者 Alfred 等的 Snippets 中加个自动完成,需要的时候。

    第 1 条附言  ·  2018-02-07 15:49:09 +08:00
    @upczww 不太想晚上突然叮一声,不然我自己也有微信服务号通知模板可以推给自己
    @cxh116 也考虑过 SMTP,但是我不喜欢每台机器配置 SMTP,这个命令可以随时粘贴。
    @ETiV 不需要中断或者挂起,直接卡住的时候输入即可,不然也没什么方便可言。可以试试看。
    @keepsmilence 不是同一个需求,不是为了不阻塞,而是为了完成后通知。
    @yangqi 用 SMTP 还有个问题在于,账号安全性,用 mailgun/sendcloud 等,被发现 key 了也无所谓。
    @neighbads
    @ekousp 习惯用钉钉或者 slack 的也都行,slack 我的消息比较多,怕冲跑了,而且不像 email 这样习惯工作前就看一眼。

    另外,请问,获取上一条命令可有什么办法做到吗?
    24 条回复    2019-05-07 18:28:53 +08:00
    vB4h3r2AS7wOYkY0
        1
    vB4h3r2AS7wOYkY0  
       2018-02-07 07:24:07 +08:00
    写成脚本, 然后
    ./notify.sh sleep 3600
    cxh116
        2
    cxh116  
       2018-02-07 07:25:40 +08:00 via Android   ❤️ 2
    修改 /etc/mail.rc 文件,配置你的邮箱的 smtp 地址与帐号密码,然后就可以直接用 mail 命令直接发邮件了。
    Tink
        3
    Tink  
       2018-02-07 07:33:13 +08:00 via iPhone
    &&
    whwq2012
        4
    whwq2012  
       2018-02-07 08:03:30 +08:00 via Android
    讲道理,server 酱比这个方便吧
    ETiV
        5
    ETiV  
       2018-02-07 08:17:59 +08:00 via iPhone
    其实我作为用户的话,最痛的痛点在于,命令敲完了,等了一两分钟也不见完……

    这个时候我不想 ctrl-c、z,又想它完成后通知我(最希望的是能告诉我进度、预估完成时间)
    sinxccc
        6
    sinxccc  
       2018-02-07 08:18:03 +08:00
    我是用了一个 telegram 的 bot 来发消息: https://github.com/rahiel/telegram-send

    zsh 的话有一个内置的 fc 函数,你可以看看用法。
    zhujinliang
        7
    zhujinliang  
       2018-02-07 08:19:25 +08:00 via iPhone
    哈哈,以前用 yo 这个 app 做过
    upczww
        8
    upczww  
       2018-02-07 08:57:37 +08:00 via Android
    server 酱了解一下
    DuckJK
        9
    DuckJK  
       2018-02-07 09:21:42 +08:00
    DuckJK
        10
    DuckJK  
       2018-02-07 09:24:06 +08:00
    我用 bearychat,建一个 incoming 机器人
    keepsmilence
        11
    keepsmilence  
       2018-02-07 09:41:05 +08:00
    nohup ./xxx.sh & 满足不了么?
    tonghuashuai
        12
    tonghuashuai  
       2018-02-07 09:56:27 +08:00
    楼主的需求就是多个命令自动串行执行呗 && 就行吧,比如:
    git push && git pull up master

    所以多个 cmd1&&cmd2&&cmd3...
    yangqi
        13
    yangqi  
       2018-02-07 09:58:57 +08:00
    需要这么复杂么,自带的 mail 就可以啊

    command; echo "Process done" | mail -s "Process done" [email protected]
    jaxer
        14
    jaxer  
       2018-02-07 10:01:33 +08:00
    可以试一下 ifttt 的 webhook,他会提供一个网址,可以传入 3 个参数。
    被访问后,后续可以触发邮件,电话,短信等都可以。
    neighbads
        15
    neighbads  
       2018-02-07 10:50:42 +08:00
    dingtalk-bot
    i730
        16
    i730  
       2018-02-07 11:46:44 +08:00 via Android
    。。。。只要挂着 ssh,任务完成会有响铃,一个桌面提醒。 需要 ssh 客户端支持
    xoxo419
        17
    xoxo419  
       2018-02-07 12:04:29 +08:00
    @i730 #16 是什么工具可以做到?
    wangxiaoer
        18
    wangxiaoer  
       2018-02-07 12:12:13 +08:00
    这种直接用 python js 这种脚本实现简单的多,邮件通知还不是要继续执行下一条命令?
    stanjia
        19
    stanjia  
       2018-02-07 12:16:26 +08:00
    @sinxccc telegram 的 bot 在使用时需要施法吗?
    ekousp
        20
    ekousp  
       2018-02-07 12:31:05 +08:00
    curl 一下 slack 也可以。
    oldcai
        21
    oldcai  
    OP
       2018-02-07 16:46:58 +08:00
    @jaxer 确实,ifttt 更好,如果可以长期稳定运行。等 ifttt 有盈利模式了后,我也会重度一点使用。
    @i730 长时间任务一般用 tmux, screen, byobu 等挂着,避免开多个窗口,或者 ssh 链路断了导致问题。通知比终端自己叮一声稳一点。
    timothyye
        22
    timothyye  
       2018-02-09 10:12:54 +08:00
    server 酱 +1 微信通知也不错
    qhxin
        23
    qhxin  
       2018-02-09 16:01:37 +08:00
    用方糖 :)
    win7pro
        24
    win7pro  
       2019-05-07 18:28:53 +08:00
    我用的喵提醒,感觉可以满足需求
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5148 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:33 · PVG 17:33 · LAX 01:33 · JFK 04:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.