Linux系统下如何保持进程在SSH客户端断开后仍继续运行,如何将屏幕上的信息保存到特定的txt文件中。nohup命令,好用

Linux系统下如何保持进程在SSH客户端断开后仍继续运行?

使用场景

在Linux系统中,在执行一些运行时间比较长的任务时,必须等待执行完毕才能断开SSH连接或关闭客户端软件,否则可能会导致执行中断。本文介绍nohup命令,AutoDL平台无法安装tmux,但是可以使用nohup命令,简单好用,可以指定文件保存日志。

使用nohup执行命令

nohup,可以使运行的命令忽略SIGHUP信号。因此,即使退出登录,程序仍旧会继续执行。通常情况下,在nohup命令尾部加上&字符,才能将命令放至后台执行。具体示例如下所示。

说明

nohup通常用于执行无干预的自动化程序或脚本,无法完成带有交互的操作。

  1. 原bash 命令

    bash hello.sh
  2. 使用nohup执行bash命令。

    在命令头尾分别加上nohup和&,可以看到nohup输出了一行信息,再Enter键就跳回了Shell命令行,此时命令已经在后台执行了,nohup将命令的输出重定向至当前目录的nohup.out文件中。同时,nohup会将对应程序的PID输出,PID可用于需要中断进程时结束进程。

    nohup bash hello.sh &

    说明

    在命令中也可以使用重定向将程序的输出改为自己想要的文件名,如下所示,则程序的输出就会写到hello.log文件中。

    nohup bash hello.sh >hello.log &

    系统显示类似如下。

  3. 执行如下命令,可以持续的查看nohup.out的输出,达到监控程序的效果。

    tail -f hello.log
  4. 退出tail命令:          ctrl+z或者ctrl+c
  5. 执行如下命令,结束进程。

    kill -TRM [$PID]

    说明

    [$PID]为之前nohup命令输出的值。

  6. 上面5的命令我用的不太好用,介绍别的杀死程序方法。
    方法1:
    如果没有退出客户端界面,可以先通过 “jobs” 命令查看程序是否在运行,此时只有序号没有PID号;
    输入命令 “jobs -l” 会显示程序的PID号,然后通过 “kill -9 PID”杀死程序;
    输入命令 “jobs” 查看程序是否被杀死。
    方法2:
    如果退出过客户端界面,输入 “jobs” 命令查不到正在运行的程序;
    输入 “ps ux” 来查看所有程序的进程号PID,然后再通过 “kill -9 PID” 杀死程序;
    输入 “ps ux” 来查看程序是否被杀死。

    原文链接:https://blog.csdn.net/qq_38835492/article/details/80554774

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值