Xshell断开连接后仍保持服务器程序执行的方法(nohup,tmux)

 

一、tmux

tmux比nohup方便,建议使用tmux。

先安装tmux:sudo apt-get install tmux

然后用命令:tmux new -s session_name  新开一个会话

在会话里启动进程后,回到原本界面的方法: 先按下ctrl+b,然后再单独按d

此时会话里的进程仍然在运行

重新回到会话里查看进程的方法:tmux a -t session_name 

查看会话中历史记录:先按ctrl+b,然后按Page Up ,Page Down

可以同时新建多个会话s1,s2,s3

在会话间切换的命令: 先按ctrl+b ,再按s,然后就可以在会话间选择其中一个,按enter进入。

 

即使关闭xhsell,会话也仍然存在,如果里面有进程,会持续运行。

除非进入会话中把进程关闭掉。

 

关闭会话的方法: tmux kill -session -t session_name

 

二、nohup

(参考https://blog.csdn.net/limiaoiao/article/details/81948401,实现Xshell断开连接情况下Linux命令继续执行)

1、将原命令语句改为:nohup 命令语句 &

2、回车执行,再回车,窗口中会显示一个进程号

3、如果中途想关闭,可执行:kill -9 进程号。如果想查看命令执行情况,可执行:cat nohup.out

效果如下:

程序的对应进程已经在后台运行,且运行输出都记录在文件nohup.out中,我们随时可以用语句cat nohup.out查看进程运行情况:

Xshell断开连接后仍保持服务器程序执行的方法(nohup,tmux)_第1张图片

关闭xshell,再打开,用语句watch -n 1 nvidia-smi 查看显卡使用情况:

Xshell断开连接后仍保持服务器程序执行的方法(nohup,tmux)_第2张图片

可见我们的进程31764仍在运行。

注意nohup.out文件保存在项目文件目录下,因此重新连接后要重新回到项目目录下才能用cat nohup.out 查看程序运行情况。

————————————

一开始我是用nohup的,但nohup还是太麻烦,后来我又改用tmux了:

 

你可能感兴趣的:(Xshell断开连接后仍保持服务器程序执行的方法(nohup,tmux))