V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
verfino
V2EX  ›  程序员

如何用Linux shell写一个关闭Node进程的脚本?

  •  
  •   verfino ·
    helix-dan · 2013-04-17 17:58:22 +08:00 · 3981 次点击
    这是一个创建于 4241 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Node没有类似stop的命令(不像Node的forever工具,可以通过stop来关闭)

    现在的解决办法是 ps -ef | grep -i node
    找到node的父进程
    然后kill -9 进程号

    通过这样来关闭Node进程

    不知道大家有没有什么更优雅的方法啊
    7 条回复    1970-01-01 08:00:00 +08:00
    yangg
        1
    yangg  
       2013-04-17 18:33:34 +08:00   ❤️ 1
    pgrep node | xargs -i kill {}
    LazyZhu
        2
    LazyZhu  
       2013-04-17 18:45:42 +08:00   ❤️ 1
    leohxj
        3
    leohxj  
       2013-04-17 21:28:39 +08:00 via iPhone
    借楼问下,为什么我在VPS上用&后台运行一个node(express app.js)程序,然后我logout之后这个进程就不存在了?项目就访问不了了
    enotey
        4
    enotey  
       2013-04-17 21:39:47 +08:00 via Android   ❤️ 1
    @leohxj nohup
    duhastmich
        5
    duhastmich  
       2013-04-18 08:40:10 +08:00   ❤️ 1
    node app.js & echo $! > app.pid
    verfino
        6
    verfino  
    OP
       2013-04-18 09:39:02 +08:00
    @yangg 感谢!这个方法至少比我的优雅.... 我现在是根据关键字查找父进程,然后kill掉父进程
    具体实现是
    ps ax | grep "node my_app.js" | grep -v "grep" | awk '{print $1}' | xargs kill -9

    @LazyZhu 感谢!还是自己Google 的关键词没对,不过这里面的方法跟我一样不优雅,哈哈哈

    @duhastmich 感谢,看了上述答案,最终还是要跟你这个方案考虑.... PID比定位关键字更加准确
    halfbloodrock
        7
    halfbloodrock  
       2013-04-18 09:55:56 +08:00
    建议使用标准kill信号,kill PID,或者kill -15 PID。kill -9杀死进程方式太暴力,可能出现不释放资源的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:32 · PVG 08:32 · LAX 16:32 · JFK 19:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.