- 浏览: 259203 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
zoukaiwolai:
...
Java 16进制字符串与2进制字符串相互转换 -
sooxin:
j2ee的事务对连接有自己的管理机制,包括建立和关闭。没进j2 ...
c3p0 spring 包没进事务管理,连接池就不能释放 -
sooxin:
mina 采用一种NIO通信,底层的连接机制没有具体研究过,但 ...
转 Mina框架在项目中的使用 -
tywo45:
写得很好,希望博主把格式调一下!
Tomcat性能参数设置介绍 -
freecode:
采用了cp30,项目中出现很多未关闭的连接,一直在找原因.
c3p0 spring 包没进事务管理,连接池就不能释放
元凶:SIGHUP 信号
让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。
在Linux/Unix中,有这样几个概念:
进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。
根据POSIX.1定义:
挂断信号(SIGHUP)默认的动作是终止程序。
当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。
如果会话期首进程终止,则该信号发送到该会话期前台进程组。
一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。
因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。
今天发现了一个“宝贝”,就是Linux的screen命令,对于远程登录来说,不仅提供了类似于nohup的功能,而且提供了我非常喜欢的“多个桌面”的功能。
平常开一个putty远程登录,经常需要在两个程序之间来回切换,怎么办?ctrl-z和fg、bg?这些太麻烦了。其实我们可以借助screen命令来实现轻松便捷的切换。
我主要是参考了下面的两篇文章(附在结尾),我自己总结的方法是:
“首先用screen [-S]命令建立一个session,然后就可以在这个session中建立多个window了。使用screen [-S]可以建立多个session,而每个session又可以建立多个window。在不同的window之间可以用Ctrl-A n/p等命令来切换。而想要在多个session之间切换,则需要你Ctrl-A d回到登录session(就像一棵大树的根),然后再通过screen -ls查看有哪些session,然后使用screen -r来决定恢复到哪个session。对于已经Attached Session则不能直接screen -r,需要先screen -d,然后才能screen -r”
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
【转载1】
系统管理员经常需要远程登录服务器
然后在服务器上跑一些程序
有个时候
得跑很长时间(超过12小时)
这是如果程序没结束就退出远程管理终端
远程跑的程序很有可能就此当掉
以前常用的解决方式是用命令nohup
但是nohup也有很多的问题
当有了screen
这一切便都迎刃而解了
敲入命令screen
会创建一个跑着shell的单一窗口
在这里面
你可以跑你所需要的程序
然后Ctrl+a d退出刚创建的窗口(回到进入screen前的环境)
然后再敲入命令screen创建新的终端窗口
就这样
你可以建立多个有shell的窗口(这些窗口里都可以跑你自己的应用)
这样就是你退出远程管理窗口(进入screen的环境)
你的screen窗间的窗口都不会关闭
里面跑得应用自然也不会当掉
用screen -ls可以看所有的screen sessions
用screen -r sessionid可以进sessionid指定的特定的screen session
最后screen session不再使用的时候
screen -r sessionid进去
exit退出即可
Unix/Linux 工具: Screen 命令使用
screen使用
使用screen非常简易.只需在SHELL键入screen,便可打开一个screen session。
而在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
现在让我来简单介绍基本的命令
C-a c -> Create,开启新的 window
C-a n -> Next,切换到下个 window
C-a p -> Previous,前一个 window
more..
less.. C-a C-a -> Other,在两个 window 间切换
C-a w -> Windows,列出已开启的 windows 有那些
C-a 0 -> 切换到第 0 个 window
C-a 1..9 -> 切换到第 1..9 个window
C-a a -> 发出 C-a,在 emacs, ve, bash, tcsh 下可移到行首
C-a t -> Time,显示当前时间,和系统的 load
C-a K(大写) -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、
复制就像用使用 vi 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上
C-a ? -> Help,显示简单说明
C-a d -> detach,将目前的 screen session (可能含有多个 windows)
丢到后台执行 当按了 C-a d 把 screen session detach 掉后,会回到还没进 screen 时的状态,此时在 screen session 里每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
下次 login 进来时:
screen -ls -> 显示所有的 screen sessions
screen -r [keyword] -> 选择一个screen session 恢复对话
若 screen -ls 里有 Attached sessions:
screen -d [keyword] -> 强制 detach,以便「接手」过来
实例
说明看了那么多,让我们用一个实际例子来结束我们今天的学习。
在我们开启一个screen后,然后使用joe编辑一个文件,之后因为临时需要离开这时就可以运行Ctrl+a d,显示如下:
[becks@ec-base becks]$ screen
[detached]
这个时候当我们运行ps -e 可以看到pts/2这个我刚刚运行的screen正在运行joe
6264 pts/2 00:00:00 bash
6354 pts/2 00:00:00 joe
而当我们回来后想恢复这个session,只需要键入screen -r,而当你有多个session时候,系统将提示你选择一个,如下:
[becks@ec-base becks]$ screen -r
There are several suitable screens on:
6263.pts-1.ec-base (Detached)
6382.pts-1.ec-base (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
输入该session的pid进行恢复
[becks@becks becks]$ screen -r 6263
想退出screen的session,和退出shell一样,只需要键入exit命令,成功退出后将有以下提示
[screen is terminating]
【转载2】
linux screen 命令详解
功能说明:
使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的session.screen命令可以解决这个问题。Screen工具是一个终端多路转接器,在本质上,这意味着你能够使用一个单一的终端窗口运行多终端的应用。
语 法:
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
补充说明:
screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式的终端机时,才有可能用到screen程序。
参 数:
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
常用screen参数:
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
C-a ? -> Help,显示简单说明
C-a c -> Create,开启新的 window
C-a n -> Next,切换到下个 window
C-a p -> Previous,前一个 window
C-a 0..9 -> 切换到第 0..9 个window
Ctrl+a [Space] -> 由視窗0循序換到視窗9
C-a C-a -> 在两个最近使用的 window 间切换
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里 每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令則可回去。
C-a w -> Windows,列出已开启的 windows 有那些
C-a t -> Time,显示当前时间,和系统的 load
C-a K -> kill window,强行关闭当前的 window
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/6_system/linux/Linuxjs/20090307/158951.html
发表评论
-
Mysql 查看最大连接数
2021-02-02 18:56 2504查看最大连接数 show variables like '%m ... -
linux 磁盘空间命令
2020-03-06 23:39 325查看硬盘空间 df -h 查看当前目录下文件夹大小 du - ... -
小学语文课堂教学三维目标的制定和落实-广安齐祥娥
2019-07-06 11:31 15教学目标是教学过程中重要的一部分,它是教学的出发点 也是教学 ... -
mysql5.7 初始化密码以及远程连接
2018-08-03 11:46 14311.查看初始密码 grep 'temporary pas ... -
解决mysql执行SQL文件,报错:”Got a packet bigger than 'max_allowed_packet' bytes“
2018-07-31 10:45 482场景: 本地执行SQL文件,每次执行到附件表时mysql就 ... -
在linux中用rpm安装mysql5.5
2018-07-31 10:44 648一 检查本地是否安装过其他版本的mysql [root ... -
linux服务器修改ssh默认22端口方法
2018-07-09 23:01 1362vim /etc/ssh/sshd_config Por ... -
tomcat6 ssl 配置
2018-06-06 14:56 464server.xml <Executor name ... -
tomcat 性能优化
2017-09-30 22:10 4641.linux修改TOMCAT_HOME/bin/catali ... -
CentOS 7.0关闭默认防火墙启用iptables防火墙
2017-08-10 12:05 469操作系统环境:CentOS Linux release 7. ... -
TOMCAT6 配置https
2017-05-02 15:35 567SSL协议使用不对称加密技术实现双方之间信息的安全传递。可以 ... -
Centos7中的防火墙调整为firewalld,试一下systemctl stop firewalld关闭防火墙。
2017-01-11 15:46 844Centos7中的防火墙调整为firewalld,试一下s ... -
centos7下使用yum安装mysql
2016-07-29 16:29 439标签: CentOS7的yum源中默认好像是没有mysql ... -
解决SSH连接超时的2个配置方法
2016-07-29 16:28 4821连自己的VPS经常会断开,时间久了感觉挺讨厌,以下是两 ... -
linux mysql 自动备份
2014-06-02 20:59 545linux mysql 自动备份 backmysql.sh ... -
Communications link failure due to underlying exception:
2014-04-24 12:30 696需要修改my.cnf(或者my.ini)文件,在[mysqld ... -
linux 计划任务
2014-04-18 13:23 466/etc/rc.d/init.d/crond restart -
linux中如何改IP
2014-03-17 12:55 699修改IP永久生效按以下方法 vi /etc/sysconfig ... -
修改/etc/hosts后,重起什么服务生效?
2014-03-01 11:36 1111修改/etc/hosts后,重起什么服务生效? 好像不是修改 ... -
linux yum 安装 svn
2011-07-26 11:28 4659Linux SVN安装所需module:#yum inst ...
相关推荐
使用 Screen 管理远程会话技巧 在 Linux 中,使用 Screen 可以管理远程会话,解决长时间的任务不能关闭窗口或断开连接的问题。本文将详细介绍 Screen 的使用方法、概念和原理。 概念: * 进程组:一个或多个进程...
Screen 命令是一款非常实用的远程会话管理工具,可以帮助用户解决 SSH 远程登录时的痛点,提高工作效率和生产力。通过本文的介绍,相信大家已经了解了 Screen 命令的使用方法和功能特点,欢迎大家去尝试和应用 ...
Linux 下 Screen 命令是系统管理员经常使用的一种工具,用于远程登录服务器并在服务器上跑一些程序。Screen 命令可以创建多个有 shell 的窗口,每个窗口都可以跑自己的应用程序,即使退出远程管理窗口,Screen 窗口...
但`nohup`仅适用于非交互式的命令,如果需要在远程会话中进行交互操作,它就显得力不从心了。 这就是`screen`工具发挥作用的地方。`screen`是一个全屏窗口管理器,可以在单个SSH会话中创建多个独立的虚拟终端。即使...
- 查找已创建的 Screen 会话:使用命令 `screen -ls`。这将列出所有存在的 Screen 会话及其状态。 - 重新连接到一个会话:使用命令 `screen -r <会话名称>`。例如:`screen -r david` 将使用户返回到名为“david”的...
使用 screen 命令可以解决远程会话断开的问题。例如,在安装 lnmp 时,可以创建一个名字为 lnmp 的 screen 会话,执行 screen -S lnmp 命令。然后,可以暂时离开,保留 screen 会话中的任务或程序,当需要临时离开时...
总之,`screen`是Linux环境中不可或缺的一个工具,它为后台运行程序、多任务管理以及会话持久化提供了强大支持,尤其适合服务器管理和远程工作场景。通过RPM包直接安装,可以轻松地在系统中部署并维护`screen`,从而...
- 恢复会话的方法是先列出所有已打开的会话:`screen -ls`,然后使用`screen -r [会话名]`命令来恢复特定的会话。 #### 三、Screen进阶操作 1. **创建多个窗口** - 在Screen会话中,可以创建多个窗口以便同时...
**Screen使用工具——Linux下的多窗口管理神器** 在Linux操作系统中,`screen`是一个非常实用的命令行工具,它允许用户在一个终端会话中创建多个独立的全屏窗口,每个窗口可以运行不同的命令或程序。这使得用户可以...
- 如果存在多个挂起的会话,可以通过指定会话ID来恢复特定的会话:`screen -r +id` 3. **脱离当前Screen会话**(不关闭会话): - 组合键:`Ctrl+A` + `d` - 这个操作并不会关闭当前的Screen会话,而是将当前...
使用`screen`命令可以实现远程协作,允许两个用户在同一台机器上共享一个Shell会话。通过`screen -S`创建会话,然后使用`screen -x`连接到会话,实现同步操作和故障排查。这对于团队合作和教学特别有用,避免了权限...
3. **会话管理**:用户可以创建、保存和管理多个远程会话配置,便于快速连接到常用的服务器。 4. **FTP/SFTP客户端**:集成的FTP和SFTP客户端使得文件传输变得简单,用户可以直接在本地和远程系统之间拖放文件。 5...
3. **tmux或screen**:这两个终端复用器可以在远程会话中创建多个窗口和会话,即使网络断开也能保留工作状态。 总结,远程登录Linux工具的选择主要取决于你的需求和使用环境。了解并熟练掌握这些工具,将极大地提升...
1. **远程会话管理**: Screen允许用户创建持久性的会话,即使在断开连接之后,也可以重新连接到原来的会话继续工作。 2. **多任务处理**: 在一个Screen会话中,用户可以同时开启多个窗口,每个窗口都可以独立执行...
在Linux系统中,远程维护工具是管理员进行系统管理和故障排查的重要手段。这些工具允许管理员无需物理访问服务器,就能完成各种日常任务,如配置更新、软件安装、问题诊断等。本篇将详细介绍几个常用的Linux基本远程...
Linux系统管理员在远程管理服务器时,经常会遇到需要长时间执行的任务,如系统备份和文件传输等。这些任务一旦开始就不能中断,否则可能导致任务失败。为了解决这一问题,GNU开发了Screen这一自由软件,它允许用户在...
Linux中的`screen`命令是一个非常实用的工具,尤其对于远程服务器管理和长时间运行的任务而言。它允许用户在单个终端会话中创建多个独立的“窗口”,每个窗口都可以运行不同的命令或程序,即使用户退出终端或者网络...
- **保持连接**:使用`screen`或`tmux`工具创建多窗口会话,即使断开网络连接,会话也能保持活动状态。 3. **其他远程管理工具** - **PuTTY**:Windows用户常用的一款SSH客户端,提供图形化界面。 - **MobaXterm...
Linux Screen 是一个强大的...总的来说,Linux Screen 提供了一种高效的方式来管理终端会话,特别是在多任务处理和远程工作时,能显著提高生产力。熟练掌握Screen的各项功能,将使你在Linux环境中的工作变得更加轻松。