Найти Π² Π”Π·Π΅Π½Π΅

🐧 ProcMon-for-Linux: ΠΊΠΎΠ³Π΄Π° Sysinternals ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΌΠΈΡ€ open source

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π»ΠΈ слоТныС сцСнарии Π½Π° Windows, навСрняка ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Process Monitor ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Sysinternals. Π­Ρ‚ΠΎ Π±Ρ‹Π» инструмСнт Β«Ρ€Π΅Π½Ρ‚Π³Π΅Π½Π°Β» систСмы: Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π», ΠΊΠ°ΠΊΠΈΠ΅ процСссы Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΠΏΠΈΡˆΡƒΡ‚ Ρ„Π°ΠΉΠ»Ρ‹, Π»Π΅Π·ΡƒΡ‚ Π² рССстр, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ сокСты. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ Linux-сообщСства появился свой Π°Π½Π°Π»ΠΎΠ³ β€” ProcMon-for-Linux, ΠΈΡ€ΠΎΠ½ΠΈΡ‡Π½ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ самой Microsoft. ⚑ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ распространяСтся ΠΏΠΎΠ΄ MIT-Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ, ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ 4 000 Π·Π²Ρ‘Π·Π΄ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ развиваСтся. Π•Π³ΠΎ особСнности:
πŸ”Ž ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² β€” ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ syscall выполняСт процСсс, ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ (read, openat, write).
🎯 Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ PID β€” Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ прилоТСниями, Π° Π½Π΅ ΡƒΡ‚ΠΎΠΏΠ°Ρ‚ΡŒ Π² ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ядра.
πŸ“Š Headless-Ρ€Π΅ΠΆΠΈΠΌ с записью Π² SQLite β€” ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с CI ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ постфактум.
πŸ› οΈ TUI-интСрфСйс β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½Ρ‘Π½Π½ΡƒΡŽ трассировку Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ выглядят элСгантно: # Врассировка всСх процСссов
sudo procmon
# Волько процСссы
ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС: Π»ΡƒΠΏΠ° Π½Π°Π΄ Π΄Ρ€Π΅Π²ΠΎΠΌ процСссов, Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΈΠΊΠΎΠ½ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², сокСтов, CPU/памяти ΠΈ панСль Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²; Π²Π½ΠΈΠ·Ρƒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€-Β«Π±Π°Π·Π°Β» ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ событий β€” Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€Π° ProcMon-for-Linux: наблюдСниС систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ запись Π² SQLite, Π±Π΅Π· тСкста ΠΈ Π±Ρ€Π΅Π½Π΄ΠΎΠ².
ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС: Π»ΡƒΠΏΠ° Π½Π°Π΄ Π΄Ρ€Π΅Π²ΠΎΠΌ процСссов, Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΈΠΊΠΎΠ½ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², сокСтов, CPU/памяти ΠΈ панСль Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²; Π²Π½ΠΈΠ·Ρƒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€-Β«Π±Π°Π·Π°Β» ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ событий β€” Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€Π° ProcMon-for-Linux: наблюдСниС систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ запись Π² SQLite, Π±Π΅Π· тСкста ΠΈ Π±Ρ€Π΅Π½Π΄ΠΎΠ².

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π»ΠΈ слоТныС сцСнарии Π½Π° Windows, навСрняка ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Process Monitor ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Sysinternals. Π­Ρ‚ΠΎ Π±Ρ‹Π» инструмСнт Β«Ρ€Π΅Π½Ρ‚Π³Π΅Π½Π°Β» систСмы: Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π», ΠΊΠ°ΠΊΠΈΠ΅ процСссы Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΠΏΠΈΡˆΡƒΡ‚ Ρ„Π°ΠΉΠ»Ρ‹, Π»Π΅Π·ΡƒΡ‚ Π² рССстр, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ сокСты. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ Linux-сообщСства появился свой Π°Π½Π°Π»ΠΎΠ³ β€” ProcMon-for-Linux, ΠΈΡ€ΠΎΠ½ΠΈΡ‡Π½ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ самой Microsoft.

-2

⚑ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ распространяСтся ΠΏΠΎΠ΄ MIT-Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ, ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ 4 000 Π·Π²Ρ‘Π·Π΄ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ развиваСтся. Π•Π³ΠΎ особСнности:
πŸ”Ž
ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² β€” ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ syscall выполняСт процСсс, ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ (read, openat, write).
🎯
Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ PID β€” Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ прилоТСниями, Π° Π½Π΅ ΡƒΡ‚ΠΎΠΏΠ°Ρ‚ΡŒ Π² ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ядра.
πŸ“Š
Headless-Ρ€Π΅ΠΆΠΈΠΌ с записью Π² SQLite β€” ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с CI ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ постфактум.
πŸ› οΈ
TUI-интСрфСйс β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½Ρ‘Π½Π½ΡƒΡŽ трассировку Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ выглядят элСгантно:

# Врассировка всСх процСссов
sudo procmon

# Волько процСссы с PID 10 ΠΈ 20
sudo procmon -p 10,20

# ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ процСсса 35 ΠΈ запись событий Π² Π±Π°Π·Ρƒ
sudo procmon -p 35 -c procmon.db

# ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ сохранённого Π»ΠΎΠ³Π°
sudo procmon -f procmon.db

πŸ’‘ Π‘ тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния интСрСсно, Ρ‡Ρ‚ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ зависСл ΠΎΡ‚ BCC (BPF Compiler Collection), Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Microsoft пСрСписала Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° SysinternalsEBPF. Π­Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΠ»ΠΎ сборку ΠΈ сдСлало инструмСнт Π±Π»ΠΈΠΆΠ΅ ΠΊ Β«Ρ€ΠΎΠ΄Π½ΠΎΠΉΒ» философии Linux: ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ зависимости ΠΈ ΡƒΠΏΠΎΡ€ Π½Π° eBPF для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ядрС.

Π― Π±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ» ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»: ProcMon-for-Linux ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ инструмСнтом для студСнтов систСмного программирования. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ абстрактно ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ процСсс β€” ΠΎΡ‚ открытия Ρ„Π°ΠΉΠ»Π° Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠ΅Ρ‚ΡŒΡŽ.

Для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² Ρ‚ΡƒΡ‚ Ρ‚ΠΎΠΆΠ΅ масса ΠΏΠΎΠ»ΡŒΠ·Ρ‹:
πŸ•΅οΈ поиск Β«ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… дСскрипторов»;
🧩 Π°Π½Π°Π»ΠΈΠ· зависаний ΠΈ Β«ΠΏΠΎΠ΄Π²ΠΈΡΡˆΠΈΡ…Β» Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²;
🌐 ΠΎΡ‚Π»Π°Π΄ΠΊΠ° нСстандартных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ CI/CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ².

-3

πŸŽ™οΈ ΠœΠΎΡ‘ ΠΌΠ½Π΅Π½ΠΈΠ΅: появлСниС этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π·Π½Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ Β«ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ-Π΄ΠΈΠ½ΠΎΠ·Π°Π²Ρ€Ρ‹Β», ΠΊΠ°ΠΊ Microsoft, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠ·Π½Π°Π²Π°Ρ‚ΡŒ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Linux-экосистСмы. А сообщСство ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Ρ‹Π» эксклюзивом Windows-ΠΌΠΈΡ€Π°, Π΄Π° Π΅Ρ‰Ρ‘ ΠΈ ΠΏΠΎΠ΄ свободной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ.

πŸ”— Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: ProcMon-for-Linux Π½Π° GitHub