我想检查脚本是否test.sh
正在名为 的屏幕(GNU 屏幕)中运行testscreen
。
需要为很多服务器做这个工作,所以,想通过ssh远程做。
for serverid in {1..100}; do ssh root@server${serverid} "command"
如何command
检查脚本test.sh
是否在名为 的屏幕中运行testscreen
?
答案1
使用
screen -Q windows
您可以列出窗口,包括每个窗口中启动的命令。
因此,要检查特定会话
screen -S testscreen -Q windows
要测试特定命令是否存在test.sh
:
screen -S testscreen -Q windows | grep -E '^[[:digit:]]+[[:space:]]+test\.sh$'
(注意这是窗口标题)
通过运行这个ssh
就可以了:
for serverid in {1..100}; do
ssh root@server${serverid} screen -S testscreen -Q windows \
| grep -q -E '^[[:digit:]]+[[:space:]]+test\.sh$' \
&& echo "command running!" \
|| echo "not running!"
done