我有一堆服务器,我使用screen
运行实验。程序如下:
ssh
到服务器XXX screen
screen
在实验运行期间,我可以ssh
到所有服务器并列出我正在运行的流程(使用top
或ps
),轻松找到他们所在的服务器。
然而,一旦实验完成,我怎么能找到我打开屏幕会话的服务器(这样我可以查看输出,重新启动它们等等)?
PS:我的实验也会将输出打印到文件中......但这不是我的问题。
答案 0 :(得分:371)
要列出用户的所有屏幕会话,请以该用户身份运行以下命令:
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 ..
这是一个相当出色的Unix使用Unix套接字,包含在文件系统权限中,用于处理安全性,状态和流。
答案 1 :(得分:19)
命令 screen -list 可能就是您想要的。
请参阅man
答案 2 :(得分:13)
虽然joshperry的回答是正确的,但我发现它并没有告诉你屏幕名称(你用-t选项设置的那个),这实际上就是你用来识别会话的东西。 (当然,这不是他的错,这是一个屏幕的缺陷)
这就是为什么我改为使用这样的脚本:ps auxw|grep -i screen|grep -v grep
答案 3 :(得分:6)
我不确定你的问题,但如果您真正想要的是列表当前打开的屏幕会话,请尝试:
screen -ls
答案 4 :(得分:6)
For windows system
Open putty
then login in server
如果您想在Console中看到屏幕,那么您必须编写命令
Screen -ls
如果您必须访问屏幕,则必须使用以下命令
screen -x screen id
在命令行中写PWD
以检查您当前在哪个文件夹
答案 5 :(得分:3)
多人已经指出
$ screen -ls
会列出屏幕会话。
这是另一个可能对你有用的技巧。
如果您将以下命令添加为 .bashrc 中的最后一行 在服务器xxx上的文件,然后它将自动重新连接到您的 登录时的屏幕会话。
screen -d -r
希望你觉得它很有用。
答案 6 :(得分:3)
在大多数情况下,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作为第一个参数时。
答案 7 :(得分:0)
ps x | grep SCREEN
在您使用命令
的情况下查看该屏幕的运行情况screen -A -m -d php make_something.php
答案 8 :(得分:0)
您可以使用以下命令。
from urllib.request import urlopen
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime, timezone, timedelta
url = "https://www.basketball-reference.com/friv/injuries.fcgi"
html = urlopen(url)
soup = BeautifulSoup(html)
headers = [th.getText() for th in soup.findAll('tr', limit=2)[0].findAll('th')]
trs = soup.findAll('tr')[1:]
rows = []
for tr in trs:
player_name = tr.find('a').text
data = [player_name] + [x.text for x in tr.find_all('td')]
rows.append(data)
injury_data = pd.DataFrame(rows, columns = headers)
(或)
screen -list
答案 9 :(得分:-3)
所以你使用屏幕来保持实验在后台运行,或者是什么?如果是这样,为什么不在后台启动呢?
./experiment &
如果你问如何获得我完成的工作通知,那么如何将实验与邮件命令串联起来呢?
./experiment && echo "the deed is done" | mail youruser@yourlocalworkstation -s "job on server $HOSTNAME is done"