远程检查屏幕上是否有脚本运行

远程检查屏幕上是否有脚本运行

我想检查脚本是否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

相关内容