nohup命令和screen命令

当远程终端连接的程序需要长时间运行时,可能会因终端断开而中断。本文介绍了两种解决方案:使用nohup命令,即使终端关闭,程序也能继续运行,输出重定向至nohup.txt;另一种是使用screen命令,它允许在多个会话间切换,保持程序运行状态,并能查看输出结果。同时,还讲解了如何通过ps命令管理进程。

问题

我们用远程终端连接远程主机的时候,有的程序要执行长达几小时甚至几天。例如晚上10点半,我在远程终端上启动一个spark程序,有一些结果重定向到标准输出,这个程序要运行10小时。第二天早上一看,远程终端断开了,一看程序运行结果,只运行了3小时就中断了。

原因

通过远程终端启动的程序,当远程终端断开会话的时候,程序也会终止。

解决办法1:nohup

您可以执行如下命令

nohup [您本来要执行的命令] &

例如,我本来要执行,python test.py,现在改为执行:

nohup python test.py &

这样,我就可以关掉终端,程序会一直运行到结束(远程主机正常的情况下)。程序本来要重定向到标准输出的结果会重定向到当前目录的nohup.txt。

解决办法2:screen

nohup命令有个问题就是,你第二次打开终端的时候,你无法在终端看到程序的执行结果,无法看到重定向到标准输出的结果。解决办法是:用screen命令,这个命令可能需要安装,安装命令:

sudo apt install screen

安装完成之后,执行

screen

进入一个"screen"后,执行

python test.py

关闭终端,程序依然在运行
重新打开终端,执行

screen -r [screen信息]    # 可以输入 screen -r 查看有哪些进程,再确定后缀哪些信息

即可看到程序执行的情况,和直接执行[python test.py]看到的结果一样

进程命令ps

需要掌握一些进程命令:

ps -aus | grep python

上面的命令是查找并过滤"python"相关的进程,其他类似

kill 12345

上面的命令是杀死进程号为12345的进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值