GNU/Linux >> Belajar Linux >  >> Linux

Memecahkan masalah menggunakan sistem file proc di Linux

Prok sistem file adalah fitur penting Linux yang tidak dapat Anda abaikan. prok adalah sistem file semu atau virtual yang menyediakan antarmuka ke struktur data kernel. Dengan kata lain, proc bukan sistem file yang sebenarnya dalam arti dunia nyata; alih-alih, itu hanya berada di memori dan bukan di disk. Itu dipasang secara otomatis oleh sistem.

Sebagian besar kontennya adalah file dan direktori biasa, jadi Anda dapat menggunakan sebagian besar alat Linux biasa untuk menavigasi proc berkas sistem. Contoh dalam artikel ini harus berjalan sama di semua distribusi Linux. Sistem saya menggunakan:

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

Penggunaan proc dasar

Untuk mengetahui di mana /proc sistem file berada, jalankan mount perintah dan cari proc . Di sini, Anda dapat melihat proc dipasang di /proc direktori:

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

Pindah ke /proc direktori dan menjelajahinya. Anda akan melihat banyak direktori dengan angka; angka hanyalah ID proses (PID) untuk proses yang sedang dijalankan. File dengan nama adalah file umum yang berlaku di seluruh sistem dan tidak terkait dengan proses tertentu:

$ cd /proc/
$ pwd
/proc
$ ls
1      157    22827  33    3413  3618  384   4709  512   5571  66    741           798   kunci> 10 15868 23 3340 3414 362 385 4768 513 5581 6723 742 799 880 cpuinfo kunci-pengguna self
101 15900 23323 3341 3415 3622 39 4769 514 56 68 7466 8 891 Crypto Kmsg Slabinfo
1033 16366 346 363 392 4770 515 5637 69 747 80 9 Perangkat Kpagecount Softirqs
104 17 23380 3343 3467 364 394 485 516 5652 7 75 800 906 Diskstats KpageFlags Stat
10416 17580 23383 368 8367 928 DMA loadavg swaps
105 18 23469 3346 349 37 40 4805 518 58 7071 77 839 96 driver kunci sys
106 19 23491 3365 35 37 4 4094 4807 519 59 71 78 840 execomains MDSTAT sysrq-pemicu
107 2 23524 3366 351 375 4096 482 52 6 7193 783 842 9838 fb meminfo sysvipc
11 20767 23527 3383 53 601 72 784 8446 99 filesystems misc timer_list /> 120 21035 27 34 359 379 428 495 54 624 736 79 869 9970 IOMM MTR Uptime
1263 21059 28 3408 36 43 508 5421 625 737 793 87 ACPI IPORTS Versi Net
1265 260 380 44    509   5463  63    738   794   870   buddyinfo  ipmi      pagetypeinfo vmallocinfo
1272 22 30 3410 3602 381 45 51 5464 636 739 795 874 Bus irq partisi vmstat
13 22055 31 3411 3603 382 46 510 5500 64 74 796 878 Cgroups Kallsyms Sched_Debug ZoneInfo
14 32     3412  361   383   47    511   5519  65    740   797   879   cmdline    kcore        schedstat
$

Mulailah dengan menjelajahi beberapa file umum di seluruh sistem. Misalnya, /proc/cpuinfo menunjukkan informasi tentang CPU pada sistem—khususnya, merek, model, jumlah inti, kecepatan, flag CPU, dll.:

$ cat /proc/cpuinfo 

Demikian pula, /proc/meminfo memberikan informasi tentang memori utama atau RAM pada sistem. Ini juga memberikan statistik tambahan, seperti berapa banyak memori yang digunakan, gratis, dan sebagainya:

$ cat /proc/meminfo 

Untuk melihat semua modul kernel yang dimuat, lihat /proc/modules berkas:

$ cat /proc/modules 

Untuk melihat semua sistem file yang didukung oleh sistem Anda, lihat /proc/filesystems :

$ cat /proc/filesystems 

Selanjutnya, lihat file per-proses; misalnya, systemd , yang memiliki PID 1:

$ ps aux | grep -i systemd | head -1
root         1  0.0  0.0 195976  9088 ? Ss   Mar03   0:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
$

Pindah ke direktori bernama 1 dalam /proc dan lihat apa yang ada. Ada banyak file yang ada, dan namanya cukup jelas:

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

$ ls
attr        cmdline          environ  io         mem               halaman peta tumpukan tugas gid_map  maps       net         oom_score_adj  root         smaps      syscall
$

Untuk mengetahui apakah file-file ini ada untuk setiap proses, pilih ID shell saat ini. Anda bisa mendapatkan informasi itu dengan menjalankan echo $$ . $$ adalah variabel khusus yang menyimpan PID shell saat ini. Buka /proc dan cd ke dalam direktori dengan nomor yang sama dengan PID. File hampir identik dengan file untuk PID 1 atau systemd:

$ echo $$
21059
$
$ cd /proc/21059
$ pwd
/proc/21059
$
$
Attr Cmdline Environ io MEM fdinfo   map_files  mountstats  oom_score      projid_map   setgroups  status   wchan
clear_refs  cwd              gid_map  maps       root    _ >

