GNU/Linux >> Belajar Linux >  >> Linux

Cara menggunakan dan memaksimalkan perintah fuser di Linux

Misalkan Anda diberi tugas untuk mengidentifikasi proses yang menggunakan file tertentu, dan kemudian membunuhnya satu per satu - semua ini harus dilakukan dari baris perintah. Apa yang akan kamu lakukan? Nah, jika Anda seorang pemula baris perintah, saya yakin Anda tidak tahu apa-apa, meminta bantuan.

Tetapi pro baris perintah kemungkinan akan memiliki gagasan bahwa ada utilitas baris perintah di Linux yang memungkinkan Anda mengidentifikasi proses berdasarkan file (atau direktori, atau soket) yang mereka akses. Tidak hanya itu, alat ini juga memungkinkan Anda untuk mematikan proses ini, jadi Anda tidak perlu menggunakan tombol kill atau bunuh semua perintah secara terpisah. Utilitas baris perintah yang sedang kita bicarakan adalah fuser .

Jika Anda belum mengetahui utilitas ini dan ingin memahami cara menggunakannya, tidak perlu mencari lagi, karena dalam artikel ini, kita akan membahas fuser secara detail, melalui beberapa contoh yang mudah dipahami.

Namun sebelum kita melanjutkan, harap diingat bahwa semua contoh, perintah, dan instruksi yang disebutkan dalam tutorial ini telah diuji pada Ubuntu 16.04 LTS, dan fuser versi perintah yang kami gunakan adalah 22.21.

Perintah fuser Linux

pelebur perintah - seperti yang telah saya sebutkan di atas - terutama digunakan untuk mengidentifikasi proses menggunakan file, direktori, atau soket. Alat ini pada dasarnya menampilkan PID proses yang menggunakan file yang namanya diteruskan sebagai argumen ke perintah.

Ini pelebur perintah beraksi dalam bentuk paling dasar:

Seperti yang terlihat dari tangkapan layar di atas, kami mencoba menggunakan fuser untuk mengetahui proses mana yang menggunakan /home/himanshu direktori, dan perintah - dalam outputnya - menghasilkan daftar ID proses. Sejauh ini bagus, tapi ada beberapa masalah di sini.

Pertama, apa 'c' yang ditambahkan ke setiap PID? Sekilas melihat halaman manual perintah menunjukkan bahwa dalam mode tampilan default, fuser perintah tidak hanya menampilkan PID dari proses yang mengakses file atau direktori, tetapi juga menampilkan jenis akses.

Setiap jenis akses dilambangkan dengan huruf:

  • c - direktori saat ini.
  • e - executable sedang dijalankan.
  • f - buka file. f dihilangkan dalam mode tampilan default.
  • F - membuka file untuk menulis. F dihilangkan dalam mode tampilan default.
  • r - direktori root.
  • m - file yang dipetakan atau perpustakaan bersama.

Sekarang, kembali ke contoh yang kita diskusikan, huruf 'c' pada output menunjukkan bahwa semua proses yang PID-nya tercantum dalam output sedang mengakses /home/himanshu direktori sebagai direktori mereka saat ini.

Ingatlah bahwa suatu proses dapat memiliki beberapa jenis akses untuk file atau direktori. Sebagai contoh, output berikut menunjukkan bahwa direktori root (/) sedang diakses oleh banyak proses seperti direktori root dan saat ini.

Sampai sekarang, fuser keluaran yang kami lihat hanya berisi ID proses, dan tidak lebih dari itu. Bukankah lebih baik jika nama proses juga ditampilkan? Nah, untuk itu Anda perlu menggunakan -v opsi baris perintah. Berikut ini contohnya:

Selanjutnya, untuk menambahkan nama pengguna dari pemilik proses ke setiap PID, gunakan -u opsi baris perintah. Ini contohnya:

Catatan:Jika file atau direktori yang dimaksud terletak di sistem file terpasang atau perangkat blok, gunakan -m opsi baris perintah. "Semua proses yang mengakses file pada sistem file tersebut akan dicantumkan," kata halaman manual. "Jika file direktori ditentukan, file tersebut   otomatis diubah menjadi NAME/. untuk menggunakan sistem file apa pun yang mungkin dipasang pada direktori tersebut."

