通常ssh 运行以后,bash等都是他的子程序,一旦ssh关闭,控制进程收到SIGHUP信号退出,系统将所有相关进程杀掉!! 导致一旦ssh关闭,执行中的任务就取消了
解决方法:
1.nohup命令
nohup command(命令) &
此后,如果你断开了ssh,程序依旧运行。此种方式的缺点是,应用程序没有交互界面了,程序的输出将会输出的一个xxx.out文件中,而且以后无法在界面控制程序的结束。必须通过kill的方式。所以这种方式显得很简单粗鲁,很少使用。
2.screen命令
如何安装 screen 命令. 大部分 linux 系统都默认安装了 screen 命令,先查看下否则有这个工具。. 如果运行 screen 后提示 command not found,那么说明这个工具还没有安装。. CentOS 系统执行以下命令安装:. yum install screen. Debian/Ubuntu 系统执行以下命令安装: apt-get install screen.
运行screen
[odoo14@localhost odoo_14]$ screen
回车后进入Screen子界面,此时putty标题栏会指示处于子界面状态,然后运行你的程序,然后按下Ctrl+A后抬起,然后按下d键,此时切换回主界面,Putty的窗口标题栏也会指示,此时就是断开ssh,程序仍在运行。
查看所有子界面:35470是字界面的pid
[odoo14@localhost odoo_14]$ screen -ls
There is a screen on:
354740.pts-0.localhost (Detached)
切换screen子界面
[odoo14@localhost odoo_14]$ screen -r 354740
结束子界面
screen -X -S 35470 quit