远程连接Linux,如何使程序断开连接后继续运

2025-04-06 17:28:34
推荐回答(1个)
回答1:

1. nohup 命令

nohup命令的功能就和它的名字一样,no hup,忽略hup信号,不挂断进程,进程仍然属于当前会话(终端关闭后,进程会变成孤儿进程,PPID变成1)。 
例如:(不加& 命令不会在后台执行)

[root@localhost ~]# nohup ping 127.0.0.1 &[1] 27641nohup: 忽略输入并把输出追加到"nohup.out"123

nohup会将ping命令的默认输出从屏幕重定向到当前目录的nohup.out文件,如果当前目录不可写,会重定向到 $HOME/nohup.out 。 
如果ping命令已经重定向输出了,就不会重定向到nohup.out了,例如nohup ping 127.0.0.1>/dev/null &

2. screen 命令

如果程序需要交互等复杂的操作,推荐使用功能强大的screen。screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。 
不是所有Linux都自带screen。查询安装包信息:rpm -qa|grep screen 
安装方法:

  • CentOS系统:yum install screen

  • Debian 系统:apt-get install screen

  • 用法:

  • 打开新的会话窗口:screen

  • 结束当前会话:exit

  • 在新会话中执行程序(程序关闭时会话自动结束):screen vi test.c

  • 打开新会话并起个名字:screen -S myname

  • 暂时离开会话(经常用):Ctrl+a 然后 d

  • 查看会话列表: screen -ls

  • 恢复之前离开的会话:screen -r 会话名或进程号

  • 清除dead状态的会话:screen -wipe

  • 启动一个开始就是Detached状态的会话:screen -dmS 名字 命令