最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

linux进程后端运行脱离终端

来源:动视网 责编:小OO 时间:2024-12-27 15:49:38
文档

linux进程后端运行脱离终端

们经常会碰到这样的问题,用telnet/ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子,您可以针对不同的场景选择不同的方式来处理这个问题。nohup/setsid/&。场景。如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢。hangup名称的来由。在Unix的早期版本中,每个终端都会通过modem和系统通讯。当用户logout时,modem就会挂断(hangup)电话。同理,当modem断开连接时,就会给终端发送hangup信号来通知其关闭所有子进程。解决方法。
推荐度:
导读们经常会碰到这样的问题,用telnet/ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子,您可以针对不同的场景选择不同的方式来处理这个问题。nohup/setsid/&。场景。如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢。hangup名称的来由。在Unix的早期版本中,每个终端都会通过modem和系统通讯。当用户logout时,modem就会挂断(hangup)电话。同理,当modem断开连接时,就会给终端发送hangup信号来通知其关闭所有子进程。解决方法。


系统大全为您提供
们经常会碰到这样的问题,用telnet/ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子,您可以针对不同的场景选择不同的方式来处理这个问题。
nohup/setsid/&
场景:
如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?
hangup名称的来由
在Unix的早期版本中,每个终端都会通过modem和系统通讯。当用户logout时,modem就会挂断(hangup)电话。同理,当modem断开连接时,就会给终端发送hangup信号来通知其关闭所有子进程。
解决方法:
我们知道,当用户注销(logout)或者网络断开时,终端会收到HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略HUP信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。
1.nohup
nohup无疑是我们首先想到的办法。顾名思义,nohup的用途就是让提交的命令忽略hangup信号。让我们先来看一下nohup的帮助信息:
NOHUP(1)UserCommandsNOHUP(1)NAMEnohup-runacommandimmunetohangups,withoutputtoanon-ttySYnopSISnohupCOMMAND[ARG]...nohupOPTIONDESCRIPTIONRunCOMMAND,ignoringhangupsignals.--helpdisplaythishelpandexit--versionoutputversioninformationandexit
可见,nohup的使用是十分方便的,只需在要处理的命令前加上nohup即可,标准输出和标准错误缺省会被重定向到nohup.out文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename2>&1"来更改缺省的重定向文件名。
nohup示例
[root@pvcent107~]#nohupping& 
[1]3059nohup:appendingoutputto`nohup.out' 
[root@pvcent107~]#ps-ef|grep3059root3059984021:06pts/300:00:00pingroot3067984021:06pts/300:00:00grep3059 
[root@pvcent107~]#
2。setsid
nohup无疑能通过忽略HUP信号来使我们的进程避免中途被中断,但如果我们换个角度思考,如果我们的进程不属于接受HUP信号的终端的子进程,那么自然也就不会受到HUP信号的影响了。setsid就能帮助我们做到这一点。让我们先来看一下setsid的帮助信息:
SETSID(8)LinuxProgrammer’sManualSETSID(8)NAMEsetsid-runaprograminanewsessionSYnopSISsetsidprogram[arg...]DESCRIPTIONsetsidrunsaprograminanewsession.
可见setsid的使用也是非常方便的,也只需在要处理的命令前加上setsid即可。
setsid示例
[root@pvcent107~]#setsidping 
[root@pvcent107~]#ps-ef|greproot310941007:28?00:00:00pingroot3110229217007:29pts/400:00:00grep 
[root@pvcent107~]#
值得注意的是,上例中我们的进程ID(PID)为31094,而它的父ID(PPID)为1(即为init进程ID),并不是当前终端的进程ID。请将此例与nohup例中的父ID做比较。
3。&
这里还有一个关于subshell的小技巧。我们知道,将一个或多个命名包含在“()”中就能让这些命令在子shell中运行中,从而扩展出很多有趣的功能,我们现在要讨论的就是其中之一。
当我们将"&"也放入“()”内之后,我们就会发现所提交的作业并不在作业列表中,也就是说,是无法通过jobs来查看的。让我们来看看为什么这样就能躲过HUP信号的影响吧。
subshell示例
 [root@pvcent107~]#(ping&)1014:13pts/400:00:00pingroot1627815362014:13pts/400:00:00grep[root@pvcent107~]#
从上例中可以看出,新提交的进程的父ID(PPID)为1(init进程的PID),并不是当前终端的进
以上就是系统大全给大家介绍的如何使的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击系统大全官网吧。
 
本文来自系统大全http:///如需转载请注明!推荐:win7纯净版

文档

linux进程后端运行脱离终端

们经常会碰到这样的问题,用telnet/ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子,您可以针对不同的场景选择不同的方式来处理这个问题。nohup/setsid/&。场景。如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢。hangup名称的来由。在Unix的早期版本中,每个终端都会通过modem和系统通讯。当用户logout时,modem就会挂断(hangup)电话。同理,当modem断开连接时,就会给终端发送hangup信号来通知其关闭所有子进程。解决方法。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top