1. 程式人生 > >登出linux使用者

登出linux使用者

fuser -k /dev/pts/0

pkill -kill -t  pts/0

以上兩個命令的有相同的效果

fuser的一些用法:

fuser 

它的功能:fuser 可以顯示出當前哪個程式在使用磁碟上的某個檔案、掛載點、甚至網路埠,並給出程式程序的詳細資訊. 

訪問型別:fuser顯示使用指定檔案或者檔案系統的程序ID.預設情況下每個檔名後面跟一個字母表示訪問型別。 

訪問型別如下: 

c 代表當前目錄 

e 可執行的被執行 

f 開啟的檔案。預設不顯示。 

F 開啟的檔案,用於寫操作。預設不顯示。 

r 根目錄。 

m 對映檔案或者共享庫。 

當指定的檔案沒有被訪問,或者出現錯誤的時候,fuser會返回非零。 

為了檢視使用tcp和udp套接字的程序,需要-n選項並指定名稱空間。預設IpV4和IpV6都會顯示。套接字可以是本地的或者是遠端的埠,和遠端的地址。所有的域是可選的,但是其前面的','必須存在。如下: 

[lcl_port][,[rmt_host][,[rmt_port]]] 

對於ip地址和port,名稱和數字表示都可以使用。 

fuser只把PID輸出到標準輸出,其他的都輸出到標準錯誤輸出。 

一些常用選項: 

-a 顯示所有命令列中指定的檔案,預設情況下被訪問的檔案才會被顯示。 

-c 和-m一樣,用於POSIX相容。 

-k 殺掉訪問檔案的程序。如果沒有指定-signal就會發送SIGKILL訊號。 

-i 殺掉程序之前詢問使用者,如果沒有-k這個選項會被忽略。 

-l 列出所有已知的訊號名稱。 

-m name 指定一個掛載檔案系統上的檔案或者被掛載的塊裝置(名稱name)。這樣所有訪問這個檔案或者檔案系統的程序都會被列出來。如果指定的是一個目錄會自動轉換成"name/",並使用所有掛載在那個目錄下面的檔案系統。 

-n space 指定一個不同的名稱空間(space).這裡支援不同的空間檔案(檔名,此處預設)、tcp(本地tcp埠)、udp(本地udp埠)。對於埠, 可以指定埠號或者名稱,如果不會引起歧義那麼可以使用簡單表示的形式,例如:name/space (即形如:80/tcp之類的表示)。 

-s 靜默模式,這時候-u,-v會被忽略。-a不能和-s一起使用。 

-signal 使用指定的訊號,而不是用SIGKILL來殺掉程序。可以通過名稱或者號碼來表示訊號(例如-HUP,-1),這個選項要和-k一起使用,否則會被忽略。 

-u 在每個PID後面新增程序擁有者的使用者名稱稱。 

-v 詳細模式。輸出似ps命令的輸出,包含PID,USER,COMMAND等許多域,如果是核心訪問的那麼PID為kernel. 

-V 輸出版本號。 

-4 使用IPV4套接字,不能和-6一起應用,只在-n的tcp和udp的命名存在時不被忽略。 

-6 使用IPV6套接字,不能和-4一起應用,只在-n的tcp和udp的命名存在時不被忽略。 

- 重置所有的選項,把訊號設定為SIGKILL. 

案例如下:

*顯示使用某個檔案的程序資訊: 

$ fuser -um /dev/sda2 

輸入之後,輸出如下: 

/dev/sda2:            6378c(quietheart)  6534c(quietheart)  6628(quietheart)  6653c(quietheart)  7429c(quietheart)  7549c(quietheart)  7608c(quietheart) 

這個命令在umount的時候很有用,可以找到還有哪些用到這個裝置了。 

*殺掉開啟readme檔案的程式,在確定之前有提示:

$fuser -m -k -i readme 

$fuser -kmi readme 

這裡,會在kill之前詢問是否確定。最好加上-v以便知道將要殺那個程序。 

*檢視那些程式使用tcp80埠:

$fuser -n tcp 80 

$fuser -v -n tcp 80 

$fuser -v 80/tcp 

這裡,後兩種方式顯示的資訊比較全,因為有了-v選項。 

*假設無法解除安裝的裝置為/dev/sdb1 

1)執行下面命令看一下哪個使用者哪個程序佔用著此裝置 

fuser -m -v /dev/sdb1 

2)執行下面命令殺掉佔用此裝置的程序 

fuser -m -v -k /dev/sdb1 

或者fuser -m -v -k -i  /dev/sdb1(每殺掉一下程序會讓你確認) 

3)再umount 

4)掃描/dev/sdb1分割槽

[/sbin/]fsck [-ay]  /dev/sdb1

*殺掉所有以任何形式訪問檔案系統 /home的程序: 

$fuser -km /home