Cara mematikan proses menggunakan fuser

Sekarang kita telah membahas fuser dasar-dasar, mari kita ke tugas yang saya sebutkan di awal - cara mematikan proses menggunakan fuser ? Mari kita ambil contoh sederhana untuk kasus ini. Apa yang akan saya lakukan adalah, saya akan menjalankan executable dan ketika sedang berjalan, saya akan mencoba mematikan proses menggunakan fuser .

Jadi, inilah executable yang telah diluncurkan:

Dan inilah fuser perintah yang idealnya harus mematikan proses yang dimulai oleh test-fuser dapat dieksekusi.

fuser -v -k test-fuser

Oh, sebelum saya melanjutkan dan menjalankan perintah ini, izinkan saya memberi tahu Anda bahwa -k opsi baris perintah memberi tahu fuser untuk mematikan proses (atau proses) menggunakan file atau direktori.

Inilah yang terjadi ketika perintah yang disebutkan di atas dijalankan:

Seperti yang terlihat dari tangkapan layar di atas, menggunakan -k opsi baris perintah dengan fuser membunuh test-fuser proses. Untuk memastikan bahwa fuser perintah meminta konfirmasi pengguna sebelum menghentikan proses, gunakan -i pilihan. Lihat contoh di bawah ini:

Berikut adalah beberapa detail penting terkait fuser yang harus Anda ketahui saat menggunakan opsi -k:

  • Dengan -k, perintah fuser mengirimkan sinyal SIGKILL secara default. Namun Anda dapat mengubah perilaku ini dengan menggunakan opsi -SIGNAL.
  • Proses fuser tidak pernah mematikan dirinya sendiri, tetapi dapat mematikan proses fuser lainnya.

fuser - detail lainnya

Selain informasi yang disebutkan sejauh ini, ada beberapa detail lain yang perlu diingat. Semua informasi itu dapat diakses dengan menuju ke halaman manual perintah. Misalnya, berikut adalah informasi yang fuser daftar halaman manual di bagian 'Pembatasan':

       Processes accessing the same file or file system several times  in  the
       same way are only shown once.

       If the same object is specified several times on the command line, some
       of those entries may be ignored.

       fuser may only be able to gather partial information  unless  run  with
       privileges.   As  a consequence, files opened by processes belonging to
       other users may not be listed and  executables  may  be  classified  as
       mapped only.

       Installing  fuser SUID root will avoid problems associated with partial
       information, but may be undesirable for security and privacy reasons.

       udp and tcp name spaces, and UNIX domain sockets can't be searched with
       kernels older than 1.3.78.

       Accesses by the kernel are only shown with the -v option.

       The  -k  option  only  works  on processes.  If the user is the kernel,
       fuser will print an advice, but take no action beyond that.

Kesimpulan

Seperti yang sudah Anda pahami sekarang, fuser adalah utilitas baris perintah yang sangat berguna di Linux. Hal baiknya adalah alat ini tidak sulit untuk dipahami atau digunakan, sehingga pemula pun dapat dengan mudah memulainya. Satu aspek yang tidak kami sentuh di sini adalah bahwa perintah tersebut memungkinkan Anda untuk mengidentifikasi dan bahkan mematikan proses yang berjalan pada port tertentu, menjadikannya alat yang juga sulit untuk diabaikan oleh admin jaringan.


Linux
  1. Cara menggunakan perintah grep Linux

  2. Cara menggunakan perintah history di Linux

  3. Cara Menggunakan Perintah id di Linux

  1. Cara Membuat Alias ​​​​dan Menggunakan Perintah Alias ​​​​di Linux

  2. Cara Menginstal dan Menggunakan Perintah Ping di Linux

  3. Cara menggunakan perintah "layar" di Linux

  1. Cara Menggunakan Perintah sejarah Linux

  2. Cara Menggunakan Perintah Linux xargs

  3. Cara Menggunakan Perintah tee Linux