跳過前面的部分,直接查看【Linux常用操作命令 】
1.簡介
【起源】林納斯·託瓦茲(芬蘭)出於個人愛好編寫了一套程序,後來在1991年10月5日發佈了Linux內核,而內核+用戶空間應用程序就是Linux系統。
【簡述】Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡爲核心的設計思想,是一個性能穩定的多用戶網絡操作系統。
【版本】市面上較知名的發行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
【應用領域】主要應用於嵌入式設備、超級計算機和服務器等領域,很多家庭、企業,甚至政府都推薦使用Linux。
爲什麼很多服務器都使用linux系統?
顯而易見,要論普及程度,windows系統居於首位,但是絕大多數公司的研發工作比如服務器端都更願意去使用Linux,這一現象與Linux的良好特性是分不開的。
2.良好特性
(1)開放性。開放性是指系統遵循世界標準規範,特別是遵循開放系統互連(OSI)國際標準。凡遵循國際標準所開發的硬件和軟件,都能彼此兼容,可方便地實現互連。
(2)多用戶。多用戶是指系統資源可以被不同用戶各自擁有使用,即每個用戶對自己的資源(例如:文件、設備)有特定的權限,互不影響。Linux和Unix都具有多用戶的特性。
(3)多任務。多任務是指計算機同時獨立的執行多個程序。Linux系統調度每一個進程,平等地訪問微處理器。由於CPU的處理速度非常快,其結果是,啓動的應用程序看起來好像在並行運行。事實上,從處理器執行一個應用程序中的一組指令到Linux調度微處理器再次運行這個程序之間只有很短的時間延遲,用戶是感覺不出來的。
(4)內核優勢。Linux系統比較簡單,內核優化的非常好,不存在刷新功能,工作時佔用資源特別少,佔用內存小,早期的linux佔用64MB就可以很流暢的運行;這一特性導致它在服務器行業不可撼動,而windows系統較爲複雜,運行效率低。
(5)良好的用戶界面 。Linux向用戶提供了兩種界面:用戶界面和系統調用,即桌面式界面和命令式界面(shell)。
Linux的傳統用戶界面是基於文本的命令行界面,即shell,它既可以聯機使用,又可存在文件上脫機使用。shell有很強的程序設計能力,用戶可方便地用它編制程序,從而爲用戶擴充系統功能提供了更高級的手段。可編程Shell是指將多條命令組合在一起,形成一個 Shell程序,這個程序可以單獨運行,也可以與其他程序同時運行。
系統調用給用戶提供編程時使用的界面。用戶可以在編程時直接使用系統提供的系統調用命令。系統通過這個界面爲用戶程序提供低級、高效率的服務。Linux還爲用戶提供了圖形用戶界面。它利用鼠標、菜單、窗口、滾動條等設施,給用戶呈現一個直觀、易操作、交互性強的友好的圖形化界面。
(6)使用者與羣組的規劃。在Linux的機器中,檔案的屬性分爲 【可寫 、可讀 、可執行】,這些屬性可分爲【檔案擁有者、檔案所屬羣組、其它非擁有者與所屬羣者】 。這對於項目計劃或者其它計劃開發者具有相當良好的系統保密性。
(7)豐富的軟件支持。與其他的操作系統不同的是,安裝了Linux系統後,用戶常用的一些辦公軟件、圖形處理工具、多媒體播放軟件和網絡工具等都已無需安裝。而對於程序開發人員來說,Linux更是一個很好的操作平臺,在Linux 的軟件包中,包含了多種程序語言與開發工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。
(8)設備獨立性 。設備獨立性是指操作系統把所有外部設備統一當作成文件來看待,只要安裝它們的驅動程序,任何用戶都可以象使用文件一樣,操縱、使用這些設備,而不必知道它們的具體存在形式。 具有設備獨立性的操作系統,通過把每一個外圍設備看作一個獨立文件來簡化增加新設備的工作。當需要增加新設備時、系統管理員就在內核中增加必要的連接。這種連接(也稱作設備驅動程序)保證每次調用設備提供服務時,內核以相同的方式來處理它們。當新的及更好的外設被開發並交付給用戶時,操作允許在這些設備連接到內核後,就能不受限制地立即訪問它們。設備獨立性的關鍵在於內核的適應能力。其他操作系統只允許一定數量或一定種類的外部設備連接。而設備獨立性的操作系統能夠容納任意種類及任意數量的設備,因爲每一個設備都是通過其與內核的專用連接獨立進行訪問。
Linux是具有設備獨立性的操作系統,它的內核具有高度適應能力,隨着更多的程序員加入Linux編程,會有更多硬件設備加入到各種Linux內核和發行版本中。另外,由於用戶可以免費得到Linux的內核源代碼,因此,用戶可以修改內核源代碼,以便適應新增加的外部設備。
(9)網絡支持。完善的內置網絡是Linux的一大特點。Linux在通信和網絡功能方面優於其他操作系統。其他操作系統不包含如此緊密地和內核結合在一起的連接網絡的能力,也沒有內置這些聯網特性的靈活性。而Linux爲用戶提供了完善的、強大的網絡功能。
支持Internet是其網絡功能之一。Linux免費提供了大量支持Internet的軟件,Internet是在Unix領域中建立並繁榮起來的,在這方面使用Linux是相當方便的,用戶能用Linux與世界上的其他人通過Internet網絡進行通信。
文件傳輸是其網絡功能之二。用戶能通過一些Linux命令完成內部信息或文件的傳輸。 遠程訪問是其網絡功能之三。Linux不僅允許進行文件和程序的傳輸,它還爲系統管理員和技術人員提供了訪問其他系統的窗口。通過這種遠程訪問的功能,一位技術人員能夠有效地爲多個系統服務,即使那些系統位於相距很遠的地方。
綜上,linux是一個多用戶、多任務、多線程、內核優化良好並提供豐富網絡支持和具有設備獨立性的開源性操作系統。企業服務器使用linux系統,降低了成本,掌握了系統控制權,可根據自己需要修剪系統功能,用戶可定製性較強,便於開發和管理。
3.目錄結構
在根目錄下輸入命令:ls ,查看系統目錄結構如下:
/root:該目錄爲系統管理員,也稱作超級權限者的用戶主目錄。
/bin:Binary的縮寫, 存放着最經常使用的命令。
/boot:存放啓動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件。
/dev :Device(設備)的縮寫, 存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。
/etc:存放所有的系統管理所需要的配置文件和子目錄。
/home:用戶的主目錄,在Linux中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的。
/lib:存放系統最基本的動態連接共享庫,其作用類似於Windows裏的DLL文件。幾乎所有的應用程序都需要用到這些共享庫。
/media:linux系統會自動識別一些設備,例如U盤、光驅等等,並把識別的設備掛載到這個目錄下。
/opt:默認爲空。存放linux系統上額外安裝的軟件,比如安裝一個ORACLE數據庫或者部署一個項目就可以放到這個目錄下。
/usr: 這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似於windows下的program files目錄。/usr/bin:系統用戶使用的應用程序。/usr/sbin:超級用戶使用的比較高級的管理程序和系統守護程序。
/proc:映射系統內存的虛擬目錄,可以直接訪問這個目錄來獲取系統信息。這個目錄的內容不在硬盤上而是在內存裏,我們也可以直接修改裏面的某些文件,比如可以通過下面的命令,使別人無法ping你的機器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all。
/var:這個目錄中存放着在不斷擴充着的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌
4.Linux常用操作命令
4.1 查看Linux版本信息
cat /etc/issue //查看Linux 版本信息
uname -a //查看架構信息
uname –r //查看內核 信息
有時候對linux進行配置或安裝軟件後,需要重啓Linux系統才能使其生效。重啓系統的命令爲 reboot,但是有的配置直接使用命令就可以使其立即生效,例如:命令“source /etc/profile” 可使etc下的配置文件profile的改動信息即時生效。
4.2 操作目錄
跳轉目錄
cd user 切換到該目錄下user目錄
cd ../ 切換到上一層目錄
cd / 切換到系統根目錄
cd ~ 切換到用戶主目錄(root目錄)
cd- 切換到上一個所在目錄
創建目錄
mkdir /usr/test 創建/usr/test目錄
查看目錄
pwd //查看當前目錄路徑(有時過多的操作而忘記當前位置,可用此命令查看當前路徑)
pwd -P //顯示出當前實際路徑而非使用連接路徑
find type f -print //查看當前目錄下的文件,包括子目錄下的文件
顯示目錄
ls //顯示當前目錄下非影藏文件與目錄
ls –a //顯示當前目錄下包括影藏文件在內的所有文件列表
ls -1 //當前目錄下包括影藏文件在內的所有文件列表,以垂直方式分佈列表。
ls -m //當前目錄下包括影藏文件在內的所有文件列表,以水平方式分佈列表,逗號隔開
ls -l|wc -l //用於統計當前文件夾中文件的數量。
查找目錄
命令:find 目錄 參數
示例:查找/root下的與test相關的目錄(文件) find /root -name ‘test*’
修改目錄
命令 :mv 目錄名稱 新目錄名稱
mv oldTest newTest
mv也可以對各種文件,壓縮包等進行重命名操作
移動目錄
命令:mv 目錄名稱 目錄的新位置
mv newTest /usr 在test下將newTest目錄剪切到 /usr下面
拷貝補錄
命令:cp -r
目錄名稱 目錄拷貝的目標位置 -----r代表遞歸拷貝
cp -r /usr/newTest /test 將/usr下的newTest拷貝到根目錄下的test中
cp命令不僅可以拷貝目錄還可以拷貝文件,壓縮包等,拷貝文件和壓縮包時不用寫-r遞歸
刪除目錄
命令:rm [-rf] 目錄
示例:刪除/usr下的newTest,進入/usr下使用rm -r newTest
示例:刪除/test下的newTest而不需要詢問強制刪除,在/test下使用rm -rf newTest
rm不僅可以刪除目錄,也可以刪除其他文件或壓縮包,爲了增強我們的記憶,無論刪除任何目錄或文件,都直接使用rm -rf 目錄/文件/壓縮包
4.3 操作文件
添加、打開、保存、關閉文件
touch /test/a.txt //在test目錄下創建添加a.txt文件
(vi命令模式)
vi filename //打開filename文件
:w //保存文件
:w vpser.net //保存至vpser.net文件
退出:先按esc鍵進入退出模式,然後執行下面命令:
:q //退出編輯器,如果文件已修改請使用下面的命令
:q! //退出編輯器,且不保存
:wq //退出編輯器,且保存文件
:wq! //保存並退出編輯器
有的文件插入內容之後無法保存,可使用命令“:w!sudo tee %”強制執行。
還有一個vim命令模式,也是用來打開文件的,不同的是vim比較高級,可以視爲vi的升級版本,vi適用於文本編輯,但是vim更適用於coding
刪除文件和壓縮文件
rm //刪除文件
rm -rf //刪除文件夾
編輯文件
vi命令模式下執行下面命令後將進入插入模式,按ESC鍵可退出插入模式)
a //在當前光標位置的右邊添加文本
i //在當前光標位置的左邊添加文本
A //在當前行的末尾位置添加文本
I //在當前行的開始處添加文本(非空字符的行首)
O //在當前行的上面新建一行
o //在當前行的下面新建一行
R //替換(覆蓋)當前光標位置及後面的若干文本
J //合併光標所在行及下一行爲一行(依然在命令模式)
鍵入需要插入的信息之後,可以按ESC鍵,然後輸入冒號和和保存退出命令。
形式:按ESC鍵,然後輸入命令“:wq!”可強制保存並退出當前文件編輯器。
查看文件
cat命令連接文件並打印到標準輸出設備上,經常用來顯示文件內容,例如:
cat m1 //在屏幕上顯示文件ml的內容)
cat m1 m2 //同時顯示文件ml和m2的內容)
cat m1 m2 > file //將文件ml和m2合併後放入文件file中,等於同事創建了新的文件file)
其他參數:
-n或-number //由1開始對所有輸出的行數編號;
-b或--number-nonblank //和-n相似,只不過對於空白行不編號;
-s或--squeeze-blank //當遇到有連續兩行以上的空白行,就代換爲一行的空白行;
-A //顯示不可打印字符,行尾顯示“$”;
-e //等價於"-vE"選項;
-t //等價於"-vT"選項;
cat filname //正序查看 (場景:查看日誌最近一次操作信息)
tac filename //倒序查看(場景:查看日誌頭部的工程啓動信息信息)
tail filename //查看文件的末尾信息 (場景:查看最近一次日誌變化)
tail -f filename //循環監控查看文件的末尾信息(場景:監控日誌變化,常用)
重命名
linux 給文件改名的命令是mv命令,用來給文件或目錄改名或將文件由一個目錄移入另一個目錄中,等同於DOS系統下的ren和move命令的組合,使用權限是所有用戶。
格式
mv [options] 源文件或目錄 目標文件或目錄。
主要參數[options]
-i:交互方式操作。如果mv操作將導致對已存在的目標文件的覆蓋,此時系統詢問是否重寫,要求用戶回答”y”或”n”,這樣可以避免誤覆蓋文件。
-f:禁止交互操作。mv操作要覆蓋某個已有的目標文件時不給任何指示,指定此參數後i參數將不再起作用。
選擇參數
當選擇參數類型是文件時,mv命令完成文件重命名,它將所給的源文件或目錄重命名爲給定的目標文件名。
實例:$ mv test.txt wbk.txt //將文件test.txt重命名爲wbk.txt
4.4 壓縮和解壓
.tar
tar xvf Filename.tar //解包
tar cvf Filename.tarDirname //打包
.gz
gunzip FileName.gz //解壓1
gzip -d FileName.gz //解壓2
gzip FileName //壓縮
.tar.gz和 .tgz
解壓:tar zxvf FileName.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName
.Z
解壓:uncompress FileName.Z
壓縮:compress FileName
.tar.Z
解壓:tar Zxvf FileName.tar.Z
壓縮:tar Zcvf FileName.tar.Z DirName
.zip
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName
.rar
解壓:rar x FileName.rar
壓縮:rar a FileName.rar DirName
4.5 系統方面
4.5.1 防火牆的打開關閉
CentOS中使用firewall工具管理防火牆,代替了原來的iptables,firewall的基本使用:
啓動防火牆: systemctl start firewalld
查看防火牆狀態: systemctl status firewalld
停止防火牆: systemctl disable firewalld
禁用防火牆: systemctl stop firewalld
例:防火牆開放/下發端口:
firewall-cmd --zone=public --add-port=8079/tcp --permanent
systemctl stop firewalld
systemctl start firewalld
linux防火牆默認打開,爲了安全起見,防火牆一般不會關閉,linux系統的端口一般不對外全部開放,所以不太建議關閉防火牆,所以一般都採取下發開放個別端口的方法。上述三行命令首先添加開放的端口8079,然後關閉防火牆再重新打開防火牆,添加的端口開放纔會成功。
例:防火牆回收端口:
firewall-cmd --remove-port=18081/tcp --permanent ##移除端口18081
firewall-cmd --reload ##重載防火牆配置,使其新規則生效
常用的firewall命令有:
firewall-cmd --state ##查看防火牆狀態,是否是running
firewall-cmd --reload ##重新載入防火牆配置,比如添加規則之後,需要執行此命令可以刷新規則,如果開放了端口,可以使用此命令刷新規則
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服務,在列表中的服務是放行的
firewall-cmd --query-service ftp ##查看ftp服務是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##臨時開放ftp服務
firewall-cmd --add-service=ftp --permanent ##永久開放ftp服務
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服務
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
firewall-cmd --remove-port=80/tcp --permanent ##永久移除80端口
firewall-cmd --list-ports ##查看已經開放的端口
iptables -L -n ##查看規則,這個命令是和iptables的相同的
man firewall-cmd ##查看幫助
systemctl是CentOS7的服務管理工具中主要的工具,它融合之前service和chkconfig的功能於一體。
啓動一個服務:systemctl start firewalld.service
關閉一個服務:systemctl stop firewalld.service
重啓一個服務:systemctl restart firewalld.service
顯示一個服務的狀態:systemctl statusfirewalld.service
在開機時啓用一個服務:systemctl enablefirewalld.service
在開機時禁用一個服務:systemctl disablefirewalld.service
查看服務是否開機啓動:systemctl is-enabledfirewalld.service
查看已啓動的服務列表:systemctl list-unit-files|grepenabled
查看啓動失敗的服務列表:systemctl --failed
4.5.2 設置時間
查詢時間 date
設置日期 date -s 02/18/2018
設置日期 date -s 10:12:50
4.5.3 查看系統狀態
set //查看本地shell定義的變量
env //查看環境變量
free //查看內存和交換區大小
/*顯示結果的第二行中
(-buffers/cache) used內存數:第一部分Mem行中的 used – buffers – cached,反應被程序實實在在喫掉的內存量。
(+buffers/cache) free內存數: 第一部分Mem行中的 free + buffers + cached,反應現在系統可以被佔用的內存量。
*/
strace //查看系統調用
lsof //查看所有打開文件
cat /proc/cpuinfo //查看CPU佔用
crontab -e //定時任務修改,注意,crontab不能獲取環境變量,也不支持相對目錄,必須使用絕對目錄,或者手動cd到工作目錄
tail /var/log/cron //查看crontab日誌
du //查看文件大小
ls -lht //查看文件大小
top //linux版本的任務管理器
which python //查看安裝程序位置
tty //查看當前終端號
find ~ -iname “*.git”(mac) //查找文件
find . -name “*.git”(linux) //查找文件
4.5.4 進程
netstat -tunlp //查看進程端口等信息
kill -pid //幹掉進程
ps -ef |grep tomcat //查看進程狀態
ps //顯示當前活動的進程
-e //顯示所有進程
-f //全格式
-l //長格式
–forest //顯示進程樹
中斷當前執行過程的命令 contrl+C
4.5.5 端口
查看某個端口:lsof -i:18081
殺死端口,即幹掉端口對應的進程,也就是kill 對應的進程號:kill -9 73917
4.5.6 查看設備信息
查看uuid的三種方法:
命令查看:blkid
文件查看:ls-l /dev/disk/by-uuid
命令查看:vol_id/dev/sda1
1.ifconfig -a 其中 HWaddr字段就是mac地址
2. cat/sys/class/net/eth0/address 查看eth0的mac地址
3. cat /proc/net/arp 查看連接到本機的遠端ip的mac地址
4. 程序中使用SIOCGIFHWADDR的ioctl命令獲取mac地址
注意:要和ifcfg-eth0中device和mac地址的eth0對應,mac地址也要對應
5.查看網卡物理地址(mac地址): ip addr
4.5.7 開啓關閉服務
一般的linux系統都是默認安裝了ssh服務,ssh的服務名一般都是sshd:
service sshd start //開啓ssh服務
service sshd stop //停止ssh服務
service sshd restart //開啓ssh服務
或者使用使用帶有路徑的腳本:
/etc/init.d/sshd start
/etc/init.d/sshd stop
/etc/init.d/restart
4.6 關閉linux系統
sync //將數據由內存同步到硬盤中
shutdown //關機指令,你可以man shutdown 來看一下幫助文檔
//例如你可以運行如下命令關機:
shutdown –h 10 ‘This server will shutdown after 10 mins’
//這個命令告訴大家,計算機將在10分鐘後關機,並且會顯示在登陸用戶的當前屏幕中
Shutdown –h now //立馬關機
Shutdown –h 20:25 //系統會在今天20:25關機
Shutdown –h +10 //十分鐘後關機
Shutdown –r now //系統立馬重啓
Shutdown –r +10 //系統十分鐘後重啓
reboot //就是重啓,等同於 shutdown –r now
halt //關閉系統,等同於shutdown –h now 和 poweroff
4.7 網絡測試
telnet 10.5.146.2 8020 //查看端口應用是否可以訪問
//下面兩句話就可以實現一個簡單的網絡聊天程序
nc -l 1234
nc localhost 1234
nc -v 10.5.146.2 8021 //檢查遠程計算機端口是否開放
4.8 性能測試
time命令,time後面跟一條可執行的指令,time負責測算這條指令的執行時間,如:time ps aux 表示執行ps aux,並計算這條指令的執行時間,結果會先展示ps的執行結果,然後隔一行展示如下結果:
real 0m0.032s //實際的時鐘時間
user 0m0.004s //進程在用戶模式使用的時間
sys 0m0.016s //進程在內核中使用的時間
real是後兩者的和加上進程被阻塞的時間(如其他進程的時間片和IO阻塞)
4.9 其他問題
cd /etc/sysconfig/network-scripts/ //目錄下的文件寫入時 出現 E121:無法打開並寫入文件解決方案
解決方案:
1. 保存的時候用:w !sudo tee % ,表示強制創建一個文件並寫入。
2. 輸入密碼即可
Linux系統的root賬戶不允許遠程連接,修改配置重啓可解決(因爲root賬戶的權限更多,使用很方便,一般都使用root賬戶連接)。
典型例子:Xshell使用root用戶連接Ubuntu14.04時,提示SSH服務器拒絕了密碼,請再試一次
1.在Linux OS中root賬戶下鍵入:"vim/etc/ssh/sshd_config",可進入配置文件,有很多內容。
2.找到如下配置項:
# Authentication:
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes
改爲:
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
點擊ESC返回鍵,輸入“:wq!”保存並退出。
3.重啓 SSH 服務,輸入命令:“servicesshd restart”或 “/etc/init.d/sshdrestart”即可。
java 開發其他高頻命令
①顯示當前所在位置:pwd
②搜索命令: grep 要搜索的字符串 要搜索的文件
grep to sudo.conf //搜索/usr/sudo.conf文件中包含字符串to的行
grep to sudo.conf --color //搜索/usr/sudu.conf文件中包含字符串to的行 to要高亮顯示
③管道命令: |
將前一個命令的輸出作爲本次目錄的輸入
ps -ef | grep system //查看當前系統中所有的進程中包括system字符串的進程
④查看進程 ps -ef
查看當前系統中運行的進程
⑤ 殺死進程 kill -9 進程的pid
⑥網絡通信命令
ifconfig 查看當前系統的網卡信息,比如查看ip地址
⑦連接情況
ping 192.168.1.103 查看與某臺機器的連接情況
⑧查看當前系統的端口使用
netstat -an
5 個人電腦腦模擬服務器
1.首先,在個人電腦上安裝VMware,類似於自己的電腦上有一臺電腦或者叫服務器,即提供了一臺虛擬機。
2.在VMware上安裝CentOS7或Linux其他系列的操作系統,即給服務器安裝系統。一般服務器都會使用Linux,至於原因,很大程度上在於它的多用戶、多任務、良好的網絡支持,以及重要的內核優勢(使用很小的內存便足以流暢的工作)特性。
3.在本地電腦上,安裝Xftp和Xshell用於連接Linux,Xftp用於查看傳輸linux文件,Xhell則類似於linux系統的遠程界面一樣,可以操作linux系統。
4.可以在服務器Linux系統上部署項目,如在Linux安裝Tomcat,然後將一個完成可運行的Maven項目打包爲war包,然後部署到Linux的Tomcat上(解壓war包到Webapps目錄下)。