网站建设时间 人力及成本估算,企业为什么要开发网址,个人网站可以做商业用途吗,建网站难吗文章目录 Screen终端管理工具背景nohup介绍screen介绍安装screen查看终端新建终端退出终端进入终端删除会话帮助命令 总结 Screen终端管理工具
背景
对大佬只有膜拜#xff0c;可能永远无法超越#xff0c;在工作交接中大佬用到了一个screen启动了程序#xff0c;这是什么… 文章目录 Screen终端管理工具背景nohup介绍screen介绍安装screen查看终端新建终端退出终端进入终端删除会话帮助命令 总结 Screen终端管理工具
背景
对大佬只有膜拜可能永远无法超越在工作交接中大佬用到了一个screen启动了程序这是什么我只知道这是中文屏幕的意思难不成还有个软件果不其然那就是个软件大佬给我演示了一波看了看神奇的效果但最后还是没有记住下面咱们一起研究研究希望在适合的场景中能用到它。 有些场景是我们正在运行程序但又不能让会话断掉那么这个怎么处理呢一般情况下是采用的后台运行 nohup 命令 运行这也是一种方法有没有其他的方式呢但有些场景是需要交互的对于这种场景来说nohup就没有那么好用了。 screen是linux下的一种视窗多重复用管理程序。在使用telnet或SSH远程登录linux时如果连接非正常中断重新连接时系统将开一个新的session无法恢复原来的session.screen命令可以解决这个问题。来自百度百科 nohup介绍
nohup 运行免受挂断影响的命令输出到非终端设备将显示的内容输出到nohup.out文件中。
以下面一段死循环的python代码为例
import timen 100
sum 0
counter 1
while counter n:
# while True:time.sleep(1)sum sum countercounter 1print(Hello World,counter)
print(1 到, n, 相加的和, sum)终端执行命令,输出结果集
[wdqWDQCVM darren]$ python3 HelloWord.py
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Hello World 6
Hello World 7
Hello World 8
Hello World 9
Hello World 10
Hello World 11
1 到 10 相加的和 55
[wdqWDQCVM darren]$ nohup 运行程序
[wdqWDQCVM darren]$ nohup python3 HelloWord.py
nohup: ignoring input and appending output to ‘nohup.out’不在终端运行nohup 运行当程序结束时将日志输出到nohup.out但不能满足后台运行 nohup且后台() 运行程序
[wdqWDQCVM darren]$ nohup python3 HelloWord.py
[1] 12877
[wdqWDQCVM darren]$ nohup: ignoring input and appending output to ‘nohup.out’这种场景是后台运行的运行过程中不会自动刷新日志 当程序运行结束后输出日志 [wdqWDQCVM darren]$ more nohup.out
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Hello World 6
Hello World 7
Hello World 8
Hello World 9
Hello World 10
Hello World 11
1 到 10 相加的和 55nohup 还可以将日志重定向到其他路径也可以扔掉不要
nohup python3 HelloWord.py FILE
nohup python3 HelloWord.py /dev/null 属于系统自带的不要重新安装使用方法简单使用简单但功能也是比较简单不支持实时刷新日志信息。
screen介绍
安装screen
以下是在Centos7.9版本进行演示的
yum install screen 查看终端
[wdqWDQCVM darren]$ screen -ls
No Sockets found in /var/run/screen/S-wdq.
[wdqWDQCVM darren]$ 新建终端
# 新建终端 screen -S 名称
[wdqWDQCVM darren]$ screen -S hello
[wdqWDQCVM darren]$ python3 HelloWord.py
Hello World 2
Hello World 3退出终端
Ctrlad再次查看终端
[wdqWDQCVM darren]$ screen -ls
There is a screen on:14369.hello (Detached) # 已分离
1 Socket in /var/run/screen/S-wdq.
[wdqWDQCVM darren]$ 进入终端
进入原来终端刚才的东西原样存在
screen -r 进程号或者screen -r 名称均可
[wdqWDQCVM darren]$ screen -r hello
[wdqWDQCVM darren]$ python3 HelloWord.py
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Hello World 6
Hello World 7
Hello World 8
Hello World 9
Hello World 10
Hello World 11
1 到 10 相加的和 55
[wdqWDQCVM darren]$ 退出窗口切不可ctrlz这种强制退出会将程序也一同终止。
创建一样名字的会话
[wdqWDQCVM darren]$ screen -S hello2
[wdqWDQCVM darren]$ screen -ls
There are screens on:15795.hello2 (Detached)15672.hello2 (Detached)14369.hello (Detached)
3 Sockets in /var/run/screen/S-wdq.[wdqWDQCVM darren]$ screen -d -r hello2
There are several suitable screens on:15795.hello2 (Detached)15672.hello2 (Detached)
Type screen [-d] -r [pid.]tty.host to resume one of them.
[wdqWDQCVM darren]$ 这时候要填写完整名称进入会话
[wdqWDQCVM darren]$ screen -d -r 15795.hello2
[wdqWDQCVM darren]$ 对比带-d和不带的区别
screen -r session_name
screen -d -r session_name如果只需要重新连接到已存在的会话而不需要分离当前会话screen -r session_name 如果需要分离当前会话并进入目标会话则可以使用 screen -d -r session_name
删除会话
删除会话screen -X -S session_name quit
[wdqWDQCVM darren]$ screen -ls
There are screens on:15795.hello2 (Attached)15672.hello2 (Detached)14369.hello (Detached)
3 Sockets in /var/run/screen/S-wdq.
[wdqWDQCVM darren]$ screen -X -S 15795.hello2 quit
[screen is terminating]
[wdqWDQCVM darren]$
[wdqWDQCVM darren]$ screen -ls
There are screens on:15672.hello2 (Detached)14369.hello (Detached)
2 Sockets in /var/run/screen/S-wdq.
[wdqWDQCVM darren]$ screen的快捷键居多详细使用请查看进行使用
帮助命令
man --help
man screen 总结
要想善其事、必先利其器用到哪个工具后要先学会基本使用然后去研究官方文档。然后就是必须在测试环境进行使用熟练了以后再在生产环境使用。有些时候要改掉一些习惯比如我喜欢使用ctrlz退出终端那果断不可取。