搭建測試環境常用linux命令
一、linux簡介
linux就是一個免費使用作業系統。主要特點:
- 可靠性高
- 良好的可移植性 Linux是世界上唯一能夠在嵌入式裝置、個人計算機、伺服器、小型 機甚至大型機上執行的作業系統
- 良好的開放性
- 強大的網路功能 可以充當應用伺服器、檔案伺服器、列印伺服器、郵件伺服器、新聞 伺服器等
- 強大的資料庫支援支援Oracle、Sqlite、Sybase、DB2、MySQL、PostgreSQL
- 支援多種檔案系統
- 支援多使用者
二、Linux遠端登入有以下三種形式
- telnet遠端登入:
- ssh遠端登入
- secureCRT/xshell/ssh遠端登入
三、Linux目錄結構
linux系統下一切皆檔案,用xft工具開啟,瞭解Linux主要目錄結構。知道linux目錄,對學習linux有很大的幫助。
- 樹狀結構,/為最高的根目錄
- root:root使用者的個人資料夾(家目錄)
- bin:存放多數使用者可用的命令
- boot:存放啟動檔案和配置資訊,系統啟動時會用
- dev:存放裝置檔案,/dev/hdc代表光碟機
- etc:存放服務配置檔案
- home:其他使用者的家目錄
- lib:存放程式執行所需要的庫檔案
- media:可移動裝置的掛載目錄
- mnt:裝置掛載目錄
- usr:使用者程式存放目錄
- var:存放經常改動的資料檔案
- tmp:存放臨時檔案
四、Linux常用命令
1.上傳/下載檔案命令
- Xftp、FileZilla、Winscp等工具
- rz、sz命令
2. 登入
登入程式login負責使用者登入認證使用者身份
身份驗證成功後,啟動shell並初始化使用者環境
檢查電子郵件,並給予提示
失敗登入由syslog程式記錄到日誌中,成功登入記錄到 /var/log/wtmp,失敗登入記錄到/var/run/utmp
登入成功後,根據 PS1變數設定結果顯示終端
PS1=“[\[email protected]\H \W]\\\$ “
說明: \u :當前使用者的賬號名稱 \H :完整的主機名稱
\W 工作目錄名稱,所以只會列出最後一個目錄
\$ :提示字元,如果是root時,提示符為:# ,普通
使用者則為:$
3、登出
exit(常用於字元介面,圖形介面只關閉終端視窗)
logout(僅文字終端)
4、重啟
reboot
-w:不實際關機,使用者登入資訊寫入/var/log/wtmp
-d:不將使用者登入資訊寫入/var/log/wtmp
-f:強制重啟
reboot 可以不接引數
shutdown
shutdown -r 延時分鐘數 “提示資訊”
shutdown -r now(now表示立即執行)
不能單獨用,至少2個引數
5、關機
halt
-w:不實際關機,使用者登入資訊寫入/var/log/wtmp o -d:不將使用者資訊寫入 /var/log/wtmp
-f:強制關機
-p:關機後,關閉電源
可以不接引數
poweroff
除了無-p引數,其他與halt同
init 0
shutdown
shutdown -h 延時分鐘數 “提示資訊”
shutdown -h now(now表示立即執行)
6、使用者和組
新增使用者:
useradd 使用者名稱
passwd 使用者名稱
修改使用者:
usermod -l 新使用者名稱 -d 新家目錄 舊使用者名稱
usermod –l tom –d /usr/local/tomcat test4
刪除使用者:
userdel -r 使用者名稱
切換使用者:su 使用者名稱或su - 使用者名稱
獲取超級使用者許可權:sudo
用法:sudo reboot
有一些命令是普通使用者沒有許可權操作的,所以要用sudo來獲取超級使用者許可權,如果普通使用者要使用sudo命令,需要在/etc/sudoers檔案中配置才可以使用,例如要besttest使用者可以使用sudo獲取root使用者許可權,使用root使用者編輯/etc/sudoers檔案,找到 root ALL=(ALL) ALL 這一行,在它下面加入bestest ALL=(ALL) NOPASSWD:ALL然後儲存即可。NOPASSWD代表該使用者使用sudo的時候不用輸入密碼。
增加組:groupadd 組名
修改組:groupmod –g 組新id –n 組新名 組舊名
刪除組:groupdel 組名
7、網路配置
設定ip地址:
/etc/sysconfig/network-scripts/ifcfg-eth0
Linux下ip地址資訊以及ip獲取方式都是存放在ifcfg-eth0這個檔案下的,如果有多塊網絡卡的話就是ifcfg-eth0、ifcfg-eth1依次
臨時設定ip地址:
ifconfig eth0 192.168.1.102
臨時設定ip地址可以使用ifconfig 網絡卡 ip地址臨時設定ip地址,重啟後會失效
設定dns:/etc/resolv.conf
/etc/sysconfig/network
全域性網路配置檔案:
主要有兩個配置項 NETWORKING(網路工作狀態)和HOSTNAME(主機名)
修改主機名的話修改HOSTNAME的值即可
檢視ip地址:ifconfig命令
重啟、啟動、停止網路命令:service network restart/start/stop
8、Vi編輯器
vi有兩種模式:命令模式,進入vi時的預設模式,此模式下所有的使用者輸入都視為命令,使用者在此模式下進行搜尋、複製、替換等。編輯模式,使用者在此模式下可以編輯文字內容。
模式切換:
命令進入編輯:i(當前位置) 、a(下一位置)、o(下一行) 編輯進入命令:esc
游標定位:
0移動游標到行首
$移動游標到行尾
/:從上往下開始查詢
?:從下往上開始查詢
撤銷和重複
u復原前一個動作
. 重複前一個動作
複製貼上刪除:
nyy 複製游標所在的向下n行內容
p在游標處貼上複製的內容
ndd刪除游標所在向下n行的內容
ctrl + d:往下翻半屏內容
ctrl + u:往上翻半屏內容
shift + g:到檔案末尾
x:刪除當前位置字元
dd:刪除整行
set number:顯示行號
set nonu:取消顯示行號
1,3y 複製第一行到第三行
1,3d 刪除第一行到第三行
1,3s/str/str_new/g 替換第一行到第三行中的字串
1,3s/str/str_new 替換第一行到第三行中的字串第一個字元
1,3 g/str /d 刪除第一行到第三行中含有這個字串的行
搜尋字串
輸入/+要查詢的字串:/bestest
按n鍵重新查詢下一個,N查詢上一個
退出vi
q 退出vi
q! 不儲存退出
wq 儲存退出
e!不儲存修改的檔案
w 儲存
!強制,後面加歎號的話表示強制
9、檔案管理命令
ls:列舉指定目錄下的子目錄和檔案
用法:ls [-arltrx] [name……]
ls -l test
cd:改變當前的目錄或者處理絕對目錄和相對目錄
用法:cd目錄
-cd回車:退到當前使用者個人目錄
-cd / :退到最根目錄
-cd ../xx:退到上級目錄的xx目錄
-cd .:停留在當前目錄
-cd .. :返回上級目錄
-cd –:回到上一次操作的目錄
-cd ~: 回到使用者家目錄
cp:複製指定檔案到另一檔案或目錄
用法:cp [-abrifLP] [source] [dest]
主要引數:
-a:儘可能的將檔案的屬性、許可權的內容都照原狀複製
-b:如果目的檔案存在,就創造一個備份
-r:若源中有子目錄,則將子目錄下的檔案及目錄亦全部複製至目的目錄
-i:若目的地有重複的檔案,詢問是否覆蓋
-f:若目的地有重複的檔案,則覆蓋原有檔案
-L:複製符號連結,自動修改連結以保證連結有效
舉例:cp -rf a.txt /tmp
mv:用來為檔案或目錄改名,或者將檔案由一個目錄移入另一個目錄中
用法:mv[options] 原始檔或目錄 目標檔案或目錄
rm:用來刪除檔案或目錄
用法:rm [-ifr] name
rmdir:用來刪除一個空資料夾
用法:rmdir [-ifr] name
cat:用於連線並顯示指定的一個和多個檔案的有關資訊
用法:cat [options] 檔案1 [檔案2]……
主要引數:
-n:由第一行開始對所有輸出的行數編號。
-b:和-n相似,只不過對於空白行不編號。
-s:當遇到有連續兩行以上的空白行時,就代換為一行的空白行。
舉例:將幾個檔案處理成一個檔案,並將這種處理的結果儲存到一個單獨的輸出檔案:cat a.txt b.txt > c.txt
head:顯示檔案的開頭至標準輸出中
用法:head [引數]... [檔案]...
主要引數:
-n<行數> 顯示的行數
tail:檢視檔案末尾內容
用法:tail [引數] [檔案]
主要引數:
-f 動態讀取
舉例
動態檢視日誌 tail -f err.log
檢視末尾10行日誌 tail -10 err.log
動態檢視末尾5行日誌 tail -5f err.log
more和less:分屏顯示檔案內容,可以逐頁或者逐行顯示檔案內容
用法:more [引數] 檔案 less [引數] 檔案
舉例:less a.txt more a.txt
回車為顯示下一行
空格為轉到下頁
G 移動到最後一行 #less
g 移動到第一行 #less
du:檔案和目錄的磁碟使用空間
用法:du [選項][檔案]
-s或--summarize 僅顯示總計,只列出最後加總的值
-m或--megabytes 以MB為單位輸出
lsof:列出當前系統開啟檔案的工具
用法:lsof [options] filename
lsof filename 顯示開啟指定檔案的所有程序
lsof -i :80 查詢指定埠開啟的檔案
Lsof -p pid 查詢指定的pid開啟的檔案
chmod:用來給檔案或者檔案賦許可權
用法:chmod [選項][檔案]
chmod有兩種方式,數字方式和文字方式:
數字方式:
[n][n][n] r=4 w=2 x=1
rwx:4+2+1; r-x:4+1; rw-:4+2
文字方式
u -- 該檔案的擁有者;
g -- 與該檔案的擁有者屬於同一個群體(group)者;
o -- 其他以外的人;
a -- 所有
+ -- 增加許可權
- -- 去掉許可權
-R 遞迴,主要用於一個目錄,把這個目錄下所有的檔案/資料夾賦許可權
例子:
給text檔案賦予rwxr-xr-x許可權:chmod 755 text
給text及其子目錄底下所有檔案賦予rwxr-xr-x許可權:hmod -R 755 text
為檔案abc的組擁有者增加rw許可權:chmod g+rw abc
為abc檔案的使用者擁有者去除x許可權:chmod u-x abc
指定檔案abc的其他使用者許可權為rw-:chmod o=rw-
為檔案abc及其子目錄底下的所有檔案的全體使用者增加x許可權:chmod -R a+x abc
chgrp:改變檔案所屬組
用法:chgrp [選項] [組] [檔案]
主要引數:
-R 遞迴
注意:使用許可權是超級使用者
chown:改變檔案所有者和所屬組
用法:chown [選項] 使用者或組 檔名
主要引數: -R 遞迴式地改變指定目錄及其所有子目錄、檔案 的檔案主
注意:使用許可權是超級使用者
舉例: chown -R test:test foo
wc:統計指定檔案中的行數、位元組數、字數,並將統計結果顯示輸出
用法:wc [選項] [檔案]
主要引數:
-c 統計位元組數。
-l 統計行數。
clear、history
clear 清屏
history 檢視歷史命令
10、搜尋命令
grep:顯示檔案中的匹配行
用法:grep [引數] 字串 檔名
主要引數:
無參:顯示匹配行
-c:顯示匹配行數
-e 字串:匹配特殊字串,如-開頭
-i:忽略大小寫
-v:輸出不匹配行
-w:匹配指定字串
可以和別的命令通過"|"管道符連線使用
示例:
grep -c “foo” a.txt
ps -ef|grep httpd |grep -v "grep"
find:查詢目錄下的檔案
用法: find 目標目錄 搜尋引數 操作引數
主要引數:
-name 檔名:可以跟萬用字元
-ctime 天數:檔案最後修改時間為指定天數之前,負數表示之後
-user 使用者名稱:屬於使用者的目錄和檔案
示例:find / -name besttest
11、歸檔壓縮命令
gzip/gunzip壓縮和解壓縮
命令格式:
gzip –[1…9] [trv] file
gunzip file
-1:表示壓縮速度最快,壓縮比最低
-9:表示壓縮速度最慢,壓縮比最高
-t:表示校驗壓縮檔案的完整性
-r:表示壓縮時包含子目錄中的內容
-v:表示壓縮時顯示正在壓縮的檔名和壓縮比等資料
示例:gzip -1trv test.txt
gunzip test.txt.gz
zip/unzip壓縮zip包和解壓縮以.zip結尾壓縮檔案
命令格式:
zip [選項] 壓縮檔名 需要壓縮的文件列表
-r 遞迴壓縮,將指定目錄下的所有檔案以及子目錄全部壓縮
-x “檔案列表” 壓縮時排除檔案列表中指定的檔案
-m 將檔案加入壓縮檔案壓縮後,刪除原始檔案,即把檔案移到壓縮檔案中
- 壓縮級別 壓縮級別是一個1~9的數字
可以不加任何引數使用
unzip [選項] 壓縮檔名
-x "檔案列表" 解壓檔案,但不包含檔案列表中指定的檔案
-t 測試壓縮檔案有無損壞,並不解壓
-v 檢視壓縮檔案的詳細資訊,具體包括壓縮檔案中包含的檔案大小、檔名和壓縮比等,並不解壓
-n 解壓時不覆蓋已經存在的檔案
-o 解壓時覆蓋已經存在的檔案,並且不要求使用者確認
-d 目錄名 把壓縮檔案解壓到指定目錄下
可以不加任何引數
示例:zip -9r /opt/etc.zip /etc #把/etc下所有檔案和資料夾壓縮到/opt下的etc.zip
zip –r /opt/var.zip /var –x “*.log”#把/var下所有的檔案和資料夾除了以.log結尾的都壓縮到/opt目錄的var.zip中
unzip –o /opt/etc.zip –d /etc #把/opt/etc.zip解壓到 /etc目錄下
tar:檔案打包
用法 :tar[引數] 目標檔案 源目錄或檔案
主要引數:
-c:建立新文件
-x:解壓縮歸檔檔案
-f 檔名:使用歸檔檔案
-j:使用bzip2解壓縮
-z:使用gzip解壓縮
-v:詳細輸出模式
示例:
tar zcvf test.tar test#壓縮
tar zxvf test.tar #解壓縮
12、程序相關命令
ps:顯示瞬間程序 (process) 的動態,使用許可權是所有使用者。
主要引數: ps的引數非常多, 此出僅列出幾個常用的引數
-A或-e:列出所有的程序。
-l:顯示長列表。
-m:顯示記憶體資訊。
-w:顯示加寬可以顯示較多的資訊。
-f:顯示不同程序之間的關係。
a:顯示終端上的所有程序,包括其它使用者的程序。
-au:顯示較詳細的資訊。
-aux:顯示所有包含其它使用者的程序。
常用的引數是-aux和-ef
可以用管道符連線其他命令使用
示例:ps -ef |grep httpd #查詢Apache相關程序
kill:用來終止指定的程序
命令格式:kill [引數][程序號]
主要引數:
-l 訊號,若果不加訊號的編號引數,則使用“-l”引數會列出全部的訊號名稱
-p 指定kill 命令只打印相關程序的程序號,而不傳送任何訊號
-s 指定傳送訊號
-u 指定使用者
-9 強制終止程序
可以不加任何引數直接使用
可以後面跟多個pid
示例:
kill -9 2321
kill -9 2312 2819
kill 8321
後臺執行程序
命令最後加&
命令執行後顯示:後臺程式序列號和程序號,若終端被關閉,則帶&的後臺命令也一同關閉,可以使用ps -aux檢視
示例:python test.py &
nohup 命令 &
終端被關閉,後臺程序繼續執行
示例:nohup sh startWebLogic.sh &
jobs命令可以檢視後臺程序序列號及執行情況直接輸入jobs即可
crontab定時任務
使用crontab命令可以修改crontab配置檔案,然後該配置由cron公用程式在適當的時間執行,該命令使用許可權是所有使用者
格式
crontab [ -u user ] 檔案
crontab [ -u user ] { -l | -r | -e }
不加-u引數的話,預設是當前使用者
主要引數
-e:執行文字編輯器來設定時程表,內定的文字編輯器是vi。
-r:刪除目前的時程表。
-l:列出目前的時程表。
crontab 檔案的格式為“M H D m d cmd”。其中,M代表分鐘(0~59),H代表小時(0~23),D代表天(1~31),m代表月(1~12),d代表一星期內的天(0~6,0為星期天)。cmd表示要執行的程式,*代表每分鐘都執行
示例 :
* * * * * sh /opt/lampp/test.sh 表示每分鐘執行一次test.sh這個指令碼
13、軟體安裝相關命令
rpm
命令格式 rpm [引數] [rpm安裝包]
主要引數:
-i 安裝
-U 更新(升級)
-e 解除安裝
-v 顯示安裝資訊
-h 顯示安裝進度
示例:
rpm -ivh jdk.rpm#安裝jdk
rpm -e jdk.rpm
yum命令
yum install httpd#安裝Apache
yum -y install httpd#如果有選項全部同意安裝
yum list|grep httpd#從yum列表中查詢你需要的軟體
yum update httpd #yum升級Apache
yum list installed |grep mysql#查詢是否安裝mysql
yum remove mysql#解除安裝yum安裝的mysql
原始碼安裝
安裝三部曲
1、生成makefile編譯檔案
./configure 一般安裝包下面都有一個configure檔案,用來生成makefile編譯檔案,常用的引數
--prefix 指定安裝目錄
--with-xx 指定依賴檔案的目錄
2、make編譯
make命令也需要安裝,會根據./configure產生makefile檔案編譯寫好的c語言程式,產生可執行的檔案
3、make install
make install的作用是把編譯好的檔案複製到指定的目錄下,也就是第一步--prefix指定的目錄,如果沒有指定目錄的話,還是在當前目錄下
14、其他命令
設定環境變數
簡單的說計算機在執行命令的時候是在環境變數找對應的命令的位置的。如果不正確設定環境變數就不能正確使用相應的命令。Linux中系統變數是在/etc/profile目錄下的,使用者的環境變數則在使用者的家目錄下的.bash_profile檔案中,系統環境變數會在開機的時候全部載入,使用者的環境變數之後在使用者登入時載入。
比如說沒有mysql命令,我們的mysql客戶端是在/opt/lammp/bin目錄下,那就可以把/opt/lammp/bin加入到/etc/profile就可以使用mysql命令了 export LAMPP=/opt/lampp/bin,然後再source /etc/profile 重新載入一下就可以生效了
系統服務
chkconfig:chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的執行級資訊。
常用引數:
chkconfig --add test.sh #將test.sh作為一個系統服務,但是test.sh這個指令碼必須放在/etc/rc.d/init.d目錄下(還有文章,看註釋)
chkconfig --del test.sh #刪除一個系統服務
service test.sh start #執行剛才設定的系統服務
chkconfig test.sh on 開機啟動
chkconfig test.sh off 取消開機啟動
一些常見的系統服務:
iptbles #防火牆
network #網路
httpd #Apache
nginx #nginx
開機啟動指令碼
除了剛才那種把做成系統服務,然後做成開機啟動,還有一種就是在/etc/rc.d/rc.local檔案中加入要開機執行的指令碼
例如要開機啟動lampp,在/etc/rc.d/rc.local檔案中加入/opt/lampp/lampp start即可
臨時關閉防火牆 service iptables stop,重啟後會失效
date命令,顯示當前系統時間,後面可以跟日期格式
cal檢視日曆,後面可以跟年份檢視指定年份的日曆
whoami檢視當前登入使用者
who檢視當前有多少使用者在使用系統
四、shell和AWK
AWK
awk是一種程式語言,用於在linux/unix下對文字和資料進行處理。資料可以來自標準輸入(stdin)、一個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正則表示式等先進功能,是linux/unix下的一個強大程式設計工具。
awk命令格式和選項
awk [選項引數] '{命令引數}' file
awk命令選項
-F fs fs指定輸入分隔符,fs可以是字串或正則表示式,如-F:
-f scripfile 從指令碼檔案中讀取awk命令
-v var=value 賦值一個使用者定義變數,將外部變數傳遞給awk
awk常用的幾個內建引數
$0 表示整個當前行
$n 每行第n個欄位
NF 欄位數量變數,也就是每行有多少個欄位
NR 每行的記錄號,多檔案記錄遞增
awk的if判斷
if (expression) {
statement;}
else {
statement2;}
Shell程式設計
Shell既是一種命令語言,又是一種程式設計語言。Shell有兩種執行命令的方式:
互動式(Interactive):解釋執行使用者的命令,使用者輸入一條命令,Shell就解釋執行一條。批處理(Batch):使用者事先寫一個Shell指令碼(Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一條地敲命令。
舉例:
新建一個檔案,副檔名為sh(sh代表shell),副檔名並不影響指令碼的執行,見名只意就好。
vi test.sh
#!/bin/bash
echo “hello world”
#!是一個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種Shell,echo命令用於向視窗輸出文字。
執行shell的兩種方法
作為可執行程式執行
chmod +x test.sh #加上可執行許可權
./test.sh
通過這種方式執行bash指令碼,第一行一定要寫對,好讓系統查詢到正確的直譯器。
作為直譯器的引數執行
bash test.sh
https://www.cnblogs.com/zhulynne/p/5927321.htmlhttp://www.elecfans.com/d/627422.html
https://www.cnblogs.com/star12111/p/7546266.html
https://www.jianshu.com/p/c6a3e1a1c418