命令行开启常驻服务小结

最近玩 Node js ,想常驻一个服务, node index.js 。直接再命令行这样玩的话,当你 ctrl + c 或者
关闭命令行是,服务随着关闭结束。

那怎么操作能让他在后台常驻运行呢?常驻之后,我又能怎么手动结束这个进程呢?

1. 常驻后台:
nohup 指令 &
使用 nohub + 对应需要执行的指令 + & 就能实现后台常驻。
例如上面的 node index.js 需要常驻的话,就应该这样写:

nohub node index.js &

这个时候,命令行中会给你返回出进程 id :

[1] 83281
appending output to nohup.out   
  1. 结束进程

常驻后台后,你不得不面临第二个问题,如何手动结束该进程, kill -9 帮你解决:

kill -9 83281
[1]  + 83281 killed     nohup node index.js    

接着再重复上面的开始指令。

  1. 查看端口对应进程

如果上面说的进程ID 你已经记不得,这个也不要紧,使用 lsof -i <端口号>

lsof -i:80

node   83281  lovejjfg   22u  IPv6 0x7bc41b53c97391cf      0t0  TCP *:http (LISTEN)

ok ,再重复操作步骤2 ,完成。

到这里,内容算完成了。

异常问题,如果在 zsh 中出现以下错误:

zsh: you have running jobs

那么在 nohup 指令 & 指令最后再添加一个 !。 像这样:

nohup 指令 &!

思来想去总觉这一对操作太麻烦了,简单用一下都挺累的。各种指令需要切换,难道就没有大佬解决这个问题吗?
哈哈 , pm2 解决你所有烦恼。

  1. pm2 开启服务:

    pm2 start index.js --name index_debug

  2. 查看后台服务列表
    通过以上指令,你就开启了 index.js 的服务。如何查看已开启的服务呢?

    pm2 list

image.png

这里的 name index_debug 就是这个刚刚我们开启指令所指定的 name 。 最后, 还有一个 watching ,这个是啥意思呢?

  1. 自动重启

这就涉及到重启刷新的问题,如果 pm2 能在我们更新代码后自动更新服务岂不美哉?只需要在 start 的指令后增加 --watch 的参数即可。

pm2 start index.js --name index_debug --watch 
  1. 手动重启

如果没有设置 watch ,那么你就需要手动重启,在这个时候,只需要 执行 restart 操作。

当然,这只是入门的基本操作指令。例如 watch 是否需要过滤某些文件修改等。详情请阅读请继续看官方文档。

参考链接:
https://www.jianshu.com/p/7e60a2d76aa5
https://www.cnblogs.com/chyingp/p/pm2-documentation.html
https://www.cnblogs.com/sparkdev/p/6659629.html

你可能感兴趣的:(命令行开启常驻服务小结)