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

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

时间:2023-06-06 17:34:42浏览次数:45  
标签:命令 tmux 会话 SSH kill nohup Linux 进程 客户端

使用场景

在Linux系统中,在执行一些运行时间比较长的任务时,必须等待执行完毕才能断开SSH连接或关闭客户端软件,否则可能会导致执行中断。本文介绍两种保障程序在您退出登录后持续运行的方法。

方法1:使用nohup命令

1.命令格式

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

nohup python hello.py > nohup.out &

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

2.程序监控

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

tail -f nohup.out

3.查看PID

使用ps命令查找该进程的进程ID(PID)。例如,执行以下命令可以查看所有运行中的Python进程:

ps -ef | grep python

4.结束进程

结束进程使用kill命令,其语法格式如下:

kill [signal] PID

其中,signal表示要发送的信号类型,PID表示要结束的进程ID。

常用的信号类型包括:

  • 15(SIGTERM):默认信号,表示终止进程。
  • 9(SIGKILL):强制终止进程,不能被进程忽略或捕获。

我们通常使用以下命令即可:

kill -9 PID

5.缺点

使用nohup命令的一个缺点就是不方便进行程序监控,只能通过写入到文件中的方式来”曲线救国“,但是这种方式可能导致写入的文件非常大,占据大量磁盘资源。

方法2:使用tmux终端复用工具

tmux是一个终端复用工具,它允许用户创建和管理多个会话(session),每个会话可以包含多个窗口(window),每个窗口又可以分成多个面板(pane)。使用tmux可以在同一个终端窗口中同时运行多个命令或程序,并且可以方便地切换、分离、合并会话等操作。

在第一次使用时需要安装,sudo apt install tmux

1.命令格式

tmux new -s [会话名]	#创建会话
python main.py 		  #执行一个程序或命令
tmux detach           #退出会话
tmux ls               #查看所有会话
tmux a -t [会话名]     #重新进入会话
tmux kill-session -t [会话名] #删除指定会话
tmux kill-server      #删除所有会话

2.在运行程序时如何退出tmux会话

要退出tmux会话,可以按下快捷键Ctrl-b,然后输入:来进入命令模式。在命令模式下,键入kill-session或简写为kill,这将关闭当前tmux会话并停止所有正在运行的程序。

如果我们想保留会话但暂时退出tmux,则可以按下快捷键Ctrl-b,然后按下d,这将使我们返回到终端并将tmux会话留在后台运行。

标签:命令,tmux,会话,SSH,kill,nohup,Linux,进程,客户端
From: https://www.cnblogs.com/xiaotong-sun/p/17461218.html

相关文章

  • linux sed文本内容
    目录一、sed命令二、sed操作符三、sed打印四、sed删除五、sed替换六、sed添加 七、实验演示1.提取版本号2.查看指定时间日志               一、sed命令-e执行多个命令-f使用指定脚本在处理输入文件-h显示帮助......
  • Linux 查看系统版本和内核版本
    内核版本:$cat/proc/version系统版本:$rpm-qcentos-release参考资料:查看linux系统版本命令javascript:void(0)......
  • Linux sed 命令的使用方法
    1、linuxsed命令详解2、sed命令http://man.linuxde.net/sed3、Sedandawk笔记之sed篇:基础命令http://kodango.com/sed-and-awk-notes-part-3sed-i"s/zk.addr=.*/zk.addr=$ZOOKEEPER_IP/g"$adapter_conf表示被替换的内容zk.addr=.*表示替换后的内容zk.addr=$ZOOKEEPER_......
  • Linux 创建用户、赋予用户权限、修改文件夹权限、修改只读文件
    创建用户#useraddwork设置用户密码#passwdwork赋予用户权限方法一:修改/etc/sudoers文件,找到下面一行,把前面的注释(#)去掉##Allowspeopleingroupwheeltorunallcommands%wheelALL=(ALL)ALL然后修改用户,使其属于root组(wheel),命令如下:#usermod-grootwork......
  • Linux 的 nohup 命令的用法
    nohup/root/test.php&1、使用nohup让程序在远程主机后台运行http://www.williamlong.info/archives/482.html......
  • linux基本命令
    一。基本命令行输入首字符可以按tab补全名字ls-查看当前文件夹所有文件ls-ll竖向展示ls-al显示所有文件(包含隐藏文件)mkdir新建文件夹touch创建文件rmdir移除文件夹,要求文件夹非空。如果非空可以跟递归创建一样用-p+递归路径或者可以rm-rf强制删除cpAB拷贝,把A文件拷......
  • KingbaseES V8R6集群运维系列 -- 修改ssh通信为 sys_securecmdd 通信
    一、适用于:本文档使用于KingbaseESV008R006版本。二、关于SYS_SECURECMDD:sys_securecmdd是KingbaseES集群自带的工具,集群监控、管理集群时通过sys_securecmdd安全执行命令而不使用ssh服务。sys_securecmdd主要包含以下文件:服务端sys_securecmdd默认监听8890端口,接受客......
  • [linux]记录一次C语言综合练习
    题目根据特定功能设计程序,要求由main.c,Fun1.c-Fun3.c选择其中任意两个,共三个C语言文件和1个头文件组成,其中fun1.c,fun2.c和fun3.c都使用了define.h中的声明,C语言文件的功能分别是:fun1.c:输出9*9口诀fun2.c:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?......
  • linux 查看防火墙相关命令
    1.查看防火墙状态systemctlstatusfirewalld2.启动防火墙systemctlstart/restartfirewalld3.停止防火墙 临时停用,重启后失效systemctlstopfirewalld4.永久停止防火墙systemctldisablefirewalld5.开机启动systemctlenablefirewalld6.查看防火请端口......
  • linux下使用mount挂着网络磁盘
    在linux下挂载windows系统的网络共享磁盘:mount-tsmbfs-ousername=longyufei,password=123456//192.168.0.80/E$/mnt/samba 删除挂载点!umount/mnt/samba/ 在linux下挂载linux的Smaba服务磁盘:mount-tsmbfs-ousername=lyf,password=123456//192.168.0.80/lyf/www/......