程序在Linux后台运行方法 (关掉终端继续让程序运行的方法)

本文介绍了在Linux环境中如何让程序在后台持续运行,即使关闭终端也不会中断。包括使用&符号启动后台进程,利用jobs和kill进行管理,以及通过nohup命令确保程序在终端关闭后继续执行。同时提到了nohup.out文件的生成及其输出重定向的处理方法。

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

问题描述:在Linux服务器上开发的程序,远程连接中断执行这个程序,但是终端关闭后这个运行的程序会作为终端窗口的子进程自动关闭。 我要让程序在终端的后台运行,关闭终端后程序仍然可以继续运行。

(1)使程序在后台运行方法

一般情况下,我们在命令后面加上&即可(如下面的语句会在后台执行可执行文件TCPServerFinal)

./TCPServerFinal &

关闭后台程序方法:使用jobs 命令列出正在运行的进程,使用kill命令结束进程(PID是用jobs命令查询出的进程号)。

jobs -l
kill PID

(2)已经运行的程序放到后台继续运行

ctrl+z 挂起任务

输入bg 命令将挂起的任务放到后台继续执行。

 

(3)使程序在后台执行,而且终端窗口关闭后不会作为子进程被中断:加上 nohup 命令

nohup ./TCPServerFinal & 

这样关闭终端后程序仍然在继续运行。

如何关闭这个在后台运行的进程:使用 ps -A 命令查询这个进程的PID进程号,再用kill命令终止进程。

需要注意的是:nohup命令会将程序的输出定向到当前目录的 nohup.out 文件中,我的程序输出较多,所以产生了一个特别的的nohup.out 文件。    解决方法:将标准输出定向到垃圾桶,具体操作如下:

命令语法: nohup xxxx >/dev/null 2>&1& 
比如: nohup ./TCPServerFinal  >/dev/null 2>&1&
命令解释:后台运行 TCPServerFinal  程序,将标准错误输出合并到标准输出,然后标准输出重定向至 垃圾桶 /dev/null

(无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。)

更多相关方法参考:使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值