示例:在Linux平臺上后臺運行4個vim進程,使用如下命令即可同時結束掉4個vim進程
網(wǎng)站制作、成都網(wǎng)站制作的開發(fā),更需要了解用戶,從用戶角度來建設網(wǎng)站,獲得較好的用戶體驗。成都創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網(wǎng)絡公司,打造的就是網(wǎng)站建設產(chǎn)品直銷的概念。選擇成都創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價值服務。
ps -efww|grep vim |grep -v grep|cut -c 9-15|xargs kill -9
說明:管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。
“ps -efww”是查看所有進程的命令。這時檢索出的進程將作為下一條命令“grep“的輸入,注意要結束其它程序時,請將上面命令中的vim替換成其它程序名。
“grep -v grep”是在列出的進程中去除含有關鍵字“grep”的進程。
“cut -c 9-15”是截取輸入行的第9個字符到第15個字符,而這正好是進程號PID。
“xargs kill -9”中的xargs命令是用來把前面命令的輸出結果(PID)作為“kill -9”命令的參數(shù),并執(zhí)行該命令。
“kill -9”會強行殺掉指定進程,這樣就成功清除了同名進程。
ps 命令的作用是顯示進程信息的;
| 符號,是個管道符號,表示ps 和 grep 命令同時執(zhí)行;
grep 命令是查找(Global Regular Expression Print),能使用正則表達式搜索文本,然后把匹配的行顯示出來;
ps命令有一些參數(shù):
-e : 顯示所有進程
-f : 全格式
-h : 不顯示標題
-l : 長格式
-w : 寬輸出
a :顯示終端上的所有進程,包括其他用戶的進程。
r :只顯示正在運行的進程。
u :以用戶為主的格式來顯示程序狀況。
x :顯示所有程序,不以終端機來區(qū)分。
結果信息從前到后依次是:
UID PID PPID C STIME TTY TIME CMD
zzw 14124 13991 0 00:38 pts/0 00:00:00 grep –color=auto dae
Linux中的top命令顯示系統(tǒng)上正在運行的進程。它是系統(tǒng)管理員最重要的工具之一。被廣泛用于監(jiān)視服務器的負載。top命令是一個交互命令。在運行top的時候還可以運行很多命令。
N – 以 PID 的大小的順序排列表示進程列表
P – 以 CPU 占用率大小的順序排列進程列表
M – 以內(nèi)存占用率大小的順序排列進程列表
q – 退出 top
h – 幫助
1 系統(tǒng)運行時間和平均負載
這些字段顯示:當前時間、系統(tǒng)已運行的時間、當前登錄用戶的數(shù)量、相應最近5、10和15分鐘內(nèi)的平均負載。
2 任務
第二行顯示的是任務或者進程的總結。進程可以處于不同的狀態(tài)。這里顯示了全部進程的數(shù)量。除此之外,還有正在運行、睡眠、停止、僵尸進程的數(shù)量(僵尸是一種進程的狀態(tài))。這些進程概括信息可以用’t’切換顯示。
3 CPU 狀態(tài)
下一行顯示的是CPU狀態(tài)。 這里顯示了不同模式下的所占CPU時間的百分比。這些不同的CPU時間表示:
us, user: 運行(未調(diào)整優(yōu)先級的) 用戶進程的CPU時間
sy,system: 運行內(nèi)核進程的CPU時間
ni,niced:運行已調(diào)整優(yōu)先級的用戶進程的CPU時間
wa,IO wait: 用于等待IO完成的CPU時間
hi:處理硬件中斷的CPU時間
si: 處理軟件中斷的CPU時間
st:這個虛擬機被hypervisor偷去的CPU時間(譯注:如果當前處于一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)。
4 內(nèi)存使用
接下來兩行顯示內(nèi)存使用率,有點像’free’命令。第一行是物理內(nèi)存使用,第二行是虛擬內(nèi)存使用(交換空間)。
物理內(nèi)存顯示如下:全部可用內(nèi)存、已使用內(nèi)存、空閑內(nèi)存、緩沖內(nèi)存。相似地:交換部分顯示的是:全部、已使用、空閑和緩沖交換空間。
5 各列的意思
PID 進程ID,進程的唯一標識符
USER 進程所有者的實際用戶名。
PR 進程的調(diào)度優(yōu)先級。這個字段的一些值是’rt’。這意味這這些進程運行在實時態(tài)。
NI 進程的nice值(優(yōu)先級)。越小的值意味著越高的優(yōu)先級。
VIRT 進程使用的虛擬內(nèi)存。
RES 駐留內(nèi)存大小。駐留內(nèi)存是任務使用的非交換物理內(nèi)存大小。
SHR SHR是進程使用的共享內(nèi)存。
S 這個是進程的狀態(tài)。它有以下不同的值:
D – 不可中斷的睡眠態(tài)。
R – 運行態(tài)
S – 睡眠態(tài)
T – 被跟蹤或已停止
Z – 僵尸態(tài)
%CPU 自從上一次更新時到現(xiàn)在任務所使用的CPU時間百分比。
%MEM 進程使用的可用物理內(nèi)存百分比。
TIME+ 任務啟動后到現(xiàn)在所使用的全部CPU時間,精確到百分之一秒。
COMMAND 運行進程所使用的命令。
注意 :不同發(fā)行版的top命令在各種細節(jié)有不同,如果發(fā)現(xiàn)不同時,請讀你的幫助手冊和命令內(nèi)的幫助。)
kill、kill-15、kill-9區(qū)別:
執(zhí)行kill(默認kill -15)命令,系統(tǒng)會發(fā)送一個SIGTERM信號給對應的程序,大部分程序接收到SIGTERM信號后,會先釋放自己的資源,然后再停止。用法kill pid。
kill -15 pid。
kill -9命令,系統(tǒng)給對應程序發(fā)送的信號是SIGKILL,即exit。exit信號不會被系統(tǒng)阻塞,所以kill -9能順利殺掉進程。用法kill -9 pid。
tail -n 1000:顯示最后1000行
tail -n +1000:從1000行開始顯示,顯示1000行以后的
head -n 1000:顯示前面1000行
cat a.txt 顯示文件
vim xx.conf 編輯文件
打開文件后,按insert鍵進入編輯模式;編輯完后,按esc建退出編輯模式;按shift+冒號后,輸入wq保存退出,wq!保存強制退出,q不保存退出
在根目錄模糊查找名字含java的文件
服務器端常有很多壓縮過的日志文件,當需要查找日志中某些特定信息的時候,為了避免解壓文件,可以使用zgrep,zcat等命令查找、查看壓縮文件中的信息
zgrep ' 輸入你要查找的東東' /目錄 /文件 .gz 或者.log (當日)
grep ' 輸入你要查找的東東' /目錄 /文件 .gz 或者.log (非當日的壓縮文件)
例如: zgrep 'callMktCamLoad' app.log.2019-12-03-*.gz
rpm包安裝的,可以用 rpm -qa 看到,如果要查找某軟件包是否安裝,用 rpm -qa | grep "軟件或者包的名字"
以deb包安裝的,可以用 dpkg -l 看到。如果是查找指定軟件包,用 dpkg -l | grep "軟件或者包的名字"
yum方法安裝的,可以用 yum list installed 查找,如果是查找指定包,用 yum list installed | grep "軟件名或者包名"
一次執(zhí)行多個命令可以將多個命令用英文分號分割,比如像這樣:
mkdir /tmp/mydir; touch /tmp/mydir/myfile
其實這樣也不能算是同時執(zhí)行,Linux的命令是順序執(zhí)行的,就算是shell腳本,里面寫了一大堆命令,同樣也順序執(zhí)行的。如果前一個命令執(zhí)行的時間比較長,后面的命令就只有等待了。如果命令執(zhí)行時間比較長,又想讓命令同時執(zhí)行,恐怕只能打開多個虛擬終端才行(右鍵虛擬終端界面,選擇“打開標簽”),打開多個登錄的虛擬終端其實是運行了多個“會話”,多個“會話”中的命令才是“同時”執(zhí)行。
tee用于把命令結果打印在屏幕上并同時保存到文件。
tee用法
描述:從標準輸入中讀取并同時寫入到標準輸出和指定的文件上
選項:
-a,--append:不覆蓋,而是追加輸出到指定的文件中
-i,--ignore-interrupts:忽略中斷信息
若指定的輸出文件為'-',則再次輸出到標準輸出上
實例:
tee Example.txt #將標準輸入中輸入的內(nèi)容同時輸出到Example.txt和標準輸出上
實踐:
例如 ifconfig | tee ifconfig.log
查看iconfig.log
注:
標準輸入一般有鍵盤和其它文件,標準輸出有屏幕等。tee只能進行標準輸入的輸出,對于錯誤輸入是不能輸出的。
在調(diào)試腳本時,想要每個命令的執(zhí)行過程都輸出到屏幕或者文件中,以便后續(xù)查看,如何操作呢?首先腳本第一行要寫為“#!/bin/bash -x”,這樣會把每個命令的執(zhí)行記錄都輸出到屏幕,若還要輸出到指定文件,要用到tee,但tee只能進行標準輸入,對于標準輸入和錯誤輸入要用到下式:
./filename.sh 21 | tee output.log? ?或者直接 bash -x ./filename.sh?21 | tee output.log
今天調(diào)試一個bash,要把屏幕的輸出結果存到log文件中,開始輸入$bash -x ./test.sh log 結果發(fā)現(xiàn)log里只存放了程序的執(zhí)行結果,后來在cu的一篇帖子里?tid=264380highlight=bash得到了啟發(fā),bash -x的調(diào)試信息是輸出到2號流中的,所以解決方案為bash -x ./test.sh 21 | tee log 想起以前要存放執(zhí)行make的結果時也遇到類似問題,總結如下:
1、管道符的“I”的作用只是把前一個程序的標準輸出流(stdout)的數(shù)據(jù)作為后一個程序的標準輸入流stdin的數(shù)據(jù),如不進行重定向,則其他輸出流的信息是無法傳給后面的程序的
2、屏幕得到的信息不一定是從程序的標準輸出來的,也包括標準錯誤輸出流stderr中的信息
3、有些程序(特別是象bash、make這樣執(zhí)行了其他程序的程序)的設計者為了省事,把一些正常情況的信息也放在stderr中輸出(即使程序本身并無錯誤),而stdout用來輸出被調(diào)用程序的執(zhí)行時信息,造成了用戶的誤解簡單編寫了一下腳本,通過ssh登陸在命令行下運行正常,可是將腳本添加到crontab中就不正常。想記錄一下輸出信息,分析一下錯誤原因。將腳本通過使用info.log 重定向輸出,結果發(fā)現(xiàn)一些在命令行下可以看到的文本信息沒有記錄到info.log文件中,研究了一下,那些輸出估計是輸出到了標準錯誤上。
研究了一下通常添加命令后面幾個輸出含義
■ /dev/null 輸出到空設備,表示丟掉輸出信息。
■ 21將輸出到標準錯誤的信息輸出到標準輸出設備(通常是屏幕)有3個默認的i/o,
■ 0是標準輸入,一般是鍵盤
■ 1是標準輸出,一般是屏幕
■ 2是標準錯誤,有時候屏幕上可以看到,但是重定向的文件中看不到的就是它了
linux命令格式:
說明:command: 命令名,相應功能的英文單詞或單詞的縮寫 [-options]:選項,可用來對命令進行控制,也可以省略,[]代表可選 parameter1 …:傳給命令的參數(shù):可以是零個一個或多個
一般是linux命令自帶的幫助信息
如:
man是linux提供的一個手冊,包含了絕大部分的命令、函數(shù)使用說明
該手冊分成很多章節(jié)(section),使用man時可以指定不同的章節(jié)來瀏覽。
例:man ls ; man 2 printf
man中各個section意義如下:
man是按照手冊的章節(jié)號的順序進行搜索的。
man設置了如下的功能鍵:
在敲出命令的前幾個字母的同時,按下tab鍵,系統(tǒng)會自動幫我們補全命令
當系統(tǒng)執(zhí)行過一些命令后,可按上下鍵翻看以前的命令,history將執(zhí)行過的命令列舉出來
ls是英文單詞list的簡寫,其功能為列出目錄的內(nèi)容,是用戶最常用的命令之一,它類似于DOS下的dir命令。
Linux文件或者目錄名稱最長可以有265個字符,“.”代表當前目錄,“..”代表上一級目錄,以“.”開頭的文件為隱藏文件,需要用 -a 參數(shù)才能顯示。
ls常用參數(shù):
Linux允許將命令執(zhí)行結果重定向到一個文件,本應顯示在終端上的內(nèi)容保存到指定文件中。
如:ls test.txt ( test.txt 如果不存在,則創(chuàng)建,存在則覆蓋其內(nèi)容 )
注意: 輸出重定向會覆蓋原來的內(nèi)容,輸出重定向則會追加到文件的尾部。
查看內(nèi)容時,在信息過長無法在一屏上顯示時,會出現(xiàn)快速滾屏,使得用戶無法看清文件的內(nèi)容,此時可以使用more命令,每次只顯示一頁,按下空格鍵可以顯示下一頁,按下q鍵退出顯示,按下h鍵可以獲取幫助。
管道:一個命令的輸出可以通過管道做為另一個命令的輸入。
管道我們可以理解現(xiàn)實生活中的管子,管子的一頭塞東西進去,另一頭取出來,這里“ | ”的左右分為兩端,左端塞東西(寫),右端取東西(讀)。
clear作用為清除終端上的顯示(類似于DOS的cls清屏功能),也可使用快捷鍵:Ctrl + l ( “l(fā)” 為字母 )。
在使用Unix/Linux的時候,經(jīng)常需要更換工作目錄。cd命令可以幫助用戶切換工作目錄。Linux所有的目錄和文件名大小寫敏感
cd后面可跟絕對路徑,也可以跟相對路徑。如果省略目錄,則默認切換到當前用戶的主目錄。
使用pwd命令可以顯示當前的工作目錄,該命令很簡單,直接輸入pwd即可,后面不帶參數(shù)。
通過mkdir命令可以創(chuàng)建一個新的目錄。參數(shù)-p可遞歸創(chuàng)建目錄。
需要注意的是新建目錄的名稱不能與當前目錄中已有的目錄或文件同名,并且目錄創(chuàng)建者必須對當前目錄具有寫權限。
可使用rmdir命令刪除一個目錄。必須離開目錄,并且目錄必須為空目錄,不然提示刪除失敗。
可通過rm刪除文件或目錄。使用rm命令要小心,因為文件刪除后不能恢復。為了防止文件誤刪,可以在rm后使用-i參數(shù)以逐個確認要刪除的文件。
常用參數(shù)及含義如下表所示:
Linux鏈接文件類似于Windows下的快捷方式。
鏈接文件分為軟鏈接和硬鏈接。
軟鏈接:軟鏈接不占用磁盤空間,源文件刪除則軟鏈接失效。
硬鏈接:硬鏈接只能鏈接普通文件,不能鏈接目錄。
使用格式:
如果沒有-s選項代表建立一個硬鏈接文件,兩個文件占用相同大小的硬盤空間,即使刪除了源文件,鏈接文件還是存在,所以-s選項是更常見的形式。
注意:如果軟鏈接文件和源文件不在同一個目錄,源文件要使用絕對路徑,不能使用相對路徑。
Linux系統(tǒng)中grep命令是一種強大的文本搜索工具,grep允許對文本文件進行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式為:
在grep命令中輸入字符串參數(shù)時,最好引號或雙引號括起來。例如:grep‘a(chǎn) ’1.txt。
常用選項說明:
find命令功能非常強大,通常用來在特定的目錄下搜索符合條件的文件,也可以用來搜索特定用戶屬主的文件。
常用用法:
cp命令的功能是將給出的文件或目錄復制到另一個文件或目錄中,相當于DOS下的copy命令。
常用選項說明:
用戶可以使用mv命令來移動文件或目錄,也可以給文件或目錄重命名。
常用選項說明:
計算機中的數(shù)據(jù)經(jīng)常需要備份,tar是Unix/Linux中最常用的備份工具,此命令可以把一系列文件歸檔到一個大文件中,也可以把檔案文件解開以恢復數(shù)據(jù)。
tar使用格式 tar [參數(shù)] 打包文件名 文件
tar命令很特殊,其參數(shù)前面可以使用“-”,也可以不使用。
常用參數(shù):
tar與gzip命令結合使用實現(xiàn)文件打包、壓縮。 tar只負責打包文件,但不壓縮,用gzip壓縮tar打包后的文件,其擴展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [選項] 被壓縮文件
常用選項:
tar與bzip2命令結合使用實現(xiàn)文件打包、壓縮(用法和gzip一樣)。
tar只負責打包文件,但不壓縮,用bzip2壓縮tar打包后的文件,其擴展名一般用xxxx.tar.gz2。
在tar命令中增加一個選項(-j)可以調(diào)用bzip2實現(xiàn)了一個壓縮的功能,實行一個先打包后壓縮的過程。
壓縮用法:tar -jcvf 壓縮包包名 文件...(tar jcvf bk.tar.bz2 *.c)
解壓用法:tar -jxvf 壓縮包包名 (tar jxvf bk.tar.bz2)
通過zip壓縮文件的目標文件不需要指定擴展名,默認擴展名為zip。
壓縮文件:zip [-r] 目標文件(沒有擴展名) 源文件
解壓文件:unzip -d 解壓后目錄文件 壓縮文件
whoami該命令用戶查看當前系統(tǒng)當前賬號的用戶名??赏ㄟ^cat /etc/passwd查看系統(tǒng)用戶信息。
由于系統(tǒng)管理員通常需要使用多種身份登錄系統(tǒng),例如通常使用普通用戶登錄系統(tǒng),然后再以su命令切換到root身份對傳統(tǒng)進行管理。這時候就可以使用whoami來查看當前用戶的身份。
who命令用于查看當前所有登錄系統(tǒng)的用戶信息。
常用選項:
如果是圖形界面,退出當前終端;
如果是使用ssh遠程登錄,退出登陸賬戶;
如果是切換后的登陸用戶,退出則返回上一個登陸賬號。
在Unix/Linux中添加用戶賬號可以使用adduser或useradd命令,因為adduser命令是指向useradd命令的一個鏈接,因此,這兩個命令的使用格式完全一樣。
useradd命令的使用格式如下:
useradd [參數(shù)] 新建用戶賬號
在Unix/Linux中,超級用戶可以使用passwd命令為普通用戶設置或修改用戶口令。用戶也可以直接使用該命令來修改自己的口令,而無需在命令后面使用用戶名。
可以通過su命令切換用戶,su后面可以加“-”。su和su –命令不同之處在于,su -切換到對應的用戶時會將當前的工作目錄自動轉換到切換后的用戶主目錄:
注意:如果是ubuntu平臺,需要在命令前加“sudo”,如果在某些操作需要管理員才能操作,ubuntu無需切換到root用戶即可操作,只需加“sudo”即可。sudo是ubuntu平臺下允許系統(tǒng)管理員讓普通用戶執(zhí)行一些或者全部的root命令的一個工具,減少了root 用戶的登陸和管理時間,提高了安全性。
方法一:
方法二:
groupadd 新建組賬號 groupdel 組賬號 cat /etc/group 查看用戶組
使用方法:usermod -g 用戶組 用戶名
新創(chuàng)建的用戶,默認不能sudo,需要進行一下操作
-g用來制定這個用戶默認的用戶組
-G一般配合'-a'來完成向其它組添加
chmod 修改文件權限有兩種使用格式:字母法與數(shù)字法。
字母法:chmod u/g/o/a +/-/= rwx 文件
cal命令用于查看當前日歷,-y顯示整年日歷
設置時間格式(需要管理員權限):
date [MMDDhhmm[[CC]YY][.ss]] +format
CC為年前兩位yy為年的后兩位,前兩位的mm為月,后兩位的mm為分鐘,dd為天,hh為小時,ss為秒。如: date 010203042016.55。
顯示時間格式(date '+%y,%m,%d,%H,%M,%S'):
進程是一個具有一定獨立功能的程序,它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元。
ps命令可以查看進程的詳細狀況,常用選項(選項可以不加“-”)如下:
top命令用來動態(tài)顯示運行中的進程。top命令能夠在運行后,在指定的時間間隔更新顯示信息??梢栽谑褂胻op命令時加上-d 來指定顯示信息更新的時間間隔。
在top命令執(zhí)行后,可以按下按鍵得到對顯示的結果進行排序:
kill命令指定進程號的進程,需要配合 ps 使用。有些進程不能直接殺死,這時候我們需要加一個參數(shù)“ -9 ”,“ -9 ” 代表強制結束.
使用格式:
kill [-signal] pid
df命令用于檢測文件系統(tǒng)的磁盤空間占用和空余情況,可以顯示所有文件系統(tǒng)對節(jié)點和磁盤塊的使用情況。
du命令用于統(tǒng)計目錄或文件所占磁盤空間的大小,該命令的執(zhí)行結果與df類似,du更側重于磁盤的使用狀況。
du命令的使用格式如下: du [選項] 目錄或文件名
如果您維護多個Linux服務器,則有時您希望在所有服務器上運行相同的命令。例如,您可能希望安裝/升級軟件包,修補內(nèi)核以及更新配置等。如果您必須登錄到每個服務器并手動運行相同的命令,那將是一項繁瑣的工作。
這篇文章是關于一個管理工具,它允許您一次在許多不同的機器上運行相同的命令。
通過ClusterSSH,您可以同時在多個主機上進行相同的更改。它提供了一個特殊的控制臺界面,您在控制臺中輸入的任何內(nèi)容都會自動發(fā)送到任意數(shù)量的主機。
在Linux上安裝ClusterSSH
在Ubuntu,Debian或Linux Mint上安裝ClusterSSH:
$ sudo apt-get install clusterssh
要在CentOS或RHEL上安裝ClusterSSH,首先需要設置EPEL存儲庫,然后運行以下命令。
$ sudo yum install clusterssh
要在Fedora上安裝ClusterSSH,只需運行:
$ sudo yum install clusterssh
配置ClusterSSH
安裝后,第一步是定義要在其上運行命令的主機群集。為此,請按如下方式創(chuàng)建系統(tǒng)范圍的ClusterSSH配置文件。
$ sudo vi / etc / clusters
clusters = my_cluster my_cluster2
my_cluster = host1 host2 host3 host4
my_cluster2 = host5 host6
如果您需要特定于用戶的ClusterSSH配置,只需使用?/ .csshrc而不是/ etc / clusters。在上面的示例配置中,我定義了兩個集群:“my_cluster”由四個主機組成,“my_cluster2”包含兩個主機。群集是您要登錄并運行命令的一組主機。
當您使用任何用戶定義的群集啟動ClusterSSH時,它將使用ssh登錄到群集中的各個主機,并在主機上運行任何用戶類型的命令。
啟動ClusterSSH
要啟動ClusterSSH,請按如下方式運行cssh命令。
$ cssh -l dev my_cluster
在上文中,“dev”是群集中所有主機的登錄ID,“my_cluster”是群集名稱。
如果需要,可以指定單個主機名而不是群集名。
$ cssh -l dev host1 host2 host3
一旦CSSH執(zhí)行命令時,它會彈出用于單個主機的XTerm窗口,以及標記的一個小窗口“CSSH [2]”,其是ClusterSSH控制臺窗口。無論您在控制臺窗口中輸入什么,都將同時出現(xiàn)在各個主機的XTerm窗口中?;旧希梢酝ㄟ^單一控制臺窗口控制所有XTerm窗口。
如果要將某些命令運行到特定的XTerm窗口,只需將焦點切換到Xterm窗口,然后像往常一樣鍵入命令。
以下屏幕截圖顯示了ClusterSSH的運行情況,其中群集中有五個主機,左上角的控制臺窗口是您應該鍵入要在所有五個主機上運行的命令的位置。
轉自 嘉為教育-rhce認證_rhce培訓_linux培訓_linux認證_linux考證