Posted on 2009-06-03 18:47
Prayer 閱讀(787)
評論(0) 編輯 收藏 引用 所屬分類:
Shell 、
LINUX/UNIX/AIX
用fuser殺掉進(jìn)程
一,為什么要使用fuser?
先說 fuser的作用,
fuser能識別出正在對某個(gè)文件或端口訪問的進(jìn)程
大家想一下,還有哪個(gè)命令具備這個(gè)功能?
沒錯(cuò),是lsof,
我們前面講過, lsof能夠找出正在對指定文件訪問的進(jìn)程,
那么它們兩者之間有何區(qū)別?
fuser有一個(gè)特別的用法在于它可以一次殺死那些正在訪問指定文件的進(jìn)程
二,如何使用fuser?
1,如何用fuser得到正在使用指定文件的進(jìn)程?
用法: fuser 文件
說明:它會把正在使用當(dāng)前文件的進(jìn)程id列出
[root@localhost lhd]# umount /
umount: /: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@localhost lhd]# fuser /
/: 1rc 2rc 3rc 4rc 5rc 6rc 7rc 80rc 82rc 84rc 85rc 153rc 157rc 158rc
160rc 165rc 168rc 203rc 204rc 205rc 253rc 441rc 444rc 516rc 521rc 524rc 582rc 583rc
584rc 633rc 1052rc 1392rc 1394rc 1417rc 1597rc 1609rc 1617rc 1620rc 1683rc 1744rc 1783r 1785rc
1788rc 1806r 1808r 1810rc 1811rc 1812rc 1813rc 1814rc 1815rc 1848rc 1886rc 1899rc 1900rc 2001rc
......太多不一一列出
說明:
這些進(jìn)程號后面的rc是什么意思?
c 將此文件作為當(dāng)前目錄使用。
e 將此文件作為程序的可執(zhí)行對象使用。
r 將此文件作為根目錄使用。
s 將此文件作為共享庫(或其他可裝載對象)使用
2,如何列出進(jìn)程的詳細(xì)信息,而不僅僅是進(jìn)程id?
用 -v參數(shù)即可
說明: -v: 含義是:verbose output,詳細(xì)的輸出信息
例子:
[root@dev ~]# fuser /var/log
/var/log: 4196c
[root@dev ~]# fuser -v /var/log
USER PID ACCESS COMMAND
/var/log: root 4196 ..c.. bash
3,如何列出進(jìn)程所屬的用戶?
用 -u參數(shù)即可
說明: -u: 含義:display user IDs,顯示用戶id
例子:
[root@dev ~]# fuser -u /var/log
/var/log: 4196c(root)
4,如何殺死所有正在訪問指定文件的進(jìn)程?
用 -k參數(shù)即可
說明: -k:含義: kill processes accessing the named file
例子:
[root@localhost lhd]# fuser -v /root/install.log
用戶 進(jìn)程號 權(quán)限 命令
/root/install.log: root 3185 f.... tail
[root@localhost lhd]# fuser -k /root/install.log
/root/install.log: 3185
[root@localhost lhd]# fuser -v /root/install.log
說明: -k參數(shù)能夠殺死所有的正在訪問指定文件的進(jìn)程,所以用來殺進(jìn)程時(shí)非常方便
說明之二: fuser如何殺死的進(jìn)程?
它發(fā)送的是這個(gè)信號:SIGKILL
三,多學(xué)一點(diǎn)知識
1,fuser可以列出它所知的信號:
用 -l參數(shù)即可
例子:
[root@dev ~]# 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
2,fuser可以發(fā)送它已知的信號給訪問的指定文件進(jìn)程而代替-k參數(shù)默認(rèn)發(fā)送的SIGKILL
例如:只是掛起進(jìn)程,那么發(fā)送HUP信號就可以了
例子:
[root@localhost lhd]# fuser -v /root/install.log
用戶 進(jìn)程號 權(quán)限 命令
/root/install.log: root 3347 f.... tail
[root@localhost lhd]# fuser -k -SIGHUP /root/install.log
/root/install.log: 3347
[root@localhost lhd]# fuser -v /root/install.log