GNU/Linux >> Znalost Linux >  >> Linux

Odstraňte problémy s použitím souborového systému proc na Linuxu

Proc souborový systém je důležitou vlastností Linuxu, kterou nemůžete ignorovat. proc je pseudo nebo virtuální souborový systém, který poskytuje rozhraní pro datové struktury jádra. Jinými slovy, proc není skutečným souborovým systémem ve smyslu reálného světa; spíše je umístěn pouze v paměti a ne na disku. Je automaticky připojen systémem.

Většina jeho obsahu jsou běžné soubory a adresáře, takže k procházení proc můžete použít většinu běžných linuxových nástrojů souborový systém. Příklady v tomto článku by měly fungovat stejně na jakékoli distribuci Linuxu. Můj systém používá:

$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server verze 7.8 (Maipo)
$
 
$ uname  -r
3.10.0- 1127.el7.x86_64
$

Základní použití proc

Chcete-li zjistit, kde je /proc souborový systém je umístěn, spusťte připojit a vyhledejte proc . Zde vidíte tento proc je namontován na /proc adresář:

$ mount | grep proc 
proc na /proc typu proc (rw,nosuid,nodev,noexec,relatime)
systemd-1 na /proc/sys/fs/binfmt_misc typu autofs (rw,relatime,fd=26, pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9506)
nfsd na /proc/fs/nfsd typ nfsd (rw,relatime)
binfmt_misc na /proc/ sys/fs/binfmt_misc typ binfmt_misc (rw,relatime)
$

Přejděte do /proc adresář a prozkoumejte jej. Uvidíte spoustu adresářů s čísly; čísla jsou pouze ID procesů (PID) pro procesy, které se provádějí. Soubory s názvy jsou obecné soubory, které jsou použitelné v celém systému a nesouvisejí s konkrétním procesem:

$ CD /Proc /
$ pwd
/proc
$ ls
1 157 22827 33 3413 3618 384 4709 512 5571 66 741 798 88 KEYS KEYS SCSI
10 15868 23 3340 3414 362 385 4768 513 5581 6723 742 799 880 CPUINFO KEY-Users Self
101 15900 233333 3341 3415 3626 396 56 68 7466 891 CRYPTO KMSG SLABINFO / 363 392 4770 515 5637 69 747 80 9 Zařízení KpageCount softIrqs
104 17 23380 3343 3467 364 394 48 516 5652 7 75 800 906 diskats kpageflags 10416 17580 23383 336 347 365 4 4806 365 4 4806. 928 DMA LOADAVG SWAPS
105 18 23469 3346 349 37 40 4805 518 58 7071 77 839 96 DRIVER MONKKS SYS
106 19 23491 3365 35 37 4 4094 4807 519 59 71 78 840 98 Execdomains Mdstat Sysrq-Trigger
107 2 23524 3366 351 375 4096 482 52 6 7199 783 842 9838 FB MEMINFO SYSVIPC
11 20767 23527 3363 352 376 41 41 4163 652 376 41 41 41 416. 784 8446 99 Filesystems Misc Timer_LIST
11412 21 24 3397 3523 377 4180 49 5347 61 73 785 85 993 FS moduly
120 21035 27 34 359 379 428 495 54 624 736 79 869 9970 IoMem Mtrr Uptime
1263 21059 28 3408 36 38 43 508 5421 625 737 793 87 ACPI IOPORTS NET VERS 44    509   5463  63    738   794   870   info o kamarádovi  ipmi      PageTypeinfo VMallocinfo
1272 22 30 3410 3602 381 45 51 5464 636 739 795 874 SUBS IRQ oddíly VMSTAT $

Začněte prozkoumáním některých obecných souborů pro celý systém. Například /proc/cpuinfo zobrazuje informace o CPU v systému – konkrétně jeho značku, model, počet jader, rychlost, příznaky CPU atd.:

$ cat /proc/cpuinfo 

Podobně /proc/meminfo poskytuje informace o primární paměti nebo RAM v systému. Poskytuje také další statistiky, například kolik paměti je využito, volná a tak dále:

$ cat /proc/meminfo 

Chcete-li zobrazit všechny načtené moduly jádra, podívejte se na /proc/modules soubor:

$ cat /proc/modules 

Chcete-li zjistit, jaké všechny systémy souborů váš systém podporuje, podívejte se na /proc/filesystems :

$ cat /proc/filesystems 

Dále se podívejte na soubory pro jednotlivé procesy; například systemd , který má PID 1:

$ ps aux | grep -i systemd | hlava -1
kořen         1  0,0  0,0 195976  9088 ? Ss   Mar03   0:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
$

Přesuňte se do adresáře s názvem 1 v rámci /proc a podívejte se, co tam je. Je zde mnoho souborů a jejich názvy jsou poněkud samozřejmé:

$ cd /proc/1
$ pwd
/proc/1
$

$ ls
attr        cmdline          environ  io         mem         mapa stránky         ed                  Stack Task
Autogroup comm exe limity MountInfo Numa_Maps Patch_state Schlatis Stat Stat Timers
auxv coredemp_filter fd loginuid Mounts oom_adj Osobnost STATMID STATMID_MRAP
$

Chcete-li zjistit, zda jsou tyto soubory přítomny pro každý z procesů, vyberte aktuální ID prostředí. Tyto informace získáte spuštěním echo $$ . $$ je speciální proměnná, která ukládá PID aktuálního shellu. Přejděte na /proc a cd do adresáře se stejným číslem jako PID. Soubory jsou téměř totožné se soubory pro PID 1 nebo systemd:

