云服务器 ECS Linux SSH 客户端断开后,如何保持进程继续运行配置
在云服务器 ECS Linux 系统中,通常我们在执行一些运行时间比较长的任务时,必须等待执行完毕才能断开 SSH 连接或关闭客户端软件,否则可能会导致执行中断。本文介绍几种保障程序在用户退出登录后持续运行的方法。
使用管理终端执行 通过 管理终端 会登录服务器的本地会话(console)口,在该终端执行的程序不会受到 SSH 登录用户退出的影响。具体操作方式如下:
通过 管理终端 登录服务器。
执行所需程序或脚本。
下次需要查看任务执行状态时,再次连接管理终端查看即可。
使用 nohup 执行 nohup 的作用顾名思义,它使得后面的命令不会响应挂断(SIGHUP)信号。也就是说,通过远程登录执行 nohup 后,即使退出登录后,程序还是会正常执行。通常情况下,nohup 命令最后会跟上 & 字符,表示将这个命令放至后台执行,这样才能真正做到将这个命令放至后台持续的执行。
操作示例: 1. 正常的执行命令为 bash hello.sh,执行结果为每秒输出一行的小程序:
在命令中也可以使用重定向将程序的输出改为自己想要的文件名,如 nohup bash hello.sh >hello.log &,则程序的输出就会写到 hello.log 文件中。
若程序不会自动退出,那么此时需要使用 kill 命令来结束进程。比如,可以使用命令 kill -TRM 来操作,其中 PID 即为之前 nohup 输出的值,在此例中该值为 1231。
使用限制:
nohup 通常用于执行无干预的自动化程序或脚本,无法完成带有交互的操作。
使用 screen 执行 安装 sceen 工具 Linux 系统默认未自带 screen 工具,需要先进行安装:
CentOS 系列系统: yum install screen Ubuntu 系列系统: sudo apt-get install screen
使用简介 1. 创建 screen 窗口
screen -S name
screen -S ftp
screen -ls
##列出 screen 进程列表 如下图
然后进行所需操作,比如运行脚本、执行程序等等。
如下图示例:创建ftp连接后台下载传输文件
前述 ftp 操作示例开始传输后,在窗口中键入Ctrl+a 键,再按下 d 键,就可以退出 SSH 登录,但不会影响 screen 程序的执行。
可以利用 screen 这种功能来管理的远程会话。操作步骤概述:
正常 SSH 登录服务器 创建 screen 窗口 执行所需任务 需要临时中断退出时,按 Ctrl +d 保存退出 需要继续工作时,再次 SSH 登录服务器,然后直接执行 screen -r -d 恢复会话即可。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。