知道進程名怎樣殺死這個進程。
#pkill 進程名
或是
#killall 進程名
的確這個兩個命令都能做到這些,而且我們平時一般知道進程名需要殺死進程的時候也都是用的這兩個命令。可是他叫我用kill 命令來完成這個一操作。我們知道kill 要殺死進程是需要知道進程的id的即進程號,其實這個思路就是需要通過其他命令獲取相應進程的進程號,然后用kill 殺掉。
這里提供兩個方法:
1、#kill -9 $(ps -ef|grep 進程名關鍵字|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')這個是利用管道和替換將 進程名對應的進程號提出來作為kill的參數。
很顯然上面的方法能完成但是過於復雜,下面這種就顯得簡單的多了
2、#kill -9 $(pidof 進程名關鍵字)
常規篇:
首先,用ps查看進程,方法如下:
$ ps -ef
……
smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal
smx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helper
smx 1824 1822 0 11:38 pts/0 00:00:02 bash
smx 1827 1 4 11:38 ? 00:26:28 /usr/lib/firefox-3.6.18/firefox-bin
smx 1857 1822 0 11:38 pts/1 00:00:00 bash
smx 1880 1619 0 11:38 ? 00:00:00 update-notifier
……
smx 11946 1824 0 21:41 pts/0 00:00:00 ps -ef
或者:
$ ps -aux
……
smx 1822 0.1 0.8 58484 18152 ? Sl 11:38 0:49 gnome-terminal
smx 1823 0.0 0.0 1988 712 ? S 11:38 0:00 gnome-pty-helper
smx 1824 0.0 0.1 6820 3776 pts/0 Ss 11:38 0:02 bash
smx 1827 4.3 5.8 398196 119568 ? Sl 11:38 26:13 /usr/lib/firefox-3.6.18/firefox-bin
smx 1857 0.0 0.1 6688 3644 pts/1 Ss 11:38 0:00 bash
smx 1880 0.0 0.6 41536 12620 ? S 11:38 0:00 update-notifier
……
smx 11953 0.0 0.0 2716 1064 pts/0 R+ 21:42 0:00 ps -aux
此時如果我想殺了火狐的進程就在終端輸入:
$ kill -s 9 1827
其中-s 9 制定了傳遞給進程的信號是9,即強制、盡快終止進程。各個終止信號及其作用見附錄。
進階篇:
改進1:
把ps的查詢結果通過管道給grep查找包含特定字符串的進程。管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。
$ ps -ef | grep firefox
smx 1827 1 4 11:38 ? 00:27:33 /usr/lib/firefox-3.6.18/firefox-bin
smx 12029 1824 0 21:54 pts/0 00:00:00 grep --color=auto firefox
這次就清爽了。然后就是
$kill -s 9 1827
改進2——使用pgrep:
一看到pgrep首先會想到什么?沒錯,grep!pgrep的p表明了這個命令是專門用於進程查詢的grep。
$ pgrep firefox
1827
看到了什么?沒錯火狐的PID,接下來又要打字了:
$kill -s 9 1827
改進3——使用pidof:
看到pidof想到啥?沒錯pid of xx,字面翻譯過來就是 xx的PID。
$ pidof firefox-bin
1827
和pgrep相比稍顯不足的是,pidof必須給出進程的全名。然后就是老生常談:
$kill -s 9 1827
無論使用ps 然后慢慢查找進程PID 還是用grep查找包含相應字符串的進程,亦或者用pgrep直接查找包含相應字符串的進程PID,然后手動輸入給kill殺掉,都稍顯麻煩。有沒有更方便的方法?有!
改進4:
$ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9
說明:
“grep firefox”的輸出結果是,所有含有關鍵字“firefox”的進程。
“grep -v grep”是在列出的進程中去除含有關鍵字“grep”的進程。
“cut -c 9-15”是截取輸入行的第9個字符到第15個字符,而這正好是進程號PID。
“xargs kill -s 9”中的xargs命令是用來把前面命令的輸出結果(PID)作為“kill -s 9”命令的參數,並執行該命令。“kill -s 9”會強行殺掉指定進程。
難道你不想抱怨點什么?沒錯太長了
改進5:
知道pgrep和pidof兩個命令,干嘛還要打那么長一串!
$ pgrep firefox | xargs kill -s 9
改進6:
$ ps -ef | grep firefox | awk '{print $2}' | xargs kill -9
kill: No such process
有一個比較郁悶的地方,進程已經正確找到並且終止了,但是執行完卻提示找不到進程。
其中awk '{print $2}' 的作用就是打印(print)出第二列的內容。根據常規篇,可以知道ps輸出的第二列正好是PID。就把進程相應的PID通過xargs傳遞給kill作參數,殺掉對應的進程。
改進7:
難道每次都要調用xargs把PID傳遞給kill?答案是否定的:
$kill -s 9 `ps -aux | grep firefox | awk '{print $2}'`
改進8:
沒錯,命令依然有點長,換成pgrep。
$kill -s 9 `pgrep firefox`
改進9——pkill:
看到pkill想到了什么?沒錯pgrep和kill!pkill=pgrep+kill。
$pkill -9 firefox
說明:"-9" 即發送的信號是9,pkill與kill在這點的差別是:pkill無須 “s”,終止信號等級直接跟在 “-“ 后面。之前我一直以為是 "-s 9",結果每次運行都無法終止進程。
改進10——killall:
killall和pkill是相似的,不過如果給出的進程名不完整,killall會報錯。pkill或者pgrep只要給出進程名的一部分就可以終止進程。
$killall -9 firefox
附錄:各種信號及其用途
Signal Description Signal number on Linux x86[1]
SIGABRT Process aborted 6
SIGALRM Signal raised by alarm 14
SIGBUS Bus error: "access to undefined portion of memory object" 7
SIGCHLD Child process terminated, stopped (or continued*) 17
SIGCONT Continue if stopped 18
SIGFPE Floating point exception: "erroneous arithmetic operation" 8
SIGHUP Hangup 1
SIGILL Illegal instruction 4
SIGINT Interrupt 2
SIGKILL Kill (terminate immediately) 9
SIGPIPE Write to pipe with no one reading 13
SIGQUIT Quit and dump core 3
SIGSEGV Segmentation violation 11
SIGSTOP Stop executing temporarily 19
SIGTERM Termination (request to terminate) 15
SIGTSTP Terminal stop signal 20
SIGTTIN Background process attempting to read from tty ("in") 21
SIGTTOU Background process attempting to write to tty ("out") 22
SIGUSR1 User-defined 1 10
SIGUSR2 User-defined 2 12
SIGPOLL Pollable event 29
SIGPROF Profiling timer expired 27
SIGSYS Bad syscall 31
SIGTRAP Trace/breakpoint trap 5
SIGURG Urgent data available on socket 23
SIGVTALRM Signal raised by timer counting virtual time: "virtual timer expired" 26
SIGXCPU CPU time limit exceeded 24
SIGXFSZ File size limit exceeded 25
這是本人花了兩天時間整理得來的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf手冊下載
1. 更改檔案擁有者
命令 : chown [-cfhvR] [--help] [--version] user[:group] file...
功能 : 更改文件或者文件夾的擁有者
參數格式 :
user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(group)
-c : 若該檔案擁有者確實已經更改,才顯示其更改動作
-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息
-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案
-v : 顯示擁有者變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)
例如:chown -R oracle:oinstall /oracle/u01/app/oracle
更改目錄擁有者為oracle
2. 修改權限
命令:chmod (change mode)
功能:改變文件的讀寫和執行權限。有符號法和八進制數字法。
選項:(1)符號法:
命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename
u (user) 表示用戶本人。
g (group) 表示同組用戶。
o (oher) 表示其他用戶。
a (all) 表示所有用戶。
+ 用於給予指定用戶的許可權限。
- 用於取消指定用戶的許可權限。
= 將所許可的權限賦給文件。
r (read) 讀許可,表示可以拷貝該文件或目錄的內容。
w (write) 寫許可,表示可以修改該文件或目錄的內容。
x (execute)執行許可,表示可以執行該文件或進入目錄。
(2)八進制數字法:
命令格式:chmod abc file
其中a,b,c各為一個八進制數字,分別表示User、Group、及Other的權限。
4 (100) 表示可讀。
2 (010) 表示可寫。
1 (001) 表示可執行。
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。
例如:# chmod a+rx filename
讓所有用戶可以讀和執行文件filename。
# chmod go-rx filename
取消同組和其他用戶的讀和執行文件filename的權限。
# chmod 741 filename
讓本人可讀寫執行、同組用戶可讀、其他用戶可執行文件filename。
# chmod -R 755 /home/oracle
遞歸更改目錄權限,本人可讀寫執行、同組用戶可讀可執行、其他用戶可讀可執行
3. 修改文件日期
命令:touch
格式:touch filenae
功能:改變文件的日期,不對文件的內容做改動,若文件不存在則建立新文件。
例如:% touch file
4. 鏈接文件
命令:ln (link)
格式:ln [option] filename linkname
ln [option] directory pathname
功能:為文件或目錄建立一個鏈。其中,filename和directory是源文件名和
源目錄名;linkname和pathname分別表示與源文件或源目錄名相鏈接的
文件或目錄。
選項:-s 為文件或目錄建立符號鏈接。不加-s表示為文件或目錄建立硬鏈接
注釋:鏈接的目地在於,對一個文件或目錄賦予兩個以上的名字,使其可以出
現在不同的目錄中,既可以使文件或目錄共享,又可以節省磁盤空間。
例如:% ln -s filename linkname
5. 顯示日期
命令:date
例如:% date
6. 顯示日歷
命令:cal (calendar)
格式:cal [month] year
功能:顯示某年內指定的日歷
例如:% cal 1998
7. 顯示文件頭部
命令:head
格式:head [option] filename
功能:顯示文件的頭部
選項:缺省 顯示文件的頭10行。
-i 顯示文件的開始 i行。
例如:% head filename
8. 顯示文件尾部
命令:tail
格式:tail [option] filename
功能:顯示文件的尾部
選項:缺省 顯示文件的末10行。
-i 顯示文件最后 i行。
+i 從文件的第i行開始顯示。
例如:% tail filename
9. 顯示用戶標識
命令:id
格式:id [option] [user]
功能:顯示用戶標識及用戶所屬的所有組。
選項:-a 顯示用戶名、用戶標識及用戶所屬的所有組
注釋:
例如:% id username
10. 查看當前登錄的用戶
命令:users
11. 顯示都誰登錄到機器上
命令:who
格式:who
功能:顯示當前正在系統中的所有用戶名字,使用終端設備號,注冊時間。
例如:% who
12. 顯示當前終端上的用戶名
命令:whoami
格式:whoami
功能:顯示出當前終端上使用的用戶。
例如:% whoami
13. 尋找文件
命令:find
格式:find pathname [option] expression
功能:在所給的路經名下尋找符合表達式相匹配的文件。
選項:-name 表示文件名
-user 用戶名,選取該用戶所屬的文件
-size 按大小查找,以block為單位,一個block是512B
-mtime n 按最后一次修改時間查找,選取n天內被修改的文件
-perm 按權限查找
-type 按文件類型查找
-atime 按最后一次訪問時間查找
例如:% find ./ -name '*abc*' -print
14. 搜索文件中匹配符
命令:grep
格式:grep [option] pattern filenames
功能:逐行搜索所指定的文件或標准輸入,並顯示匹配模式的每一行。
選項:-i 匹配時忽略大小寫
-v 找出模式失配的行
例如:% grep -i 'java*' ./test/run.sh
15. 統計文件字數
命令:wc [option] filename
功能:統計文件中的文件行數、字數和字符數。
選項:-l 統計文件的行數
-w 統計文件的單詞數
-c 統計文件的字符數
注釋:若缺省文件名則指標准輸入
例如:% wc -c ./test/run.sh
16. 顯示磁盤空間
命令:df (disk free)
格式:df [option]
功能:顯示磁盤空間的使用情況,包括文件系統安裝的目錄名、塊設備名、總
字節數、已用字節數、剩余字節數占用百分比。
選項:
-a:顯示全部的檔案系統和各分割區的磁盤使用情形
-i:顯示i -nodes的使用量
-k:大小用k來表示 (默認值)
-t:顯示某一個檔案系統的所有分割區磁盤使用量
-x:顯示不是某一個檔案系統的所有分割區磁盤使用量
-T:顯示每個分割區所屬的檔案系統名稱
-h: 表示使用「Human-readable」的輸出,也就是在檔案系統大小使用 GB、MB 等易讀的格式。
注釋:
例如:% df -hi
17. 查詢檔案或目錄的磁盤使用空間
命令:du (disk usage)
格式:du [option] [filename]
功能:以指定的目錄下的子目錄為單位,顯示每個目錄內所有檔案所占用的磁盤空間大小
選項:
-a:顯示全部目錄和其次目錄下的每個檔案所占的磁盤空間
-b:大小用bytes來表示 (默認值為k bytes)
-c:最后再加上總計 (默認值)
-s:只顯示各檔案大小的總合
-x:只計算同屬同一個檔案系統的檔案
-L:計算所有的檔案大小
-h: 表示檔案系統大小使用 GB、MB 等易讀的格式。
例如:% du -a
% du -sh /etc 只顯示該目錄的總合
% du /etc | sort -nr | more 統計結果用sort 指令進行排序,
sort 的參數 -nr 表示要以數字排序法進行反向排序。
18. 顯示進程
命令:ps
格式:ps [option]
功能:顯示系統中進程的信息。包括進程ID、控制進程終端、執行時間和命令。
選項:
-a 顯示所有進程信息
-U uidlist 列出這個用戶的所有進程
-e 顯示當前運行的每一個進程信息
-f 顯示一個完整的列表
-x 顯示包括沒有終端控制的進程狀況 。
注釋:
例如:% ps -ef
% ps -aux 然后再利用一個管道符號導向到grep去查找特定的進程,然后再對特定的進程進行操作。
19. 終止進程
命令:kill
格式:kill [option] pid
功能:向指定的進程送信號或終止進程。kill指令的用途是送一個signal給某一個process,
因為大部份送的都是用來殺掉 process 的 SIGKILL 或 SIGHUP ,因此稱為 kill
選項:-9 強行終止進程
注釋:pid標示進程號,可由ps命令得到。
例如:% kill -9 pid
你也可以用 kill -l 來察看可代替 signal 號碼的數目字。kill 的詳細情形請參閱 man kill。
20. 查看自己的IP地址
命令:ifconfig
格式:ifconfig -a
21. 查看路由表
命令:netstat
格式:netstat -rn
22. 遠程登錄
命令:telnet
格式:telnet hostname
23. 文件傳輸
命令:ftp (file transfer program)
格式:ftp hostname
功能:網絡文件傳輸及遠程操作。
選項:ftp命令:
cd [dirname] 進入遠程機的目錄
lcd [dirname] 設置本地機的目錄
dir/ls 顯示遠程的目錄文件
bin 以二進制方式進行傳輸
asc 以文本文件方式進行傳輸
get/mget 從遠程機取一個或多個文件
put/mput 向遠程機送一個或多個文件
prompt 打開或關閉多個文件傳送時的交互提示
close 關閉與遠程機的連接
quit 退出ftp
!/exit ftp登陸狀態下,!表示暫時退出ftp狀態回到本地目錄,exit表示返回ftp狀態
注釋:
例如:% ftp hostname
24. 查看自己的電子郵件
命令:mailx
格式:mailx
選項:
delete 刪除
next 下一個
quit 退出
reply 回復
25. 回憶命令
命令:history
格式:history
功能:幫助用戶回憶執行過的命令。
選項:
注釋:
例如:% history
26. 網上對話
命令:talk
格式:talk username
功能:在網上與另一用戶進行對話。
選項:
注釋:對話時系統把終端分為上下兩部分,上半部顯示自己鍵入信息,下半部
顯示對方用戶鍵入的信息。鍵入delete或Ctrl+C則結束對話。
例如:% talk username
27. 允許或拒絕接受信息
命令:mesg (message)
格式:mesg [n/y]
功能:允許或拒絕其它用戶向自己所用的終端發送信息。
選項:n 拒絕其它用戶向自己所用的終端寫信息
y 允許其它用戶向自己所用的終端寫信息(缺省值)
注釋:
例如:% mesg n
28. 給其他用戶寫信息
命令:write
格式:write username [ttyname]
功能:給其他用戶的終端寫信息。
選項:
注釋:若對方沒有拒絕,兩用戶可進行交談,鍵入EOF或Ctrl+C則結束對話。
例如:write username
29. 創建、修改、刪除用戶和群組
a. 創建群組:
例如: groupadd oinstall 創建群組名為oinstall的組
groupadd -g 344 dba
創建組號是344的組,此時在/etc/passwd文件中產生一個組ID(GID)是344的項目。
b. 修改群組:
groupmod:該命令用於改變用戶組帳號的屬性
groupmod –g 新的GID 用戶組帳號名
groupmod –n 新組名 原組名:此命令由於改變用戶組的名稱
c. 刪除群組:
groupdel 組名:該命令用於刪除指定的組帳號
d. 新建用戶:
命令: useradd [-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] [-r] name
主要參數
-c:加上備注文字,備注文字保存在passwd的備注欄中。
-d:指定用戶登入時的啟始目錄。
-D:變更預設值。
-e:指定賬號的有效期限,缺省表示永久有效。
-f:指定在密碼過期后多少天即關閉該賬號。
-g:指定用戶所屬的群組。
-G:指定用戶所屬的附加群組。
-m:自動建立用戶的登入目錄。
-M:不要自動建立用戶的登入目錄。
-n:取消建立以用戶名稱為名的群組。
-r:建立系統賬號。
-s:指定用戶登入后所使用的shell。
-u:指定用戶ID號。
舉例: # useradd -g oinstall -G dba oracle 創建Oracle用戶
e. 刪除用戶
命令: userdel 用戶名
刪除指定的用戶帳號
userdel –r 用戶名(userdel 用戶名;rm 用戶名):刪除指定的用戶帳號及宿主目錄
例:#useradd -g root kkk //把kkk用戶加入root組里
f. 修改用戶
命令: usermod
修改已有用戶的信息
usermod –l 舊用戶名 新用戶名: 修改用戶名
usermod –L 用戶名: 用於鎖定指定用戶賬號,使其不能登陸系統
usermod –U 用戶名: 對鎖定的用戶帳號進行解鎖
passwd –d 用戶名: 使帳號無口令,即用戶不需要口令就能登錄系統
例:#usermod -l user2 user1 //把用戶user2改名為user1
30. 啟動、關閉防火牆
永久打開或則關閉
chkconfig iptables on
chkconfig iptables off
即時生效:重啟后還原
service iptables start
service iptables stop
或者:
/etc/init.d/iptables start
/etc/init.d/iptables stop
31. 啟動VSFTP服務
即時啟動: /etc/init.d/vsftpd start
即時停止: /etc/init.d/vsftpd stop
開機默認VSFTP服務自動啟動:
方法一:(常用\方便)
[root@localhost etc]# chkconfig --list|grep vsftpd ( 查看情況)
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost etc]# chkconfig vsftpd on (執行ON設置)
或者:方法二:
修改文件 /etc/rc.local , 把行/usr/local/sbin/vsftpd & 插入文件中,以實現開機自動啟動。
32. vi技巧
a. 進入輸入模式
新增 (append)
a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。
A:從光標所在列最後面的地方開始新增資料。
插入 (insert)
i:從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。
I :從光標所在列的第一個非空白字元前面開始插入資料。
開始 (open)
o :在光標所在列下新增一列並進入輸入模式。
O: 在光標所在列上方新增一列並進入輸入模式。
b. 退出vi
在指令模式下鍵入:q,:q!,:wq或:x(注意:號),就會退出vi。其中:wq和:x是存盤退出,而:q是直接退出,如果文件已有新的變化,vi會提示你保存文件而:q命令也會失效,這時你可以用:w命令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改變后的文件,你就需要用:q!命令,這個命令將不保存文件而直接退出vi。
c. 刪除與修改文件的命令:
x:刪除光標所在字符。
dd :刪除光標所在的列。
r :修改光標所在字元,r 後接著要修正的字符。
R:進入取替換狀態,新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。
s:刪除光標所在字元,並進入輸入模式。
S:刪除光標所在的列,並進入輸入模式。
d. 屏幕翻滾類命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl+b: 向文件首翻一屏
nz: 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
e. 刪除命令
ndw或ndW: 刪除光標處開始及其后的n-1個字
do: 刪至行首
d$: 刪至行尾
ndd: 刪除當前行及其后n-1行
x或X: 刪除一個字符,x刪除光標后的,而X刪除光標前的
Ctrl+u: 刪除輸入方式下所輸入的文本
f. 搜索及替換命令
/pattern: 從光標開始處向文件尾搜索pattern
?pattern: 從光標開始處向文件首搜索pattern
n: 在同一方向重復上一次搜索命令
N: 在反方向上重復上一次搜索命令
:s/p1/p2/g: 將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 將文件中所有p1均用p2替換
g. 復制,黏貼
(1) 選定文本塊,使用v進入可視模式;移動光標鍵選定內容
(2) 復制選定塊到緩沖區,用y;復制整行,用yy
(3) 剪切選定塊到緩沖區,用d;剪切整行用dd
(4) 粘貼緩沖區中的內容,用p
h. 其他
在同一編輯窗打開第二個文件,用:sp [filename]
在多個編輯文件之間切換,用Ctrl+w