strace -p $(netstat -tnp|awk -F'[ /]+' "/:$(netstat -tnp|awk -F'[ :]+'
"/\/telnet/{print \$5}") /&&/apache2/{print \$7}")
Veya daha kolay okuma için biçimlendirilmiş ve OP'nin strace bayrakları bozulmamış olarak:
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -tnp | \
awk -F'[ /]+' "/:$(netstat -tnp | awk -F'[ :]+' "/\/telnet/ \
{print \$5}") / && /apache2/ {print \$7}")
Arıza, önce en içteki:
netstat -tnp | awk -F'[ :]+' "/\/telnet/ {print \$5}"
IP adreslerini DNS adlarına çözümlemeden tüm etkin TCP bağlantılarını göster. /telnet
Bir veya daha fazla boşluk ve iki nokta ile ayrılan herhangi bir satırda beşinci alanı basan, awk için boru . Bu alan kaynak bağlantı noktası olacaktır.
Geliştirmek için : awk'ın | head -n 1
sonuna veya ;exit
içine bir bölüm ekleyerek çok daha sağlam hale getirilebilir , ancak orijinal sürümünüzde bir eşdeğer yoktu, bu yüzden bunu daha uzun yapmak istemedim.
netstat -tnp | awk -F'[ /]+' "/:**** / && /apache2/ {print \$7}")
****
Burada zaten yukarıda izah ettik kısmıdır. Burada, netstat -tnp
yukarıda keşfettiğim kaynak bağlantı noktasıyla aynı bağlantı noktasına sahip olan ve Apache'nin sahibi olduğu herhangi bir satır arıyorum ; bulduğumda, yedinci alanı yazdırıyorum (bir veya daha fazla boşluk veya eğik çizgi ile ayrılmış). Bu Apache çocuğunun PID'sidir.
Geliştirmek için : Sadece bir PID döndürmenin yanı sıra (yukarıdakiyle aynı yöntemlerle), hayal edebileceğim en büyük şey, desene uyacak şekilde başka bir şeye kıyasla aslında dport'u eşleştirmek söz konusu olduğunda daha ayrımcı olmaktır. Bu FS ( -F
) sütunları ekleyerek yapmak kolay olurdu , ama sorun adresin içinde iki nokta üst üste olabilir ve bu nedenle oldukça çabuk kötü olabilir karışık IPv4 vs IPv6 durumlarda oluşur. Bu, özellikle arka boşlukta oldukça sağlam görünüyordu.
sudo strace -o /tmp/strace -f -s4096 -r -p
Bu, orijinal sorunuzun doğrudan kopyasıdır; En azından değiştirmedim.
Bana birkaç karakter daha izin verirseniz, çalıştırdığım sürüm şu olabilir:
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -tnp | \
awk -F'[ /]+' "/:$(netstat -tnp | awk -F'[ :]+' "/\/telnet/ \
{print \$5;exit}") / && /apache2/ {print \$7;exit}")