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

在Linux中,当终端关闭时,程序通常会因SIGHUP信号而停止。要实现后台运行,可以使用nohup命令,使得程序输出重定向到nohup.out文件。另一种方法是使用screen工具,它允许在多个会话间切换,便于管理和恢复后台任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux进程后台运行

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

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

Linux进程组概念

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

使用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 [   进入拷贝/回滚模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值