使用 Shell 通过 ssh 从远程机器收集完整的 GC 计数
Gather Full GC count from remote machine via ssh with Shell
我有一个服务器列表文件,里面的所有服务器都授权给了我登录的机器。我想从文件 /some/path/gc.log
和 Shell 收集所有服务器的完整 GC 计数。我该怎么做?
servers.txt:
192.168.1.101 root
192.168.1.102 root
192.168.1.103 root
192.168.1.104 root
192.168.1.105 root
到目前为止做了什么:
#!/bin/bash
while read line
do
ip=$(echo $line | cut -f1 -d ' ')
user=$(echo $line | cut -f2 -d ' ')
# how to log on remote server and get Full GC count from /some/path/gc.log
done < "servers.txt"
部分gc.log:
0.756: [Full GC (System) 0.756: [CMS: 0K->1696K(204800K), 0.0347096 secs] 11488K->1696K(252608K), [CMS Perm : 10328K->10320K(131072K)], 0.0347949 secs] [Times: user=0.06 sys=0.00, real=0.05 secs]
1.728: [GC 1.728: [ParNew: 38272K->2323K(47808K), 0.0092276 secs] 39968K->4019K(252608K), 0.0093169 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
2.642: [GC 2.643: [ParNew: 40595K->3685K(47808K), 0.0075343 secs] 42291K->5381K(252608K), 0.0075972 secs] [Times: user=0.03 sys=0.00, real=0.02 secs]
1- 使用 sshpass
和 ssh
sshpass -p <password> ssh <user>@<ip> 'cat /some/path/gc.log'
那就随心所欲
2- 使用 预期 脚本
我假设您需要每个主机的总 GC 文本报告,其中总 GC 定义为文件 gc.log
中出现单词 Full
的行数。在这种情况下,使用:
#!/bin/bash
while read host user
do
echo "Total GC for $host is $(ssh "$user@$host" "grep 'Full' /path/to/gc.log | wc -l")."
done < "servers.txt"
这会产生如下输出:
Total GC for 192.168.1.101 is 3.
我有一个服务器列表文件,里面的所有服务器都授权给了我登录的机器。我想从文件 /some/path/gc.log
和 Shell 收集所有服务器的完整 GC 计数。我该怎么做?
servers.txt:
192.168.1.101 root
192.168.1.102 root
192.168.1.103 root
192.168.1.104 root
192.168.1.105 root
到目前为止做了什么:
#!/bin/bash
while read line
do
ip=$(echo $line | cut -f1 -d ' ')
user=$(echo $line | cut -f2 -d ' ')
# how to log on remote server and get Full GC count from /some/path/gc.log
done < "servers.txt"
部分gc.log:
0.756: [Full GC (System) 0.756: [CMS: 0K->1696K(204800K), 0.0347096 secs] 11488K->1696K(252608K), [CMS Perm : 10328K->10320K(131072K)], 0.0347949 secs] [Times: user=0.06 sys=0.00, real=0.05 secs]
1.728: [GC 1.728: [ParNew: 38272K->2323K(47808K), 0.0092276 secs] 39968K->4019K(252608K), 0.0093169 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
2.642: [GC 2.643: [ParNew: 40595K->3685K(47808K), 0.0075343 secs] 42291K->5381K(252608K), 0.0075972 secs] [Times: user=0.03 sys=0.00, real=0.02 secs]
1- 使用 sshpass
和 ssh
sshpass -p <password> ssh <user>@<ip> 'cat /some/path/gc.log'
那就随心所欲
2- 使用 预期 脚本
我假设您需要每个主机的总 GC 文本报告,其中总 GC 定义为文件 gc.log
中出现单词 Full
的行数。在这种情况下,使用:
#!/bin/bash
while read host user
do
echo "Total GC for $host is $(ssh "$user@$host" "grep 'Full' /path/to/gc.log | wc -l")."
done < "servers.txt"
这会产生如下输出:
Total GC for 192.168.1.101 is 3.