Woo*_*kai 216 linux bash command-line gnu-screen
我有一堆服务器,我在其上运行实验screen
.程序如下:
ssh
到服务器XXXscreen
screen
在实验运行的同时,我可以通过ssh
所有服务器轻松找到它们所在的服务器并列出我正在运行的进程(使用top
或ps
).
但是,一旦实验完成,我怎么能找到我打开屏幕会话的服务器(这样我可以查看输出,重新启动它们等)?
PS:我的实验也会将输出打印到文件中......但这不是我的问题.
jos*_*rry 392
要列出用户的所有屏幕会话,请以该用户身份运行以下命令:
screen -ls
Run Code Online (Sandbox Code Playgroud)
要查看特定计算机上的所有屏幕会话,您可以:
ls -laR /var/run/screen/
Run Code Online (Sandbox Code Playgroud)
我在我的机器上得到这个:
gentle ~ # ls -laR /var/run/screen/
/var/run/screen/:
total 1
drwxrwxr-x 4 root utmp 96 Mar 1 2005 .
drwxr-xr-x 10 root root 840 Feb 1 03:10 ..
drwx------ 2 josh users 88 Jan 13 11:33 S-josh
drwx------ 2 root root 48 Feb 11 10:50 S-root
/var/run/screen/S-josh:
total 0
drwx------ 2 josh users 88 Jan 13 11:33 .
drwxrwxr-x 4 root utmp 96 Mar 1 2005 ..
prwx------ 1 josh users 0 Feb 11 10:41 12931.pts-0.gentle
/var/run/screen/S-root:
total 0
drwx------ 2 root root 48 Feb 11 10:50 .
drwxrwxr-x 4 root utmp 96 Mar 1 2005 ..
Run Code Online (Sandbox Code Playgroud)
这是一个相当出色的Unixy用途,包含在文件系统权限中的Unix套接字,用于处理安全性,状态和流.
MBK*_*MBK 35
简单的指南记住...
screen
- 创建一个屏幕
screen -list
- 列出所有分离(正在运行)的屏幕及其屏幕 ID。
6764.pts-1.v1091330
是屏幕ID。
screen -x [screen id]
- 连接/附加到特定的运行屏幕。
Ctrl + D
- 在屏幕中时终止/停止屏幕运行。
Ctrl + A, Then press D
- 在屏幕中时可以脱离屏幕而不打扰它。
killall screen
- 分离或终止所有屏幕。
o0'*_*0'. 13
虽然joshperry的回答是正确的,但我发现它并没有告诉你屏幕名称(你用-t选项设置的那个),这实际上就是你用来识别会话的东西.(当然,这不是他的错,这是一个屏幕的缺陷)
这就是为什么我改为使用这样的脚本: ps auxw|grep -i screen|grep -v grep
For windows system
Open putty
then login in server
Run Code Online (Sandbox Code Playgroud)
如果要在Console中查看屏幕,则必须编写命令
Screen -ls
Run Code Online (Sandbox Code Playgroud)
如果你必须访问屏幕,那么你必须使用以下命令
screen -x screen id
Run Code Online (Sandbox Code Playgroud)
PWD
在命令行中写入以检查您当前在哪个文件夹中
小智 5
不少人已经指出
$ screen -ls
Run Code Online (Sandbox Code Playgroud)
将列出屏幕会话。
这是另一个可能对您有用的技巧。
如果您将以下命令添加为服务器 xxx 上的.bashrc 文件的最后一行,那么它将在登录时自动重新连接到您的屏幕会话。
screen -d -r
Run Code Online (Sandbox Code Playgroud)
希望你觉得它有用。
在大多数情况下,一个screen -RRx $username/
就足够了:)
如果您仍想列出所有屏幕,请将以下脚本放在您的路径中,并将其命名为 screen 或任何您喜欢的名称:
#!/bin/bash
if [[ "$1" != "-ls-all" ]]; then
exec /usr/bin/screen "$@"
else
shopt -s nullglob
screens=(/var/run/screen/S-*/*)
if (( ${#screens[@]} == 0 )); then
echo "no screen session found in /var/run/screen"
else
echo "${screens[@]#*S-}"
fi
fi
Run Code Online (Sandbox Code Playgroud)
当将选项 -ls-all 作为第一个参数时,它的行为与 screen 完全一样,除了显示所有屏幕会话。
归档时间: |
|
查看次数: |
382702 次 |
最近记录: |