ฉันใช้ CentOS 7 ฉันต้องการรับ PID (ถ้ามี) ของกระบวนการที่ทำงานบนพอร์ต 3000 ฉันต้องการรับ PID นี้เพื่อวัตถุประสงค์ในการบันทึกเป็นตัวแปรในเชลล์สคริปต์ จนถึงตอนนี้ฉันมี
[rails@server proddir]$ sudo ss -lptn 'sport = :3000'
State Recv-Q Send-Q Local Address:Port Peer Address:Port
Cannot open netlink socket: Protocol not supported
LISTEN 0 0 *:3000 *:* users:(("ruby",pid=4861,fd=7),("ruby",pid=4857,fd=7),("ruby",pid=4855,fd=7),("ruby",pid=4851,fd=7),("ruby",pid=4843,fd=7))
แต่ฉันไม่สามารถหาวิธีที่จะแยก PID ทั้งหมดได้ด้วยตัวเองโดยไม่มีข้อมูลเพิ่มเติมทั้งหมดนี้
ss
ไม่มีตัวเลือกนี้ ควรใช้งานได้โดยไม่ต้องใช้:sudo ss -lptn "sport = :22" | awk -F " " '{printf $6}' | sed 's/.\+pid=\([0-9]\+\).\+/\1/g'
sudo ss -lptnH "sport = :22" | awk -F " " '{printf $6}' | sed 's/.\+pid=\([0-9]\+\).\+/\1/g'
. คุณต้องการคำอธิบายหรือไม่?