
किसी भी Linux प्रक्रिया द्वारा एक्सेस की गई फ़ाइलों को लॉग करें
Whatfiles एक Linux उपयोगिता है जो आपके सिस्टम पर किसी अन्य प्रोग्राम द्वारा पढ़ी/लिखी/बनाई/हटाई गई फ़ाइलों को लॉग करती है। यह लक्षित प्रक्रिया द्वारा बनाई गई किसी भी नई प्रक्रिया और थ्रेड को भी ट्रेस करती है।
मैं लंबे समय से एक सरल उपयोगिता की कमी से निराश हूँ जो यह देख सके कि कोई प्रक्रिया main() से लेकर बाहर निकलने तक किन फ़ाइलों को छूती है। चाहे आप किसी सॉफ्टवेयर विक्रेता पर भरोसा न करें या मैलवेयर के बारे में चिंतित हों, यह जानना महत्वपूर्ण है कि कोई प्रोग्राम या इंस्टॉलर आपके सिस्टम पर क्या करता है। lsof केवल एक क्षण को देखता है और strace बड़ा और कुछ जटिल है।
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-clone-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-heal-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-perspective-clone-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-convolve-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-smudge-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-dodge-burn-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-desaturate-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/plug-ins, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/lib/gimp/2.0/plug-ins, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/pluginrc, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/share/locale/en_US/LC_MESSAGES/gimp20-std-plug-ins.mo, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/lib/gimp/2.0/plug-ins/script-fu, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /etc/ld.so.cache, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /etc/ld.so.cache, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpui-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpwidgets-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpwidgets-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimp-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpcolor-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
मूल उपयोग, ls लॉन्च करता है और वर्तमान निर्देशिका में एक लॉग फ़ाइल में आउटपुट लिखता है:
$ whatfiles ls -lah ~/Documents
-o के साथ आउटपुट फ़ाइल स्थान निर्दिष्ट करें:
$ whatfiles -o MyLogFile cd ..
डिबग आउटपुट शामिल करें, लॉग फ़ाइल के बजाय stdout पर प्रिंट करें:
$ whatfiles -d -s apt install zoom
वर्तमान में चल रही प्रक्रिया से जुड़ें (रूट विशेषाधिकार आवश्यक):
$ sudo whatfiles -p 1234
तैयार-से-उपयोग बाइनरी releases पेज पर उपलब्ध हैं! किसी ने कृपया इसे Arch रिपॉजिटरी में भी जोड़ा, और letompouce ने एक GitLab पाइपलाइन भी सेटअप की।
gcc और make आवश्यक):$ cd whatfiles
$ make
$ sudo make install
x86, x86_64, ARM32 और ARM64 आर्किटेक्चर को सपोर्ट करता है।
क्या यह सिर्फ strace -fe trace=creat,open,openat,unlink,unlinkat ./program का पुनः कार्यान्वयन नहीं है?
हाँ। हालांकि इसका उद्देश्य सरल और अधिक उपयोगकर्ता-अनुकूल होना है।
क्या Mac और Windows संस्करण हैं?
नहीं। Mac पर syscalls को ट्रेस करने के लिए task_for_pid() की आवश्यकता होती है, जिसके लिए कोड साइनिंग आवश्यक है, जिसे मैं काम नहीं करवा पा रहा हूँ, और वैसे भी मुझे मुफ्त सॉफ्टवेयर लिखने के लिए Apple को $100/वर्ष देने में कोई दिलचस्पी नहीं है। Mac पर dtruss का उपयोग एकल प्रक्रिया और उसके चिल्ड्रेन को फॉलो करने के लिए किया जा सकता है, हालांकि -t फ्लैग एकल syscall को फ़िल्टर करने के लिए स्वीकार करता प्रतीत होता है। fs_usage कुछ समान करता है, हालांकि मुझे यकीन नहीं है कि यह चाइल्ड प्रक्रियाओं/थ्रेड्स को फॉलो करता है या नहीं। Windows के लिए Process Monitor काफी अच्छा है।
whatfiles का उपयोग किया जाता है, तब टैब क्रैश हो जाते हैं। (जब यह चल रहा हो तो -p [PID] के साथ अटैच करना ठीक काम करता है, जैसे कि पहले से खुला होने पर दूसरा Firefox विंडो लॉन्च करने के लिए whatfiles का उपयोग करना।)आपकी रुचि के लिए धन्यवाद, और कृपया Cloaker, Nestur, और Flying Carpet भी देखें!