记一次node进程无法kill 问题

起因

开发反馈测试环境某 node 进程使用 pm2 log 查看日志提示端口冲突,pm2 restart 重启进程问题依旧,但该服务可正常访问。

处理过程:

访问该服务 URL 业务正常,查看 Nginx access.log ,状态码为 200,即后端无异常。
pm2 log xx,查看该服务并未刷新日志。
pm2 restart ,无用。
怀疑该进程已 hang,决定杀进程重启。
lsof -i:port
kill -9 pid
查看杀进程是否成功,再次使用 lsof -i:port ,发现进程还在!只是换了个pid。
重复 lsof -i:port ,kill -9 pid 多次,进程都会自动启动,只是换了个pid。

kill 掉 pm2,该进程终于没了。恢复 pm2 该进程再次出现。
kill -9 杀进程,又回到前面该进程自动重启的状态。

由于是测试环境,我将该项目文件夹移动到其他文件夹,kill 进程后,发现进程未重启。
pm2 list查看,终于发现问题。
开发将该服务加入 pm2 list时,使用了不一致的上下文。
如原来为xx的上下文,加入pm2 管理时,开发设置成了yy。我一直去查xx上下文,当然查不出问题。

原文地址:https://www.cnblogs.com/fsckzy/p/10505995.html

时间: 2024-08-01 15:33:40

记一次node进程无法kill 问题的相关文章

停止node进程

运行vue-cli项目的时候经常出现端口号占用,npm run dev报错的信息, 此时可通过任务管理器粗暴的杀死node进程,也可以通过cmd检测占用某个端口的程序,进而杀死该进程,步骤如下: 1.netstat -ano 2.netstat -aon|findstr "某个端口号" 3.tasklist|findstr "PID" 4.taskkill /f /t /im tor.exe 附示例图:

pm2使用 node 进程管理

1.问题 使用阿里云服务器时遇到一个问题,就是只能开一个命令窗口,加入运行node服务,只能起一个服务,不能启多个服务.pm2可以解决这个问题. 2.pm2简介 官网:https://pm2.keymetrics.io/docs/usage/quick-start/ pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态. (1)安装 $ npm install [email protected] -g # or $ yarn global add pm2 (2)启服

【转】linux下杀死进程(kill)的N种方法

转载一篇,最原始的出处已不可考,望见谅! 常规篇: 首先,用ps查看进程,方法如下: $ ps -ef --smx       1822     1  0 11:38 ?        00:00:49 gnome-terminalsmx       1823  1822  0 11:38 ?        00:00:00 gnome-pty-helpersmx       1824  1822  0 11:38 pts/0    00:00:02 bashsmx       1827    

如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之

用ps和grep命令寻找僵尸进程 #ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数 因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程 运行结果参考如下 Z 12334 12339 /path/cmd 这时,我们可以使用 kill -HUP 12339来杀

linux下杀死进程(kill)的N种方法

常规篇: 首先,用ps查看进程,方法如下: $ ps -ef …… smx       1822     1  0 11:38 ?        00:00:49 gnome-terminal smx       1823  1822  0 11:38 ?        00:00:00 gnome-pty-helper smx       1824  1822  0 11:38 pts/0    00:00:02 bash smx       1827     1  4 11:38 ?    

RAC OCSSD进程被KILL引起系统重启--非root用户也能重启OS

OCSSD 这个进程是clusterware最关键的进程,CSSD进行异常,系统会立即重启. 在10.2.0.5/11.2.0.4的LINUX测试环境测试使用kill -9 <ocssd pid>可以观察到系统立刻重启,和init 6效果一样哈哈. ***这也发现一个漏洞:/u01/app/oracle/product/crs/bin/ocssd.bin这个进程是ORACLE用户的,使用ORACLE用户来KILL进程,就将LINUX重启了~~~ 这算不算是一个安全漏洞呢哈哈. [[email 

Linux ps -ef 排除当前进程(kill当前Tomcat进程)

在Linux 中,我们经常使用"ps -ef|grep tomcat" 查看进程,如下图是我操作的服务器上使用该命令后查看的结果: 可以看到,除了3个紫色的tomcat外,还会有一个该命令的进程. 如果想排除掉那个红色框的当前进程,可以在原来命令后面增加一段参数过滤,如下: ps -ef|grep tomcat|grep -v grep 只所以这样做,是因为我个人有个需求:写一个sh脚本放在tomcat/bin目录下,kill掉当前tomcat的进程. 编写 kill.sh 脚本,并将

ruby中执行shell命令找到进程并kill掉

shell命令获得进程id的方法有三种: 1. ps -A |grep cmdname| awk '{print $1}' 2. pidof cmdname 3. pgrep cmdname ruby中怎么做呢? ruby中有三种方式执行shell命令: %x: 执行命令并返回执行结果 exec:执行命令并退出. system:执行命令并返回true或false. 所以这里要使用%x来取得返回结果. 比如要killsublime: result = %x[pgrep sublime] %x[su

linux下查看进城(ps)的方法 与 杀死进程(kill)的N种方法

PS查看进程 inux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ps工具标识进程的5种状态码: D 不可中断 uninterruptible s