nohup和screen的比较
在实际工作中,我们ssh等到远程的Linux上,运行一个程序,但是当我们关闭掉我们的连接终端断开ssh后,刚才运行着的程序也会自动被中断结束。
当ssh连接断开后,如何让我们的程序继续在后台运行呢?下面介绍我常使用的两个方法。
A、使用nohup让程序在后台继续运行
常用命令:
# nohup /scripts/test.sh > testlog.log & #如果没有自定义重定向输出信息,运行成功后默认会将标准输出重定向到当前目录的nohup.out文件中
当需要将nohup后台运行的程序调到前台时,先jobs命令查看后台job编号,用 fg %n命令可以调回到前台运行(n是job的编号)。例如:
[root@centos1152 ~]# nohup /root/cp11.sh > cp11.log & #回车后脚本开始后台执行
[1] 3485
[root@centos1152 ~]# jobs
[1]+ Running nohup /root/cp11.sh > cp11.log &
[root@centos1152 ~]# fg %1
nohup /root/cp11.sh > cp11.log #回到job 1会话中了
Last login: Sat Jun 9 23:07:03 2012 from 192.168.11.100
如果此时突然ssh断开了,那么再登陆到系统的时候,执行jobs就不会发现刚才的job的编号了。但是job脚本会继续执行,直到完成脚本的内容。
[root@centos1152 ~]# jobs #不会发现刚才的job的编号了
[root@centos1152 ~]#
另外:没有使用nohup的单独的&时可以让命令后台运行的,但是如果ssh会话断掉,&的命令也会自动退出。
例如:
[root@centos1152 ~]# /root/cp11.sh > cp11.log & #如果ssh会话突然断开的话,这个脚本就中断执行。
B、screen让程序后台执行——一个强大的工具
简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。在screen中创建一个新的窗口有这样几种方式:
1.直接在命令行键入screen命令
[root@centos1152 ~]# screen
Screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一窗口,该screen会话退出,
否则screen自动切换到前一个窗口。
2.Screen命令后跟你要执行的程序。
[root@centos1152 ~]# screen vi test.c
Screen创建一个执行vi test.c的单窗口会话,退出vi将退出该窗口/会话。
3.以上两种方式都创建新的screen会话。我们还可以在一个已有screen会话中创建新的窗口。在当前screen窗口中键入Ctrl+a+c,即Ctrl键+a键,之后再按下c键,screen 在该会话内生
成一个新的窗口并切换到该窗口。给screen发送命令使用了特殊的键组合Ctrl+a。这是因为我们在键盘上键入的信息是直接发送给当前screen窗口,必须用其他方式向screen窗口管理器发出命令,默认情况下,screen接收以Ctrl+a开始的命令。这种命令形式在screen中叫做键绑定(key binding),Ctrl-a叫做命令字符(command character)。
可以通过Ctrl+a+?来查看所有的键绑定,我常用的键绑定有:
Ctrl+a+? 显示所有键绑定信息
Ctrl+a+d 暂时断开screen会话
Ctrl+a+k 杀掉当前窗口
Ctrl+a+w 显示所有窗口列表
我的通常的真实使用场景如下:
ssh登录我的Linux服务器,
[root@centos1152 ~]# screen #进入screen窗口
[root@centos1152 ~]# ./cp11.sh #运行一个shell脚本,然后按键Ctrl+a+d(先按Ctrl+a 再按d键)暂时断开screen会话;然后干别的事情(散步)去了(可能ssh连接已经被断开)。
过一会儿,回来重新登录ssh,然后:
[root@centos1152 ~]# screen -ls #显示所有的 screen sessions (Ctrl-a d后的session为detached状态)
[root@centos1152 ~]# screen -ls
There are screens on:
4102.pts-3.centos1152 (Detached)
[root@centos1152 ~]# screen -r 4102 #找到我想要 screen session也就是4102恢复回来 (捡回来)
另外: screen功能很强大的,我通常也就使用了上面的基本功能。更多的,请看参考资料或者man screen。
总结:
1、使用nohup command & 方式时,如果ssh突然断开了,那么再登陆到系统的时候,执行jobs就不会发现刚才的job的编号了。但是command会继续执行,直到完成脚本的内容。
2、使用screen方式执行脚本,然后按键Ctrl+a+d暂时断开后,即使ssh会话断了,使用screen -r也是能恢复到之前的会话中的。当然脚本内容也会直到执行完成。
(资源库 www.zyku.net)
原文链接:https://blog.csdn.net/jadesuper6/article/details/8094181
上一篇:shell中&&和||的用法
栏 目:Linux
下一篇:返回列表
本文标题:nohup和screen的比较
本文地址:https://www.zyku.net/linux/12101.html
您可能感兴趣的文章
- 07-05Linux screen命令
- 03-19真我gtneo开启入眠胶囊教程
- 02-11opporeno5关闭负一屏教程
- 07-26asp.net使用ashx生成图形验证码的方法
- 04-18魅族18pro指纹解锁开启教程
- 12-08vivox21a恢复出厂设置在哪
- 01-26华为mate40关闭app启动广告方法
- 06-18帝国CMS7.5版验证码功能升级,更有效防
- 03-18荣耀50se恢复出厂设置方法
- 02-17帝国CMS-访问统计插件下载
- 01-11小猪少儿英语-小猪少儿英语应用软件功
- 03-02airpods配对第二个手机方法
- 12-09苹果13放大布局在哪里设置
- 12-25车辆年检查询-车辆年检查询应用软件功
- 01-24小米手机关闭微信自启动方法
- 12-24帝国CMS编辑器上传图片取消宽高的方法
- 03-21oppofindx3pro取消锁屏杂志教程
- 04-01vivos9截屏快捷键设置教程
- 02-22DedeCMS调用软件下载排行的方法
- 03-02iPone12敲击两下手机截屏操作方法

阅读排行
猜你喜欢
- 01-09文字转语音朗读助手-文字转语音朗读助
- 09-05火车头采集器V9版同义词替换功能介绍
- 12-26一诺德-一诺德应用软件功能介绍
- 09-14小米手机怎么开启智能充电保护
- 07-15帝国CMS百度编辑器ueditor代码高亮效
- 09-19企业微信如何拨打电话
- 01-07vivos12高清通话在哪关闭
- 02-10小米11截长屏设置教程
- 03-14miui13系统开启控制中心方法
- 10-31yeetalk怎么发动态