转-Linux进程后台运行的几种方法
http://linux.ctocio.com.cn/179/12162679.shtml 我们经常会碰到这样的问题,用telnet/ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络的不稳定导致任务中途失败。 如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢? 下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。 nohup/setsid/& 场景:如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?hangup 名称的来由在 Unix 的早期版本中,每个终端都会通过modem和系统通讯。当用户logout 时,modem 就会挂断(hang up)电话。同理,当modem 断开连接时,就会给终端发送hangup 信号来通知其关闭所有子进程。 解决方法:我们知道,当用户注销(logout)或者网络断开时,终端会收到HUP(hangup)信号从而关闭其所有子进程。 因此,我们的解决办法就有两种途径:要么让进程忽略HUP信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。 1. nohup nohup 无疑是我们首先想到的办法。 顾名思义,nohup 的用途就是让提交的命令忽略hangup信号。 让我们先来看一下nohup的帮助信息:NOHUP(1) User Commands NOHUP(1