node.js - 启动和停止简单 Node.js 脚本的正确方法是什么
问题描述
我正在尝试创建一个简单的 Twitter 机器人来学习一些 Node.js 技能。
它在我的本地计算机上运行良好。我用 Ctrl + C 启动脚本,node bot.js
然后用 Ctrl + C 关闭它。
我已将文件上传到服务器(Krystal 托管)。我已经 ssh 进入服务器,然后使用$ source /home/[username]/nodevenv/twitterbot/10/bin/activate
. 我认为这让我进入了 Node 环境(我不太清楚这里发生了什么)。
从这里我可以跑node bot.js
。我的 Twitter 机器人运行良好,我可以离开终端。我现在意识到的是我不知道如何停止这个脚本。
有人可以解释我应该怎么做吗?我可以输入命令来停止原始bot.js
进程吗?自从研究这个看起来我应该使用像 pm2 进程管理器这样的东西。这个对吗?
任何指针将不胜感激。
谢谢,乙
解决方案
您可以通过从操作系统命令行或操作系统 GUI 中删除进程来从外部杀死它(具体过程因操作系统而异)。来自 shell 的 Ctrl-C 是其中的一个版本,但也可以通过直接对进程进行核对而无需启动它的命令 shell 来完成。
或者,您可以添加一个控制端口(一个运行在只能在本地访问的端口上的简单的小型 http 服务器),该端口接受允许您对服务器执行各种操作的命令,例如提取统计信息、关闭它、更改配置、告诉它可以清除缓存,以便内容更新立即生效,等等……以这种方式关闭服务器可以更有序地关闭服务器内的代码。您甚至可以停止接受传入的连接,但在关闭之前等待现有的 http 连接完成,正常关闭数据库等......
或者,您可以使用监控程序,例如 PM2 或永远,除了在服务器崩溃时自动重新启动服务器之外,它们还提供关闭它的命令(它只会向它发送某些信号,例如 Ctrl-C做)。
推荐阅读
- reactjs - Typescript 和 Redux - 使用 Visual Studio 2017 的默认应用程序布局时出错
- c# - 使用 X 或创建按钮关闭表单
- java - 约束布局自定义页脚
- objective-c - 如何在整个应用程序中“共享”代码片段?
- jenkins - 在 Jenkinsfile 中使用元组时出现 Unapprovable RejectedAccessException
- javascript - 检测不可滚动的 div 内的滚动
- emacs - helm-projectile:如何在多个 git repo 中搜索
- javafx - 如何在 JavaFX 中扩展 TextField 的高度
- apache-spark - Spark Java中按字数分布的文本
- python - 我想为 Selenium 编写一个循环来更改网站的参数。我在编写循环调用网站时遇到问题