社区
Java SE
帖子详情
守护进程调度的多线程程序中进程无法正常退出的异常问题
y11111494
2012-07-10 04:43:19
请问如何解决:守护进程调度的多线程程序中进程无法正常退出的异常问题?
采用编写一个脚本在进程启动前KILL全部该名称进程的做法,是优秀程序员们嗤之以鼻的。
-------------------------------------------------------
...全文
227
8
打赏
收藏
守护进程调度的多线程程序中进程无法正常退出的异常问题
请问如何解决:守护进程调度的多线程程序中进程无法正常退出的异常问题? 采用编写一个脚本在进程启动前KILL全部该名称进程的做法,是优秀程序员们嗤之以鼻的。 -------------------------------------------------------
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
龙四
2012-07-17
打赏
举报
回复
看不懂,怎么解释好
[Quote=引用 7 楼 的回复:]
哪位朋友帮着解释?
[/Quote]
y11111494
2012-07-17
打赏
举报
回复
哪位朋友帮着解释?
y11111494
2012-07-11
打赏
举报
回复
http://www.cnblogs.com/ret00100/archive/2009/09/06/1561416.html
本页面的2.4.1.1.3 有完美的控制意识章节里面有:
程序员最瞧不起利用简单的临时程序处理关键问题的不负责任的编程行为,比如:为了解决守护进程调度的多线程程序中进程无法正常退出的异常问题,采用编写一个脚本在进程启动前KILL全部该名称进程的做法,是优秀程序员们嗤之以鼻的。
lw_China
2012-07-10
打赏
举报
回复
理解不了。。。。。。
y11111494
2012-07-10
打赏
举报
回复
我看书时,看到的这句话,那是原话。大概是这么个意思?
守护进程调度了多线程程序,但是进程无法正常退出
lw_China
2012-07-10
打赏
举报
回复
可能是语文没学好,没有看懂你的问题。。。可否简单直接点?
龙四
2012-07-10
打赏
举报
回复
我读的好拗口,没明白
y11111494
2012-07-10
打赏
举报
回复
看书时,看到的这个问题,不知道有什么好的思路来解答吗?
守护
进程
监控与自动重启脚本源码分析
守护
进程
(Daemon)是运行在后台的一种特殊
进程
,它不属于任何用户会话,且在系统启动时自动运行。它们通常执行一些周期性或基于事件的服务任务,比如打印队列管理、网络连接维护等。
守护
进程
对于保持系统的正常运行至关重要,因为它们提供了系统服务和管理任务的基础支撑。
守护
进程
的创建通常涉及到特定的编程技术和系统调用,它们必须从父
进程
分离,以避免不必要的资源占用和潜在的依赖
问题
。在Linux系统
中
,可以使用fork()系统调用创建子
进程
,并通过setsid()
Linux
进程
管理
1、
进程
与
程序
程序
是存储在磁盘上的可执行文件,
程序
被加载到内存
中
开始运行时叫做
进程
一个
程序
可以被多次加载生成多个
进程
,
进程
就是处于活动状态的计算机
程序
2、
进程
的分类
进程
一般分为三个种类:交互
进程
、批处理
进程
、
守护
进程
3、查看
进程
简单模式:ps 显示当前用户有终端控制
进程
简单信息列表模式:ps -auxw 显示所有
进程
的详细信息a 所有用户的有终端控制的
进程
x 无终端控制的
进程
u 显示
进程
的详细信息w 以更大的列宽显示。
各种可能导致 Node.js
进程
退出
的情况
但运行环境的
调度
策略是把我们服务的
进程
当成黑盒来处理的,不会管服务
进程
内部的运行情况,因此需要我们的服务
进程
主动感知运行环境的
调度
动作,然后做一些
退出
的清理动作。在服务上线后,虽然 k8s、pm2 等工具能够在
进程
异常
退出
时,不停地拉起
进程
,保证服务的可用性,但我们也应该在代码
中
主动感知
进程
的
异常
或者被
调度
的情况,从而能够更早发现
问题
。比如我们写了一个 cli 工具,需要比较长的时间执行。我们知道 pm2 有
守护
进程
的效果,在你的
进程
发生错误
退出
时,pm2 会重启你的
进程
,我们也在 Node.js 的。
Go语言实现
守护
进程
的挑战
Go社区与Go语言的早起元老们讨论了在Go
中
实现原生
守护
进程
的复杂性,主要挑战源于Go的运行时及其线程管理方式。当一个
进程
执行fork操作时,只有主线程被复制到子
进程
中
,如果fork前Go
程序
有多个线程(及多个goroutine)在执行(可能是由于go runtime
调度
goroutine和gc产生的线程),那么fork后,这些非执行fork线程的线程(以及goroutine)将不会被复制到新的子
进程
中
,这可能会导致后续子
进程
中
线程运行的不确定性(基于一些fork前线程留下的数据状态)。
僵尸
进程
孤儿
进程
以及
守护
进程
一.僵尸
进程
描述 一个
进程
使用fork创建子
进程
,如果子
进程
退出
,而父
进程
并没有调用wait或waitpid获取子
进程
的状态信息,那么子
进程
的
进程
描述符仍然保存在系统
中
,这种
进程
称之为僵死
进程
。 如何产生 一个
进程
在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸
进程
(Zombie)的数据结构(系统调用 exit,它的作用是使
进程
退出
,但也仅仅限于将一个...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章