Untuk melihat isi file ini, jalankan proses yang berjalan lama. Buka terminal dan jalankan tty perintah untuk melihat terminal mana yang Anda gunakan. Kemudian ketik kucing perintah dan tekan Enter . Perintah ini akan duduk dan menunggu masukan Anda:

$ tty
/dev/pts/2
$
$ cat

Buka terminal lain dan temukan PID cat menggunakan pgrep perintah:

$ pgrep cat
24335
$

Sekarang, jelajahi file per-proses pertama, cmdline . File ini menunjukkan bagaimana baris perintah dijalankan, jika ada parameter yang digunakan, dll.:

$ cat /proc/24335/cmdline 
cat$

Selanjutnya, lihat direktori bernama cwd , yang merupakan jenis tautan simbolik (symlink) ke direktori tempat cat perintah dieksekusi; dalam hal ini, yaitu /root :

$ ls -l  /proc/24335/cwd
lrwxrwxrwx. 1 root root 0 Mar  4 03:35 /proc/24335/cwd -> /root
$

Jika biner dieksekusi dan proses muncul, itu membuka beberapa file secara default. Secara umum, ini membuka standar di (stdin ), standar keluar (stdout ), dan kesalahan standar (stderr ). Jika Anda mencantumkan fd direktori di bawah /proc/ diikuti oleh PID, Anda dapat melihatnya mengembalikan tiga tautan simbolis, semuanya mengarah ke terminal (pts2 ) yang digunakan untuk menjalankan perintah:

$ ls -l  /proc/24335/fd/
total 0
lrwx------. 1 root root 64 Mar  4 03:35 0 -> /dev/pts/2
lrwx------. 1 root root 64 Mar  4 03:35 1 -> /dev/pts/2
lrwx------. 1 root root 64 Mar  4 03:35 2 -> /dev/pts/2
$

File penting lainnya adalah exe , yang merupakan symlink yang menunjuk ke jalur absolut biner yang dieksekusi. Dalam hal ini, ini adalah jalur kucing perintah:

$ ls -l /proc/24335/exe
lrwxrwxrwx. 1 root root 0 Mar  4 03:35 /proc/24335/exe -> /usr/bin/cat
$

Demikian pula, jika Anda kucing lingkungan file per-proses, Anda dapat melihat semua variabel lingkungan yang ditentukan untuk cat proses:

$ cat /proc/24335/environ 

File penting dalam proc

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Contoh di atas memberikan banyak informasi tentang proses yang berjalan dan sistem Anda secara umum yang dapat membantu dalam proses debug dan pemecahan masalah.

File penting per-proses

Berikut ini adalah file per-proses penting yang harus dicari di /proc/ sistem file:

  • /proc/$pid/cmdline Memegang baris perintah lengkap untuk proses
  • /proc/$pid/cwd Tautan simbolis ke direktori kerja proses saat ini
  • /proc/$pid/environ Berisi lingkungan awal yang disetel saat program dimulai
  • /proc/$pid/exe Tautan simbolis ke jalur file yang dieksekusi
  • /proc/$pid/fd Subdirektori untuk mendaftar file yang telah dibuka oleh proses
  • /proc/$pid/io Berisi statistik I/O untuk proses
  • /proc/$pid/limits Menampilkan batas sumber daya proses
  • /proc/$pid/maps Saat ini wilayah memori yang dipetakan dan izin akses
  • /proc/$pid/stack Jejak pemanggilan fungsi dalam tumpukan kernel proses
  • /proc/$pid/stat Informasi status tentang proses
  • /proc/$pid/task/ Direktori yang berisi informasi utas

File penting di seluruh sistem

Berikut adalah daftar file umum yang penting (yaitu, tidak khusus untuk proses apa pun):

  • /proc/cmdline Argumen diteruskan ke kernel Linux selama waktu boot
  • /proc/cpuinfo Informasi terkait CPU
  • /proc/meminfo Statistik penggunaan memori
  • /proc/filesystems Daftar sistem file yang didukung oleh kernel
  • /proc/modules Modul kernel yang sedang dimuat
  • /proc/partitions Informasi tentang setiap partisi pada sistem
  • /proc/swaps Informasi tentang ruang swap pada sistem
  • /proc/self Direktori mengacu pada proses mengakses /proc sistem file
  • /proc/slabinfo Informasi tentang cache kernel
  • /proc/sys Berbagai file dan sub-direktori tentang variabel kernel

Langkah selanjutnya

Ikhtisar proc . ini filesystem hanya menyentuh pada kemungkinan yang ditawarkannya. Untuk informasi lebih lanjut, periksa proc halaman manual dengan memasukkan man proc perintah atau mengakses versi online halaman manual proc.


Linux
  1. Pengantar menggunakan tcpdump di baris perintah Linux

  2. Menggunakan kekuatan di baris perintah Linux

  3. Menjelajahi sistem file Linux /proc

  1. Periksa Ruang Disk di Linux Menggunakan Perintah df dan du

  2. Inode dan sistem file Linux

  3. Menggunakan perintah mkfs di Linux untuk Memformat Sistem File pada Disk atau Partisi

  1. Kiat untuk menggunakan perintah teratas di Linux

  2. Menggunakan Perintah gratis Linux

  3. Di mana letak sistem file Subsistem Linux di Windows 10?