$ echo $$
21059
$
$ cd /proc/21059
$ pwd
/proc/21059
$
$ ls
attr cmdline environ io mem ns pagemap plánovací stack úkol
Autogroup comm exe limity MountInfo Numa_Maps Patch_state STATSTAT STAT časovače
auxv coredemp_filter fd logid Mounts oom_adj relace fdinfo   map_files  mountstats  oom_score      projid_map   setgroups  status   wchan
clear_refs  cwd              gid_map  maps         sys    
  sít       score               score

Chcete-li zjistit, co tyto soubory obsahují, spusťte dlouhotrvající proces. Otevřete terminál a spusťte tty příkaz, abyste viděli, který terminál používáte. Poté zadejte cat a stiskněte Enter . Tento příkaz bude sedět a čekat na váš vstup:

$ tty
/dev/pts/2
$
$ cat

Otevřete jiný terminál a najděte PID cat pomocí pgrep příkaz:

$ pgrep cat
24335
$

Nyní prozkoumejte úplně první soubor pro každý proces, cmdline . Tento soubor ukazuje, jak se provádí příkazový řádek, zda jsou použity nějaké parametry atd.:

$ cat /proc/24335/cmdline 
cat$

Dále se podívejte na adresář s názvem cwd , což je jakýsi symbolický odkaz (symlink) na adresář, kde je kočka příkaz byl proveden; v tomto případě je to /root :

$ ls -l  /proc/24335/cwd
lrwxrwxrwx. 1 kořenový kořenový adresář 0 březen  4 03:35 /proc/24335/cwd -> /root
$

Pokud se spustí binární soubor a vytvoří se proces, ve výchozím nastavení otevře několik souborů. Obecně otevírá standard v (stdin ), standardní výstup (stdout ) a standardní chyba (stderr ). Pokud uvedete fd adresář pod /proc/ následovaný PID, můžete vidět, že vrací tři symbolické odkazy, všechny směřující na terminál (pts2 ), který byl použit k provedení příkazu:

$ ls -l  /proc/24335/fd/
celkem 0
lrwx------. 1 kořenový kořen 64 březen  4 03:35 0 -> /dev/pts/2
lrwx------. 1 kořenový kořen 64. března  4 03:35 1 -> /dev/pts/2
lrwx------. 1 kořenový kořen 64. března  4 03:35 2 -> /dev/pts/2
$

Dalším důležitým souborem je exe , což je symbolický odkaz ukazující na absolutní cestu binárního souboru, který byl spuštěn. V tomto případě je to cesta kočky příkaz:

$ ls -l /proc/24335/exe
lrwxrwxrwx. 1 kořenový kořen 0 březen  4 03:35 /proc/24335/exe -> /usr/bin/cat
$

Podobně, pokud kočka prostředí per-process file, můžete zobrazit všechny proměnné prostředí, které jsou definovány pro cat proces:

$ cat /proc/24335/environ 

Důležité soubory v proc

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Výše uvedené příklady poskytují mnoho informací o běžících procesech a vašem systému obecně, které mohou pomoci při ladění a odstraňování problémů.

Důležité soubory pro jednotlivé procesy

Níže jsou uvedeny důležité soubory pro jednotlivé procesy, které je třeba hledat v /proc/ souborový systém:

  • /proc/$pid/cmdline Obsahuje celý příkazový řádek pro proces
  • /proc/$pid/cwd Symbolický odkaz na aktuální pracovní adresář procesu
  • /proc/$pid/environ Obsahuje počáteční prostředí, které bylo nastaveno při spuštění programu
  • /proc/$pid/exe Symbolický odkaz na cestu k souboru, který byl spuštěn
  • /proc/$pid/fd Podadresář pro výpis souborů, které byly procesem otevřeny
  • /proc/$pid/io Obsahuje I/O statistiky pro proces
  • /proc/$pid/limits Zobrazuje limit prostředků procesu
  • /proc/$pid/maps Aktuálně mapované oblasti paměti a přístupová oprávnění
  • /proc/$pid/stack Stopa volání funkcí v zásobníku jádra procesu
  • /proc/$pid/stat Stavové informace o procesu
  • /proc/$pid/task/ Adresář, který obsahuje informace o vláknu

Důležité soubory pro celý systém

Zde je seznam důležitých obecných souborů (tj. které nejsou specifické pro žádný proces):

  • /proc/cmdline Argumenty předané linuxovému jádru během bootování
  • /proc/cpuinfo informace související s CPU
  • /proc/meminfo Statistiky využití paměti
  • /proc/filesystems Výpis souborových systémů podporovaných jádrem
  • /proc/modules Moduly jádra, které jsou aktuálně načteny
  • /proc/partitions Informace o každém oddílu v systému
  • /proc/swaps Informace o odkládacím prostoru v systému
  • /proc/self Adresář odkazuje na proces přistupující k /proc souborový systém
  • /proc/slabinfo Informace o mezipaměti jádra
  • /proc/sys Různé soubory a podadresáře o proměnných jádra

Další kroky

Tento přehled proc souborový systém se dotýká pouze možností, které nabízí. Další informace naleznete v části proc manuálovou stránku uživatele zadáním man proc nebo přístup k online verzi manuálové stránky proc.


Linux
  1. Úvod do používání tcpdump na příkazovém řádku Linuxu

  2. Použití síly na příkazovém řádku Linuxu

  3. Zkontrolujte místo na disku v Linuxu pomocí příkazů df a du

  1. Prozkoumání souborového systému Linux /proc

  2. Inodes a souborový systém Linux

  3. Kde se ve Windows 10 nachází souborový systém subsystému Linux?

  1. Tipy pro použití příkazu top v Linuxu

  2. Pomocí příkazu Linux zdarma

  3. Použití příkazu mkfs v Linuxu k formátování systému souborů na disku nebo oddílu