我希望合并以下两个步骤,其中步骤 1 的输出(即 PORTS)应作为步骤 2 的输入。
步骤1:
下面的命令从文件中获取端口号。
genpwdfile dec -in test/test.cfg -out /tmp/dec.out |grep PORT_NUM /tmp/dec.out | cut -d '=' -f2 ; grep MONITOR_PORT /tmp/dec.out | cut -d '=' -f2
输出:
33027
13041
第2步:
以下命令杀死占用端口的 PID [作为步骤 1 的输出]。
lsof -i:33027 2>/dev/null | grep -v PID | awk '{print $2}' | xargs kill -9
lsof -i:13041 2>/dev/null | grep -v PID | awk '{print $2}' | xargs kill -9
样本/tmp/dec.out
Test_DIR=/tmp
PORT_NUM=33027
TEST_PORT_WORK=7777
MONITOR_PORT=13041
我正在处理 AiX 6.1 系统
你能建议一下吗?
答案1
只需使用 shell 循环即可。您可以将两个grep
命令合并为一个命令,genpwdfile
如果创建文件,则通过管道传输是没有意义的。尝试这个:
genpwdfile dec -in test/test.cfg -out /tmp/dec.out &&
grep -E 'PORT_NUM|MONITOR_PORT' /tmp/dec.out | cut -d '=' -f2 |
while read -r port; do
lsof -i:"$port" 2>/dev/null |
awk 'NR>1{print $2}'
done | xargs kill -9