黑色网站源码重庆seo推广
文章目录
- 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)
终端执行命令,输出结果集
[wdq@WDQCVM 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
[wdq@WDQCVM darren]$
nohup 运行程序
[wdq@WDQCVM darren]$ nohup python3 HelloWord.py
nohup: ignoring input and appending output to ‘nohup.out’
不在终端运行,nohup 运行,当程序结束时将日志输出到nohup.out,但不能满足后台运行
nohup且后台(&) 运行程序
[wdq@WDQCVM darren]$ nohup python3 HelloWord.py &
[1] 12877
[wdq@WDQCVM darren]$ nohup: ignoring input and appending output to ‘nohup.out’
这种场景是后台运行的,运行过程中不会自动刷新日志
当程序运行结束后输出日志
[wdq@WDQCVM 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 相加的和: 55
nohup 还可以将日志重定向到其他路径,也可以扔掉不要
nohup python3 HelloWord.py > FILE &
nohup python3 HelloWord.py > /dev/null &
属于系统自带的,不要重新安装,使用方法简单,使用简单但功能也是比较简单,不支持实时刷新日志信息。
screen介绍
安装screen
以下是在Centos7.9版本进行演示的
yum install screen
查看终端
[wdq@WDQCVM darren]$ screen -ls
No Sockets found in /var/run/screen/S-wdq.
[wdq@WDQCVM darren]$
新建终端
# 新建终端 screen -S 名称
[wdq@WDQCVM darren]$ screen -S hello
[wdq@WDQCVM darren]$ python3 HelloWord.py
Hello World 2
Hello World 3
退出终端
Ctrl+a+d
再次查看终端
[wdq@WDQCVM darren]$ screen -ls
There is a screen on:14369.hello (Detached) # 已分离
1 Socket in /var/run/screen/S-wdq.
[wdq@WDQCVM darren]$
进入终端
进入原来终端,刚才的东西原样存在
screen -r 进程号或者screen -r 名称均可
[wdq@WDQCVM darren]$ screen -r hello
[wdq@WDQCVM 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
[wdq@WDQCVM darren]$
退出窗口切不可ctrl+z,这种强制退出,会将程序也一同终止。
创建一样名字的会话
[wdq@WDQCVM darren]$ screen -S hello2
[wdq@WDQCVM darren]$ screen -ls
There are screens on:15795.hello2 (Detached)15672.hello2 (Detached)14369.hello (Detached)
3 Sockets in /var/run/screen/S-wdq.[wdq@WDQCVM 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.
[wdq@WDQCVM darren]$
这时候要填写完整名称进入会话
[wdq@WDQCVM darren]$ screen -d -r 15795.hello2
[wdq@WDQCVM 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
[wdq@WDQCVM darren]$ screen -ls
There are screens on:15795.hello2 (Attached)15672.hello2 (Detached)14369.hello (Detached)
3 Sockets in /var/run/screen/S-wdq.
[wdq@WDQCVM darren]$ screen -X -S 15795.hello2 quit
[screen is terminating]
[wdq@WDQCVM darren]$
[wdq@WDQCVM darren]$ screen -ls
There are screens on:15672.hello2 (Detached)14369.hello (Detached)
2 Sockets in /var/run/screen/S-wdq.
[wdq@WDQCVM darren]$
screen的快捷键居多,详细使用请查看进行使用
帮助命令
man --help
man screen
总结
要想善其事、必先利其器用到哪个工具后要先学会基本使用,然后去研究官方文档。然后就是必须在测试环境进行使用熟练了以后再在生产环境使用。有些时候要改掉一些习惯,比如我喜欢使用ctrl+z退出终端,那果断不可取。