Shell脚本:读取输出以运行下一个命令

问题描述 投票:1回答:1

我正在尝试运行此程序,但仍未获得输出。不知道我错了。首先,脚本应登录到服务器第二个命令是“ netstat -tulpun | grep -i port”(端口和服务器列表在同一文件中)3rd这里可能得到3到4输出,但我只需要25个PID输出,其他则不需要

#!/bin/bash  
while read -r -u10 server port line  
do  
echo ========== server: "$server" port: "$port" ==========  
   ssh $line "netstat -tulpunt | grep -E \"\b$port\b\"" | awk '{print $7}' | grep '/' | awk -F '/' '{print $1}' | xargs -I % bash -c 'echo Port % && ps -ef | grep % && echo ' | grep -v grep  
done 10< demo  

更新后的所需输出:

=====服务器1端口1311

root      8063  8062  0  2014 ?        00:08:06 /opt/dm_cd -run

=====服务器2端口1311

root      6844  6843  0  2014 ?        00:20:22 /etc/bin/linux/ds -run  

=====服务器3端口8000

applmgr   1505  4215  0  2014 ?        00:05:44 /app/Apache/bin/httpd -d  
linux bash shell unix scripting
1个回答
0
投票

不需要的输出线可能是由于所需的PID出现在ps -ef输出的其他列(PPID,CMD)中或作为另一个PID的一部分。用ps -ef替换ps -fp%进行纠正。

© www.soinside.com 2019 - 2024. All rights reserved.