Utilitas fuser di Linux adalah alat yang ampuh. Seperti namanya, ini memberikan informasi tentang pengguna file atau proses yang sedang menggunakan file atau direktori.
Namun fungsi fuser tidak hanya sebatas memberikan informasi tentang proses. Artikel ini menjelaskan cara menggunakan utilitas fuser dengan 5 contoh praktis.
1. Siapa yang Menggunakan File atau Direktori?
Ini adalah penggunaan dasar dari perintah fuser. yaitu untuk Mengidentifikasi proses mana yang menggunakan file atau direktori tertentu.
$ fuser . ./: 3965c 4175c 4281c 4334c 4337c
Dalam contoh di atas kami menggunakan utilitas fuser untuk menemukan semua proses menggunakan direktori saat ini ‘./’ .
Kami melihat bahwa output terdiri dari ID proses dari proses yang menggunakan fuser tetapi semua PID diikuti oleh karakter 'c'. Ini menunjukkan jenis akses. Jenis akses dapat berupa salah satu dari berikut ini:
- c direktori saat ini
- e yang dapat dieksekusi 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 pustaka bersama
Jadi 'c' dalam output akan berarti bahwa proses ini menggunakan direktori ini sebagai direktori mereka saat ini.
Gunakan Option -v untuk menampilkan informasi rinci dalam output:
$ fuser -v ./ USER PID ACCESS COMMAND ./: himanshu 3965 ..c.. bash himanshu 4175 ..c.. gedit himanshu 4281 ..c.. bash himanshu 4334 ..c.. socket_serv himanshu 4337 ..c.. bash
Jadi kita lihat di atas bahwa menjalankan fuser pada direktori saat ini memberikan informasi tentang semua proses yang menggunakan direktori ini.
2. fuser pada Executable
socket_serv adalah program C yang dapat dieksekusi yang merupakan server TCP yang mendengarkan pada port tertentu.
$ ./socket_serv
Saat Anda menjalankan fuser pada executable ini, Anda akan melihat yang berikut:
$ fuser -v socket_serv USER PID ACCESS COMMAND socket_serv: himanshu 4334 ...e. socket_serv
Penentu akses dalam contoh ini adalah 'e'. Ini berbeda dari penentu akses yang kita lihat pada contoh di atas. Ini menyampaikan bahwa file tersebut dapat dieksekusi.
3. Periksa Proses Menggunakan Soket TCP/UDP
Menggunakan fuser kami juga dapat memeriksa proses menggunakan soket TCP/UDP. Karena contoh program C socket_serv yang dinyatakan di atas yang dapat dieksekusi berjalan pada port TCP 5000, mari gunakan utilitas fuser pada soket ini.
$ fuser -v -n tcp 5000 USER PID ACCESS COMMAND 5000/tcp: himanshu 4334 F.... socket_serv
Jadi kita melihat bahwa fuser memberikan semua informasi rinci tentang proses yang berjalan pada port TCP 5000.
Selain contoh di atas, kita dapat menggunakan tanda ‘-m’ dengan utilitas ini untuk menampilkan proses menggunakan sistem file yang terpasang seperti drive USB.
4. Matikan Proses yang Menggunakan Program tertentu
Sampai sekarang kita mengetahui bahwa fuser menyediakan informasi tentang proses menggunakan file, direktori, soket, dll. Tetapi kekuatan utilitas ini tidak terbatas pada penyediaan informasi saja. Anda juga dapat menghentikan proses menggunakan utilitas ini.
Kami melihat bahwa server TCP sedang berjalan pada sistem yang mengakses file biner 'socket_serv'. Sekarang, mari kita coba mematikan proses menggunakan file biner ini menggunakan fuser.
$ fuser -v -k socket_serv USER PID ACCESS COMMAND socket_serv: himanshu 4334 ...e. socket_serv
Perhatikan bahwa kita telah menggunakan flag '-k' untuk mematikan proses menggunakan file 'socket_serv'. Mari kita lihat di terminal lain tempat server dijalankan.
$ ./socket_serv Killed
Kami telah menjelaskan kepada Anda bagaimana Anda dapat mematikan proses menggunakan 4 metode berbeda. Sekarang Anda tahu satu lagi metode untuk mematikan proses.
5. Membunuh Proses secara Interaktif menggunakan fuser
Pada contoh di atas kita melihat bahwa flag '-k' digunakan ketika kita ingin mematikan proses menggunakan file tertentu tetapi untuk menghindari penghentian proses secara tidak sengaja, opsi lain '-i' ada. Jika kita menggunakan opsi ini maka 'fuser' akan berjalan dalam mode interaktif dan akan bertanya sebelum mematikan proses. Lihat contoh di bawah.
$ fuser -v -k -i socket_serv USER PID ACCESS COMMAND socket_serv: himanshu 5643 ...e. socket_serv Kill process 5643 ? (y/N) y
Jadi kita melihat bahwa menggunakan '-k' dan '-i' kita dapat secara selektif mematikan proses menggunakan file tertentu.
Sekarang, ini adalah penggunaan perintah 'fuser' yang sangat kuat.
Misalkan Anda ingin menghapus file secara paksa tetapi sedang digunakan oleh banyak proses maka proses tidak akan membiarkan Anda menghapus file tersebut. Dalam hal ini, Anda dapat menggunakan utilitas fuser untuk mematikan semua proses (atau proses yang dipilih) yang menggunakan file tersebut.
$ fuser -v -k -i ./ USER PID ACCESS COMMAND ./: himanshu 3965 ..c.. bash himanshu 4175 ..c.. gedit himanshu 4281 ..c.. bash himanshu 4334 ..c.. socket_serv himanshu 4337 ..c.. bash Kill process 3965 ? (y/N) y Kill process 4175 ? (y/N) y Kill process 4281 ? (y/N) y Kill process 4334 ? (y/N) y Kill process 4337 ? (y/N) y
Perhatikan bahwa penggunaan '-k' mengirimkan sinyal SIGKILL ke proses yang menggunakan file tertentu. Kita dapat menggunakan opsi -SIGNAL untuk mengirim sinyal lain. Daftar sinyal yang didukung oleh fuser diberikan oleh:
$ fuser -l HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS UNUSED
Misalnya, berikut ini mengirimkan SIGHUP alih-alih SIGKILL, saat Anda menggunakan opsi -k.
$ fuser -v -k -HUP -i ./