没有合适的资源?快使用搜索试试~ 我知道了~
让进程在后台可靠运行的几种方法
资源推荐
资源详情
资源评论
让进程在后台可靠运行的几种方法
应用场景:command line启动程序(fork()+exec),远程登录断网,关闭终端,用户注销都会向中端
发送hangup信号,从而关闭其所有子进程。因此解决此问题的方法也有两种:
1)让进程忽略HUP信号;
2)让进程运行在新的会话里,从而不属于终端的子进程。
【注意】hangup(SIGHUP 1)信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制
进程结束时, 通知同session(shell进程)内的各个作业(子进程), 这时它们与控制终端不再关联。
登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台
进程组和后台进程组,一般都属于这个Session。当用户退出linux登录时,前台进程组和后台有
对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进程组和后台
有终端输出的进程就会中止。不过可以捕获这个信号,比如wget能捕获SIGHUP信号,并忽略它,
这样就算退出了linux登录,wget也能继续下载。此外,对于与终端脱离关系的守护进程,这个信号
用于通知它重新读取配置文件。
1>nohup(忽略SIGHUP):nohup a.out &
【注意】在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是
将命令放入到一个作业队列中了
2>setsid(不接收SIGHUP):setsdi a.out
3>subshell:(a.out &)此时a.out的父进程PID为1,所以其不属于终端会话,自然就不受SIGHUP影响
【注意】session是会话的意思,一个连接就可称为一个会话;终端一般指相于服务器连接的客户端,
终端通过会话建立连接后,才和服务器进行通讯,只要通信(telnet、ssh)就有会话。
4>disown(否认;否认与…有关系,断绝与…的关系):使用jobs查看后台进程,是后台进程直接使用disown
不是使用bg将进程转移到后台,再使用disown
jobs:查看后台进程,返回任务编号n和进程命令
bg(background) n:将任务编号为n的进程转移到后台运行
fg(foreground) n:将任务编号为n的进程转移到前台运行
ctrl+z:挂起当前任务
ctrl+c:结束当前任务
【注意】使用vim编辑器时ctrl+z、bg太有用了。
【注意】如果进程不断有信息输出到终端,好像不太好使,将输出重定向就可以了(难道就是因为有输出
与终端有联系了就不行?)
应用场景:command line启动程序(fork()+exec),远程登录断网,关闭终端,用户注销都会向中端
发送hangup信号,从而关闭其所有子进程。因此解决此问题的方法也有两种:
1)让进程忽略HUP信号;
2)让进程运行在新的会话里,从而不属于终端的子进程。
【注意】hangup(SIGHUP 1)信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制
进程结束时, 通知同session(shell进程)内的各个作业(子进程), 这时它们与控制终端不再关联。
登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台
进程组和后台进程组,一般都属于这个Session。当用户退出linux登录时,前台进程组和后台有
对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进程组和后台
有终端输出的进程就会中止。不过可以捕获这个信号,比如wget能捕获SIGHUP信号,并忽略它,
这样就算退出了linux登录,wget也能继续下载。此外,对于与终端脱离关系的守护进程,这个信号
用于通知它重新读取配置文件。
1>nohup(忽略SIGHUP):nohup a.out &
【注意】在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是
将命令放入到一个作业队列中了
2>setsid(不接收SIGHUP):setsdi a.out
3>subshell:(a.out &)此时a.out的父进程PID为1,所以其不属于终端会话,自然就不受SIGHUP影响
【注意】session是会话的意思,一个连接就可称为一个会话;终端一般指相于服务器连接的客户端,
终端通过会话建立连接后,才和服务器进行通讯,只要通信(telnet、ssh)就有会话。
4>disown(否认;否认与…有关系,断绝与…的关系):使用jobs查看后台进程,是后台进程直接使用disown
不是使用bg将进程转移到后台,再使用disown
jobs:查看后台进程,返回任务编号n和进程命令
bg(background) n:将任务编号为n的进程转移到后台运行
fg(foreground) n:将任务编号为n的进程转移到前台运行
ctrl+z:挂起当前任务
ctrl+c:结束当前任务
【注意】使用vim编辑器时ctrl+z、bg太有用了。
【注意】如果进程不断有信息输出到终端,好像不太好使,将输出重定向就可以了(难道就是因为有输出
与终端有联系了就不行?)
资源评论
keilchan
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于前端HTML+CSS+JS+Jquery+后端php+mysql实现仿照当当网的图书商城+源码(高分优秀项目)
- 基于jsp+mysql的JSP美食菜谱分享系统源码.zip
- python爬虫之DoubanSpider-master (1).zip
- 在校作业:数据清洗和数据可视化
- 基于jsp+mysql的JSP酒店预定管理系统源码.zip
- 基于jsp+mysql的JSP九宫格日记本源码.zip
- 三维点云处理算法c++源代码(含详细注释+sln解决方案)..zip
- 基于jsp+mysql的JSP会员卡积分管理系统源码.zip
- 基于jsp+mysql的JSP航班机票订票网站源码.zip
- 基于html+css+js开发的仿照携程租车模块编写的汽车租赁系统+源码+文档(高分优秀项目)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功