이 스크립트가 실행되면 PID를 얻습니다. 이제 출력 "PID"를 읽고 다음 명령을 다음과 같이 실행하고 싶습니다.
ps -ef | grep -i PID
ps -ef | grep -i PID
while read -r -u10 server port line
do
echo ========== server: "$server" port: "$port" ==========
ssh -qn "$server" "netstat -tulpunt | grep -E ":$port "" | \
awk '{print $7}' | grep '/' | awk -F "/" '{print $1}'
echo
done 10< demo
답변1
- 내가 이해하는 바는 코드의 두 번째 부분이 PID를 제공하고 이를 찾기 위해 grep을 원한다는 것입니다.
- 그리고 double ps도 오타입니다.
그것은 마치
while read -r -u10 server port line
do
echo ========== server: "$server" port: "$port" ==========
pid=$(ssh -qn "$server" "netstat -tulpunt | grep -E ":$port "" | \
awk '{print $7}' | grep '/' | awk -F "/" '{print $1}' )
echo "PID: $pid"
ssh -qn "$server" "ps -ef | grep $pid"
echo
done 10< demo
노트
| grep -v grep
grep은 grep 자체를 수행합니다( 마지막에 추가하는 것이 좋습니다 ).$( ... )
줄을 연장하는 구문이 확실하지 않습니다 .
편집하다:
이 경우에는 다음을 시도하십시오.
ssh -qn "$server" "netstat -tulpunt | awk '/:"$port"/ { split(\$7,A,\"/\" ) ; printf \"ps -p %d\n\",A[1]}' | bash "
이것은 매우 직관적입니다.
- awk의 grep 기능이
/:"$port"/
포트를 점유합니다. - 분할하면 A[1]에서 PID를 선택합니다.
ps -p %d -f --no-headers
마지막으로 시뮬레이션 에 사용합니다.ps -ef | grep PID
- 우리는 그것을 리모콘에 줬어요
bash