Linux终端退出后,后台运行程序

Linux进程后台运行

一般我们用终端连接linux服务器时,运行一个程序,退出终端后,程序就自动停止运行了。

无论进程是在后台还是在前台,它都与启动它的终端实例紧密绑定。当终端关闭时,它通常向绑定到终端的所有进程(前台、后台进程)发送SIGHUP信号。 这表示进程终止,因为它们的控制终端将很快不可用。

Linux进程组概念

在Linux/Unix中,有这样几个概念:
- 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
- 会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做*控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。

使用nohup

nohup <command> &

使用nohup命令后,原程序的的标准输出被自动改向到当前目录下的nohup.out文件。

使用screen

总结
利用screen运行后台服务

screen
do...
Ctrl-a d
exit

常用

Ctrl-a c 创建新shell
Ctrl-a a 返回上一个shell

建立单窗口,

screen vi hello.c

暂时离开(把当前会话暂时放到后台),

Ctrl-a d

查看后台会话

mo@mo-Aspire-E5-572G:~/桌面$ screen -ls
There are screens on:
    13039.pts-0.mo-Aspire-E5-572G   (20171201174816秒) (Detached)
    12922.pts-0.mo-Aspire-E5-572G   (20171201174345秒) (Detached)

重新进入会话

screen -r 13039.pts-0.mo-Aspire-E5-572G 
C-a ?   显示所有键绑定信息
C-a w   显示所有窗口列表
C-a a   切换到之前显示的窗口
C-a c   创建一个新的运行shell的窗口并切换到该窗口
C-a n   切换到下一个窗口
C-a p   切换到前一个窗口(与C-a n相对)
C-a 0..9    切换到窗口0..9
C-a a   发送 C-a到当前窗口
C-a d   暂时断开screen会话
C-a k   杀掉当前窗口
C-a [   进入拷贝/回滚模式

你可能感兴趣的:(Linux)