
लिनक्स प्रक्रिया खोज. C लाइब्रेरी, Go बाइंडिंग्स, रनटाइम.
यह nmap है लेकिन pids के लिए। 🤓
कृपया नीचे सीधे दान करके मुझे एक स्वतंत्र प्रोग्रामर बनने में मदद करें।
xpid उपयोगकर्ता को लिनक्स सिस्टम पर प्रक्रिया विवरणों की 'जांच' करने की क्षमता प्रदान करता है।
उदाहरण के लिए, एक स्लीपिंग थ्रेड में एक निर्देशिका /proc/[pid] होगी जिस पर नेविगेट किया जा सकता है, लेकिन सूचीबद्ध नहीं किया जा सकता।
xpid एक pid के बारे में विवरण के लिए कर्नेल में कई अलग-अलग स्थानों की जाँच करेगा।
संभावित pids के उपसमूहों की खोज करके xpid कर्नेल में कई स्थानों पर pid विवरण की जाँच करने में सक्षम होगा।
xpid [flags] -o [output] <query>
Investigate all pids
xpid
Investigate pid 1
xpid 1
Find all container processes on a system
xpid -c
Find all processes in the same namespace(s) as pid 1
xpid --ns-in [mnt, net, pid, ipc, cgroup]
Find all processes not in the same namespace(s) as current user
xpid --ns-out-user [mnt, net, pid, ipc, cgroup]
Find all processes running with eBPF programs as JSON
xpid --ebpf -o json <pid-query>
Find all processes running with eBPF programs, in a container, in /proc
xpid -b -c -p
Find all processes between specific values (Query syntax)
xpid <flags> +100 # Search pids up to 100
xpid <flags> 100-2000 # Search pids between 100-2000
xpid <flags> 65000+ # Search pids 65000 or above
Find all hidden processes on a system (slow)
xpid -x <pid-query>
xpid रनटाइम पर कंटेनर प्रक्रियाओं को खोजेगा। 🎉
यह /proc/[pid]/ns/@cgroup में लिंक को पढ़कर और इसे /proc/1/[pid]/ns/@cgroup में मान से संबंधित करके काम करता है।
pid नेमस्पेस संदर्भ की परवाह किए बिना, यदि वर्तमान pid 1 से भिन्न कोई "कंटेनर" है, तो xpid उसे ढूंढ लेगा।
xpid उन pids को ढूंढेगा जिनमें रनटाइम पर eBPF प्रोग्राम लोड होते हैं।
यह /proc/[pid]/fdinfo/* से फ़ाइल डिस्क्रिप्टर जानकारी को /sys/fs/bpf/progs.debug से संबंधित करके काम करता है।
यदि किसी pid में eBPF प्रोग्राम लोड है, तो xpid उसे ढूंढ लेगा।
कर्नेल में कर्नेल मॉड्यूल और eBPF के लचीलेपन के कारण, पारंपरिक तरीकों से proc(5) फाइलसिस्टम को pid विवरण सूचीबद्ध करने से रोकना संभव हो सकता है।
xpid उसी तरह से pids की खोज करने के लिए विभिन्न रणनीतियों का उपयोग करता है जैसे nmap किसी लक्ष्य को पोर्ट स्कैन करने के लिए विभिन्न रणनीतियों का उपयोग करेगा।
xpid एक Go रनटाइम उपयोगिता है जो libxpid पर निर्भर करती है।
पहले (नीचे) libxpid स्थापित करें, और फिर Go रनटाइम संकलित करें।
git clone https://github.com/kris-nova/xpid.git
cd xpid
make
sudo make install
libxpid C में लिखा गया है, क्योंकि यह सीधे ptrace(2) और eBPF कोड का लाभ उठाएगा।
इसका मतलब है कि xpid निष्पादन योग्य पूरी तरह से स्थिर रूप से लिंक नहीं है।
xpid Go प्रोग्राम चलने से पहले आपको अपने सिस्टम पर libxpid स्थापित करना होगा।
git clone https://github.com/kris-nova/xpid.git
cd xpid/libxpid
./configure
cd build
make
sudo make install