Answers:
要列出该用户的所有屏幕会话,请以该用户身份运行以下命令:
screen -ls
要查看特定计算机上的所有屏幕会话,您可以执行以下操作:
ls -laR /var/run/screen/
我在我的机器上得到这个:
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 ..
这是Unixy对Unix套接字的一种非常出色的使用,它包装在文件系统权限中以处理安全性,状态和流。
ls -R /var/run/screen/S-root/ | grep "NamingConvention"
。屏幕以<pid>.<screen_name>
格式保存。这对于bash脚本很有用。因此,如果您有一个带有名称的屏幕,0000.NamingConvention
它将以一种易于解析的格式按字面意思返回您要查找的屏幕的名称。
尽管joshperry的答案是正确的,但我感到非常烦人的是,它没有告诉您屏幕名称(使用-t选项设置的屏幕名称),实际上是您用来标识会话的名称。(当然,这不是他的错,这是屏幕的缺陷)
这就是为什么我改用这样的脚本的原因: ps auxw|grep -i screen|grep -v grep
ls
输出中可见。如果需要,还可以保留-t选项。
screen -rd <sessionname>
For windows system
Open putty
then login in server
如果要在控制台中查看屏幕,则必须编写命令
Screen -ls
如果必须访问屏幕,则必须使用以下命令
screen -x screen id
PWD
在命令行中编写以检查当前位于哪个文件夹
在大多数情况下,一个screen -RRx $username/
意志就足够了:)
如果您仍要列出所有屏幕,请在路径中输入以下脚本,然后将其称为屏幕或您喜欢的任何屏幕:
#!/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
给选项-ls-all作为第一个参数时,除了显示所有屏幕会话外,它的行为与屏幕完全相同。
因此,您正在使用屏幕使实验在后台运行,还是什么?如果是这样,为什么不在后台启动它呢?
./experiment &
而且,如果您要询问如何通知我完成的工作,那么将实验与邮件命令串在一起怎么办?
./experiment && echo "the deed is done" | mail youruser@yourlocalworkstation -s "job on server $HOSTNAME is done"