xshell关闭后保持程序运行

本文介绍了在Linux系统中如何让程序在后台持续运行的三种方法:守护进程、nohup和screen。守护进程常用于服务器软件配置,个人软件使用nohup或screen更方便。nohup可以将程序输出重定向到nohup.out文件,screen则提供了一个交互式的多窗口管理工具。此外,还提到了如何通过shell脚本管理和停止由nohup启动的进程,并讨论了开机自启和进程管理的相关技巧。

目前我知道三种方法。

一.守护进程

守护进程的介绍,看阮一峰的文章,我放在参考链接。服务器上的软件的配置中,一般都有守护进程相关的配置,需要时去查你用的软件怎么配置就行。个人软件用守护进程,不如后两个方便。

二.nohup

nohup 你的命令 &,例如nohup python test.py &,若没权限加sudo

运行后出现提示nohup: ignoring input and appending output to `nohup.out',意思是程序的输出会保存在nohup.out,例如一些打印信息。

我是在test.py所在文件夹执行的nohup命令,所以生成的nohup.out和test.py在同一个文件夹,也就是当前目录,如果当前目录的nohup.out不可写,则写到$HOME/nohup.out。

如果需要指定nohup.out的路径,nohup 你的命令 > nohup.out的绝对路径 &,这只会重定向标准输出stdout,如果你还想重定向标准错误stderr,并且是到同一个nohup.out文件,下面两种写法都可以

nohup 你的命令 > nohup.out绝对路径 2>&1 &
nohup 你的命令 &> nohup.out绝对路径 &

重定向的介绍和其他用法看我另一篇文章中末尾的参考链接。

查看程序是否在运行,ps -ef | grep 你的关键词,例如ps -ef | grep py,输出结果中就有刚才运行的python文件名。

三.screen

需先安装才能使用,apt install screen或yum install screen,具体用法看参考链接。

四.补充

如果你想通过修改/etc/rc.d/rc.local,配合nohup实现开机自启Flask服务,发现生成的nohup.out中信息不全,没有Flask接口收到的请求的记录,也没有Flask的启动ip和端口信息,看我另一篇文章

使用nohup命令运行起来的代码,如果想停止运行,就需要先用ps -ef | grep 你的关键词 来查询进程id,再用kill命令结束这个进程。这个过程有些麻烦,可以写成shell脚本,nohup启动成功时将pid写入文件,kill命令结束进程时从文件读取进程id。命令的具体参数介绍看参考链接。

start_test.sh,赋予执行权限,在sh文件所在目录执行./start_test.sh就能运行python代码。

nohup python test.py & echo $! > test_pid.txt

stop_test.sh ,赋予执行权限,在sh文件所在目录执行./stop_test.sh就能结束刚才运行的python进程。

kill -9 `cat test_pid.txt`

参考链接:

Linux 守护进程的启动方法 - 阮一峰的网络日志 (ruanyifeng.com)

Systemd 入门教程:命令篇 - 阮一峰的网络日志 (ruanyifeng.com)

Systemd 入门教程:实战篇 - 阮一峰的网络日志 (ruanyifeng.com)

Xshell关闭后,如何保持程序在云服务器上的运行?__ZZKOOK

xshell退出保持后台服务运行的方法 - 北方卧龙 - 博客园

xshell 关闭后保持程序运行_夏华东的博客的博客-优快云博客_xshell关闭后保持程序运行

Screen会话命令 Linux - ywl925 - 博客园

保持程序在xshell关闭后继续运行 - 简书

nohup和&后台运行,进程查看及终止 - Mr_Yun - 博客园 (cnblogs.com)

Linux后台运行命令nohub输出pid到文件(转) - EasonJim - 博客园 (cnblogs.com)

使用nohup后台运行并获取pid_Wu_Menghao的博客-优快云博客_nohup pid

linux nohup 进程id_Linux 后台运行命令 nohup 输出 pid 到文件_冲出黑洞的光芒的博客-优快云博客

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值