學前理論
- linux主要特征 :一切且檔案(目錄、硬碟等都是檔案);硬體都在/dev 目錄,如硬碟、U盤為/dev/sd[a-d]; /dev/sr0(/dev/cdrom)是光驅的設備名(df命令查看),為設備檔案,代表的是光驅本身,得把這個設備掛載到目錄下(一般為/mnt)(檔案系統的臨時掛載點),才能對設備上的檔案進行讀寫等操作;
- 不懂的命令 :man 命令(查用法、全稱),只記得關鍵詞,可用man -k 關鍵詞;
- Linux命令常用結構 :
Command [-option] [argument]
Command:即是要運行的命令的本身,說白了就是一個軟體(程式);
Option:是選項(可選),選項是控制命令運行狀態和行為的(可多個選項一起,如df -hT);
Argument:是引數(可選),是命令要操作物件如檔案、路徑、資料、目錄等;
在指令的第一部分按[tab]鍵一下為[命令補全],兩下為所有命令選擇,在非第一部分按[tab]鍵兩下為[檔案補全]; - linux命令區分大小寫;
開關機
- sync :把記憶體中的資料寫到磁盤中(關機、重啟前都需先執行sync)
- shutdown -r now或reboot :立刻重啟
- shutdown -h now :立刻關機
- shutdown -h 20:00 :預定時間關閉系統(晚上8點關機,如果現在超過8點,則明晚8點)
- shutdown -h +10 :預定時間關閉系統(10分鐘后關機)
- shutdown -c :取消按預定時間關閉系統
系統資訊
- who am i :查看當前使用的終端
- who 或 w : 查看所有終端
- uname -m :顯示機器的處理器架構(如x86_64)
- cat /proc/version :查看linux版本資訊
- uname -r :顯示正在使用的內核版本
- lsb_release -a :查看系統發行版本(如CentOS7)
- rpm -qa | grep kernel-devel :查看kernel-devel版本(安裝軟體時編譯內核用,故需要保持內核版本一致性)
- yum install -y "kernel-devel-uname-r == $(uname -r)":安裝和Linux內核版本匹配的kernel-devel
- date :顯示系統日期 (date +%Y/%m/%d : 顯示效果如2018/01/01)
- date 070314592018.00 :設定時間(格式為月日時分年.秒 )
- clock -w :將時間修改保存到 BIOS
- cal 2018 :顯示2018年的日歷表
- clear :清空命令列
- ifconfig :顯示或設定網卡(查ip等)(類似windows中ipconfig)
- ping -c 3 www.baidu.com :測驗百度與本機的連接情況( -c 3表示測驗3次)
- cat /proc/cpuinfo :顯示CPU的資訊
- cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l :查看物理CPU個數
- cat /proc/cpuinfo| grep "cpu cores"| uniq :查看每個物理CPU的核數
- cat /proc/cpuinfo| grep "processor"| wc -l :查看邏輯CPU個數即執行緒數
系統性能
- top :動態實時顯示cpu、記憶體、行程等使用情況(類似windows下的任務管理器)
- top -d 2 -p 7427 :-d為畫面更新的秒數,默認5秒,-p為指定行程pid的資訊
- vmstat 2 10 :每隔2秒采集一次服務器狀態,采集10次(查看記憶體、io讀寫狀態、cpu)
- free -h :查看系統記憶體及虛擬記憶體使用情況
- df -h :顯示磁盤的空間使用情況
- iostat :可查io讀寫、cpu使用情況
- sar -u 3 5 :查看cpu使用情況(3秒一次,共5次)
- sar -d 2 3 :評估磁盤性能
- ps aux|grep firefox :獲取火狐的行程號(PID)(可查看行程占用cpu、記憶體百分比及行程觸發指令的路徑)
- kill -9 行程號 :強制殺死行程
- systemctl :查看正在運行的服務
檔案和目錄
cd:是Change Directory的縮寫,用來切換作業目錄,語法:cd [相對或絕對路徑或特殊符號]
-
cd :進入該用戶的主目錄 ~(root用戶為/root,其他用戶為/home/用戶名)
-
cd .. :回傳上一級目錄(注意要空格)
-
cd - :回傳上次所在目錄
-
cd / :回傳根目錄 (絕對路徑)
-
cd ./目錄1/目錄2 :進入當前目錄下的子目錄(相對路徑)
-
pwd :顯示作業路徑(Print Working Directory 的縮寫)
ls:是List的縮寫,用于列出目錄下的檔案,語法:
ls [選項][目錄或檔案名] -
ls -a :列出檔案下所有的檔案,包括以“.“開頭的隱藏檔案
-
*ls -lh .log :列出檔案的詳細資訊(.log結尾,*為通配符代表任意多個字符)
-
file 檔案或目錄 :顯示檔案的型別(目錄、text、zip、shell腳本等)
-
mkdir dir1 :創建目錄(dir1)(mkdir為make directory的縮寫)
-
mkdir -p ./dir1/dir2 :遞回創建目錄(-p:父目錄不存在時,同時建立)
-
touch a.txt :創建檔案a.txt
rm:可以洗掉一個目錄中的一個或多個檔案或目錄,也可以將某個目錄及其下屬的所有檔案及其子目錄均洗掉掉; 語法:rm (選項)(引數)(注:如果引數中含有目錄,則必須加上-r選項);
-
rm 檔案 :洗掉檔案
-
rm -r 目錄或檔案 :洗掉目錄(及目錄下所有檔案)(非空也可以)
-
rm -rf 目錄或檔案 :強制洗掉,如:rm -rf * 為洗掉當前目錄下所有檔案
-
find -inum 1842601 -exec rm -rf {} ; :洗掉亂碼檔案或目錄(會提示找不到此檔案或檔案夾但其實已經洗掉了)(上傳中文檔案會亂碼,rm命令洗掉不了)(先使用ls -i命令找到inode,即檔案或目錄前面的數字字串,如1842601;)
mv:是move的縮寫,可以用來剪切移動檔案、目錄或者將檔案改名;
語法:mv 源檔案 目標檔案(改名)或目錄(移動); -
mv a b :移動或者重命名一個檔案或者目錄(存在即移動目錄或覆寫檔案,不存在即改名)
-
mv /opt/git/g /opt/a :移動g到opt目錄下并改名為a(a目錄不存在,若存在則為移動g到a目錄下)
-
mv -t ./test a.txt b.txt :移動多個檔案到某目錄下
cp:復制檔案或目錄;cp命令可以將單個或多個檔案復制到一個已經存在的目錄下;
常用:cp -ai 檔案或目錄 目標目錄; -
cp -ai /opt/abc /opt/git/ :復制abc目錄(或檔案)到git目錄下(選項a表示檔案的屬性也復制、目錄下所有檔案都復制;i表示覆寫前詢問)
ln:link的縮寫,用于建立硬(軟)鏈接,常用于軟體安裝時建軟鏈接(類似快捷方式)到PATH;
語法:ln [-s] 源檔案 目標檔案 -
ln -s /opt/a.txt /opt/git/ :對檔案創建軟鏈接(快捷方式不改名還是a.txt)
-
ln -s /opt/a.txt /opt/git/b :(快捷方式改名為b)(下面的一樣可以改名)
-
ln -s /opt/mulu /opt/git/ :對目錄創建軟鏈接
-
ln /opt/a.txt /opt/git/ :對檔案創建硬鏈接
檔案權限
-
chmod [-R] 777檔案或目錄 :設定權限(chmod a+rwx a=chmod ugo +rwx a=chmod 777 a)
注: r(read)對應4,w(write)對應2,x(execute)執行對應1;
-R:遞回更改檔案屬組,就是在更改某個目錄檔案的屬組時,如果加上-R的引數,那么該目錄下的所有檔案的屬組都會更改) -
chmod [{ugoa}{+-=}{rwx}][檔案或目錄] :如chmod u-w,g+x,o=r test.txt為user(擁有者)去掉寫權限,group(所屬組)加上執行權限,other(其他人)權限等于只讀;
-
chown [-R] admin:root /opt/ :變更檔案及目錄的擁有者和所屬組(-R遞回處理所有檔案和檔案夾,admin為擁有者,root為所屬者)
檔案查找
- locate a.txt :在系統全域范圍內查找檔案名包含a.txt字樣的檔案(比find快);
locate:原理是updatedb會把檔案系統中的資訊存放到資料庫databases中(但一般一天才執行一次,所以locate找不到新創建的檔案,需要先手動執行updatedb,再執行locate),locate從資料庫中讀資料;
find:在目錄結構中搜索檔案,并執行指定的操作
語法:find pathname -options [-print -exec ...]
pathname :為 find命令所查找的目錄路徑,例如用.來表示當前目錄,用/來表示系統根目錄(find查找范圍為目標目錄及其子目錄所有檔案及目錄);
-exec: find命令對匹配的檔案執行該引數所給出的shell命令,相應命令的形式為'command' { } ;,注意{ }和;之間的空格;
-print: find命令將匹配的檔案輸出到標準輸出;
- find /home -mtime -2 :在/home下查最近2*24小時內改動過的檔案
- find . -size +100M :在當前目錄及子目錄下查找大于100M的檔案
- find . -type f :f表示檔案型別為普通檔案(b/d/c/p/l/f 分別為塊設備、目錄、字符設備、管道、符號鏈接、普通檔案)
- find . -mtime +2 -exec rm {} ; :查出更改時間在2*24小時以前的檔案并洗掉它**
- find . -name '*.log' -exec grep -i hello {} ; -print :在當前目錄及子目錄下查出檔案名后綴為.log的檔案并且該檔案內容包含了hello字樣并列印,-exec 命令 {} \表示對查出檔案操作,-i表示不區分大小寫;
- find . -name '*.log'|grep hello :在當前目錄及子目錄下查出檔案名后綴為.log的檔案并且檔案名包含了hello字樣(grep用來處理字串);
- grep -i 'HELLO' . -r -n :在當前目錄及子目錄下查找檔案內容中包含hello的檔案并顯示檔案路徑(-i表示忽略大小寫)
- which java :在環境變數$PATH設定的目錄里查找符合條件的檔案,并顯示路徑(查詢運行檔案所在路徑)
- whereis java :查看安裝的軟體的所有的檔案路徑(whereis 只能用于查找二進制檔案、源代碼檔案和man手冊頁,一般檔案的定位需使用locate命令)
查看檔案的內容
- cat [-n] 檔案名 :顯示檔案內容,連行號一起顯示
- less 檔案名 :一頁一頁的顯示檔案內容(搜索翻頁同man命令)
- head [-n] 檔案名 :顯示檔案頭n行內容,n指定顯示多少行
- tail [-nf] 檔案名:顯示檔案尾幾行內容,n指定顯示多少行,f用于實時追蹤檔案的所有更新,常用于查閱正在改變的日志檔案(如tail -f -n 3 a.log 表示開始顯示最后3行,并在檔案更新時實時追加顯示,沒有-n默認10行)
- sed -n '2,$p' ab :顯示第二行到最后一行;
- sed -n '/搜索的關鍵詞/p' a.txt :顯示包括關鍵詞所在行
- cat filename |grep abc -A10 :查看filename中含有abc所在行后10行(A10)、前10行(B10)內容
- less a.txt|grep git :顯示關鍵詞所在行,管道符”|”它只能處理由前面一個指令傳出的正確輸出資訊,對錯誤資訊資訊沒有直接處理能力,然后傳遞給下一個命令,作為標準的輸入;
- cat /etc/passwd |awk -F ':' '{print $1}' :顯示第一列
文本處理
- ls -l>file :輸出重定向>(改變原來系統命令的默認執行方式):ls -l命令結果輸出到file檔案中,若存在,則覆寫
- cat file1 >>file :輸出重定向之cat命令結果輸出追加到file檔案(>表示覆寫原檔案內容,>>表示追加內容)
- ls fileno 2>file : 2>表示重定向標準錯誤輸出(檔案不存在,報錯資訊保存至file檔案);
- cowsay <a.txt :重定向標準輸入’命令<檔案’表示將檔案做為命令的輸入(為從檔案讀資料作為輸入)
- sed -i '4,$d' a.txt :洗掉第四行到最后一行($表示最后一行)(sed可以增刪改查檔案內容)
- sed -i '$a 增加的字串' a.txt :在最后一行的下一行增加字串
- sed -i 's/old/new/g' a.txt :替換字串;格式為sed 's/要替換的字串/新的字串/g' 修改的檔案
- vim 檔案:編輯查看檔案(同vi)
用戶與權限
- useradd 用戶名 :創建用戶
- userdel -r 用戶名 :洗掉用戶:(-r表示把用戶的主目錄一起洗掉)
- usermod -g 組名 用戶名 :修改用戶的組
- usermod -aG 組名 用戶名 :將用戶添加到組
- groups test :查看test用戶所在的組
- cat /etc/group |grep test :查看test用戶詳情:用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄Shell
- passwd [ludf] 用戶名 :用戶改自己密碼,不需要輸入用戶名,選項-d:指定空口令,-l:禁用某用戶,-u解禁某用戶,-f:強迫用戶下次登錄時修改口令
- groupadd 組名 :創建用戶組
- groupdel 用戶組 :洗掉組
- groupmod -n 新組名 舊組名 :修改用戶組名字
- su - 用戶名:完整的切換到一個用戶環境(相當于登錄)(建議用這個)(退出用戶:exit)
- su 用戶名 :切換到用戶的身份(環境變數等沒變,導致很多命令要加上絕對路徑才能執行)
- sudo 命令 :以root的身份執行命令(輸入用戶自己的密碼,而su為輸入要切換用戶的密碼,普通用戶需設定/etc/sudoers才可用sudo)
磁盤管理
- df -h :顯示磁盤的空間使用情況 及掛載點
- df -h /var/log :(顯示log所在磁區(掛載點)、目錄所在磁盤及可用的磁盤容量)
- du -sm /var/log/* | sort -rn : 根據占用磁盤空間大小排序(MB)某目錄下檔案和目錄大小
- fdisk -l :查所有磁區及總容量,加/dev/sda為查硬碟a的磁區)
- fdisk /dev/sdb :對硬碟sdb進行磁區
- mount /dev/sda1 /mnt :硬碟sda1掛載到/mnt目錄(mount 裝置檔案名 掛載點)
- mount -t cifs -o username=luolanguo,password=win用戶賬號密碼,vers=3.0 //10.2.1.178/G /mnt/usb :遠程linux 共享掛載windows的U盤,G為U盤共享名,需設定U盤共享
- mount -o loop /opt/soft/CentOS-7-x86_64-DVD-1708.iso /media/CentOS :掛載iso檔案
- umount /dev/sda1 :取消掛載(umount 裝置檔案名或掛載點)
壓縮、解壓和打包備份
單純tar僅為打包(多個檔案包成一個大檔案),加上引數-j(bzip2格式.bz2)、-z(gzip格式.gz)可以備份、壓縮(-c)、解壓(-x),備份一般比壓縮多加引數-p(保留原本檔案的權限與屬性),-C可以指定解壓到特定目錄;bzip2、gzip只能對單一檔案壓縮;
- file 檔案名 :查檔案型別(可看是用哪一種方式壓縮的)
- tar -zxvf a.tar.gz -C ./test :解壓tar.gz到當前目錄下的test目錄
- tar -zcvf /opt/c.tar.gz ./a/ :壓縮tar.gz(把當前目錄下的a目錄及目錄下所有檔案壓縮為 /opt/目錄下的c.tar.gz,這樣tar -zxvf c.tar.gz解壓出來帶有目錄a)
- tar -jxvf a.tar.bz2 :解壓tar.bz2(到當前目錄)
- tar -jcvf c.tar.bz2 ./a/ :壓縮tar.bz2(把當前目錄下的a目錄及目錄下所有檔案壓縮到當前目錄下為c.tar.gz2)
- unzip a.zip :解壓zip(到當前目錄)
- unzip -o mdmtest.war -d /opt/mdm :推薦使用unzip解壓war包(-o覆寫原有檔案,-d指定檔案解壓后存盤的目錄)
- zip -r c.zip ./a/ :壓縮zip(把當前目錄下的a目錄及目錄下所有檔案壓縮到當前目錄下為c.zip
- bzip2 -k file1 : 壓縮一個 'file1' 的檔案(-k表示保留源檔案)(bzip2格式,比gzip好)
- bzip2 -d -k file1.bz2 : 解壓一個叫做 'file1.bz2'的檔案
- gzip file1 : 壓縮一個叫做 'file1'的檔案(gzip格式)(不能保留源檔案)
- gzip -9 file1 : 最大程度壓縮
- gzip -d file1.gz : 解壓縮一個叫做 'file1'的檔案
軟體安裝
- 盡量用yum源(apt-get)安裝,不行就rpm、deb包安裝,能不手動編譯的就不要手動編譯;
- dpkg只能安裝已經下載到本地機器上的deb包. apt-get能在線下載并安裝deb包,能更新系統,且還能自動處理包與包之間的依賴問題,這個是dpkg工具所不具備的;
- rpm 只能安裝已經下載到本地機器上的rpm 包. yum能在線下載并安裝rpm包,能更新系統,且還能自動處理包與包之間的依賴問題,這個是rpm 工具所不具備的;
- yum、rpm安裝檔案分布在/usr的bin、lib、share不同目錄,不用配置PATH,直接用命令,但可用命令卸載更新;
- 手動編譯軟體,默認位置為/usr/local下不同子目錄下,不用配置PATH直接用命令(手動指定安裝路徑需要加PATH),使得軟體更新和洗掉變得很麻煩,編譯安裝的軟體沒有卸載命令,卸載就是把所有這個軟體的檔案洗掉,
二進制(Binaries)包
yum安裝
在線下載并安裝rpm包,適用于CentOS、Fedora、RedHat及類似系統
- yum install epel-releas :安裝第三方yum源EPEL(企業版 Linux 附加軟體包的簡稱)
- yum repolist enabled :顯示可用的源倉庫(/etc/yum.repos.d/目錄下配置)
- yum install yum-fastestmirror :自動選擇最快的yum源
- yum list installed |grep java :列出已安裝的軟體(查看已安裝的JDK)
- yum remove java-1.8.0-openjdk.x86_64 :卸載軟體(卸載JDK)
- yum list java* :列出已安裝和可安裝的軟體(查看yum庫中的JDK包)
- yum install [-y] java-1.8.0-openjdk :安裝軟體JDK(-y自動安裝)(推薦這種方式安裝)
- yum install docker-ce-18.03.1.ce :安裝指定版本的軟體(已知docker-ce.x86_64 18.03.1.ce-1.el7.centos,則rpm包名為docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm)
- yum check-update [kernel] :列出所有可更新的軟體(檢查更新kernel)
- yum update tomcat :更新軟體(可所有)
- rpm -ql 軟體名稱 :查詢yum安裝路徑(軟體名稱可通過rpm -qa|grep java)
- yum info kernel :查看軟體(kernel)的資訊
- yum clean all :(清除快取,使最新的yum配置生效)
rpm包手動下載安裝
yum中沒有時用,適用于CentOS、Fedora、RedHat及類似系統;
- wget -P /opt https://網址 :下載到/opt目錄
- rpm -ivh wps-office-版本.x86_64.rpm :安裝rpm包(包要先下載)(要先裝依賴包)
- rpm -e wps-office :卸載軟體(注意不要軟體名不要版本號)
- rpm -qa |grep wps :查看安裝的rpm包
- rpm -ql 軟體名稱 :查看rpm包安裝路徑(軟體名稱可通過rpm -qa|grep java)
apt方式安裝
安裝deb包,類似yum安裝,適用于Debian, Ubuntu 以及類似系統;
- apt-get install aptitude :安裝aptitude工具,實作依賴自動安裝,依賴版本自動降級或升級
- aptitude install 軟體 :安裝軟體(推薦這種方式安裝)
- apt-cache search 軟體 :搜索軟體
- apt-get install 軟體 :安裝軟體
- apt-get purge 軟體 :卸載軟體(包括組態檔,只洗掉軟體purge換成remove)
- apt-get upgrade :更新所有已安裝的軟體包
- apt-get update :升級串列中的軟體包
- apt-get clean :從下載的軟體包中清理快取
deb包安裝
適用于Debian, Ubuntu 以及類似系統;
- dpkg -i package.deb :安裝一個 deb 包
- dpkg -r package_name :從系統洗掉一個 deb 包
- dpkg -l |grep chrome :查詢系統中所有已經安裝的 deb 包
- dpkg -L 軟體名稱 :查軟體安裝的檔案
解壓即用
大多數非開源的商業軟體都采取這種辦法;
二進制(Binaries)包如apache-jmeter-3.3.tgz,下載復制解壓到/opt,然后然后將該軟體的 bin 目錄加入到 PATH 中即可(vim /etc/profile export PATH=$PATH:/opt/apache-jmeter-3.3/bin);
軟體自己的模塊/包管理器
如python:系統的源中不可能包含該軟體的所有模塊; 系統的源中該軟體的模塊的更新要遠遠滯后于最新版本;手動安裝python,并用Python 自帶的 pip 安裝模塊(類似yum);
- pip install redis :安裝python軟體包redis
- pip unstall redis :卸載
- pip show --files redis :pip查看已安裝的包
- pip list --outdated :檢查更新
源代碼(Source)包
編譯安裝
源代碼包(一般有install檔案)如hello-2.2.tar.bz2,下載復制到/opt;
- tar -jxvf hello-2.2.tar.bz2 :解壓
- ./configure --prefix=/opt/軟體目錄名稱 :為編譯做好準備,加上 prefix 手動指定安裝路徑
- make :編譯
- make install :安裝
- make clean :洗掉安裝時產生的臨時檔案
- vim /etc/profile export PATH=$PATH:/opt/目錄/bin :手動指定安裝路徑需要加path
- hello :執行軟體:看INSTALL和README檔案(是否原始碼包、如何安裝、執行都看這兩個)
- rm -rf 軟體目錄名稱 :卸載軟體
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/158630.html
標籤:Linux
