https://mirrors.tuna.tsinghua.edu.cn/
http://www.92csz.com/study/linux/15.htm
https://blog.csdn.net/Augusdi/article/details/5693575
Ctrl + C:這個是用來終止當前命令的快捷鍵 php
Tab: 當你打一個命令打一半時,它會幫你補全的。不光是命令,當你打一個目錄時,一樣能夠補全,不信你試試。node
Ctrl + D: 退出當前終端,一樣你也能夠輸入exit。mysql
Ctrl + Z: 暫停當前進程,好比你正運行一個命令,忽然以爲有點問題想暫停一下,就可使用這個快捷鍵。暫停後,可使用fg 恢復它。linux
Ctrl + L: 清屏,使光標移動到第一行。sql
man 用來看一個命令的幫助文檔的。shell
/etc 這個是系統中的配置文件,若是你更改了該目錄下的某個文件可能會致使系統不能啓動。apache
/bin, /sbin, /usr/bin, /usr/sbin: 這是系統預設的執行文件的放置目錄,好比 ls 就是在/bin/ls 目錄下的。值得提出的是,/bin, /usr/bin 是給系統用戶使用的指令(除root外的通用戶),而/sbin, /usr/sbin 則是給root使用的指令。vim
/var: 這是一個很是重要的目錄,系統上跑了不少程序,那麼每一個程序都會有相應的日誌產生,而這些日誌就被記錄到這個目錄下,具體在/var/log 目錄下,另外mail的預設放置也是在這裏。windows
若是你要關機,必需要保證當前系統中沒有其餘用戶在線。能夠下達 who 這個指令,而若是要看網絡的聯機狀態,能夠下達 netstat -a 這個指令,而要看背景執行的程序能夠執行 ps -aux 這個指令。使用這些指令可讓你稍微瞭解主機目前的使用狀態!緩存
shutdown -h now halt poweroff
init 0 關機兩個命令
shutdown -r now
reboot
init 6 重啓命令
絕對路徑 /usr/local/mysql
相對路徑 cd /home 再執行cd test
pwd 顯示當前所在目錄
cd 進入一個目錄
cd ./ 當前目錄
cd ../ 返回上一級目錄
mkdir -p /tmp/test/123 建立絕對路徑下的目錄(遞歸建立目錄) 只能建立目錄
rmdir -p 刪除遞歸目錄(只有目錄爲空的時候才能夠刪除 而且刪除全部顯示目錄)
rm 刪除目錄或者文件
-f 強制的意思,若是不加這個選項,當刪除一個不存在的文件時會報錯。
-r 當刪除目錄時,加該選項,若是不加這個選項會報錯。rm是能夠刪除不爲空的目錄的。
rm -rf /tmp/test/123 刪除目錄123且不提示是否刪除
echo $PATH 打印變量 (中間會有:分隔開)
ls 列出文件屬性信息
-a 包含隱藏文件
-l 包括文件大小 建立日期 所屬主 所屬組等等(也能夠直接寫成ll)
mv /tmp/test/123 /root 把123目錄移動到/root目錄下 移動目錄
mv dir1 new_dir 重命名 一個目錄
-i 當目標文件存在時詢問是否覆蓋 mv = mv -i
-u 當目標文件存在時纔會生效 不然不作任何動做
cp [選項] [ 來源文件 ] [目的文件] 複製文件或者目錄
cp -r /root/123 /tmp/test 把123目錄複製到test目錄下
cp -d 拷貝軟鏈接時須要添加 不然會拷貝快捷方式
cat 讀一個文件,並把讀出的內容打印到當前屏幕上
cat -n 讀取時顯示行號
cat -A 顯示全部,包括特殊字符
tac 反向打印(真特麼奇葩)
more 查看文件內容(當文件較多 cat沒法看到前面的內容時)能夠按回車或者空格慢慢看
less 查看文件內容(J 向下翻 K 向上翻 )
head install.log 顯示文件前10行
head -n install.log 顯示文件前n行
tail install.log 顯示文件後十行
tail -n install.log 顯示文件後n行
-f 動態顯示文件的最後十行,若是文件是不斷增長的,則用-f 選項。如:tail -f /var/log/messages
groupadd testgroup 建立test組
chgrp 目錄 文件 更改文件所屬組
useradd user1 添加用戶主
chown [-R] 帳戶名 文件名 更改文件屬帳戶
chowm [-R] 帳戶名:組名 文件名 更改當前目錄,且更改目錄中的目錄或者文件
chown -R user1:testgroup test 更改test及test下的全部目錄文件用戶主爲user1 所屬組爲testgroup,中間用:隔開
chmod 改變用戶對文件的讀寫權限
r=4 w=2 x=1
chmod -R xyz xyz爲數字 -R爲級聯更改
umask
umask語法: umask xxx (這裏的xxx表明三個數字) 表明滿權限減去所屬權限的餘數
eg:umask 002 即爲rwxrwxr-x
chattr 修改文件 隱藏屬性
chattr [=-+][ASaci][文件或者目錄名]
+-= :分別爲增長、減小、設定
A:增長該屬性後,文件或目錄的atime將不可被修改;
S:增長該屬性後,會將數據同步寫入磁盤中;
a:增長該屬性後,只能追加不能刪除,非root用戶不能設定該屬性;
c:自動壓縮該文件,讀取時會自動解壓;
i:增長後,使文件不能被刪除、重命名、設定鏈接、創建文件、新增數據;
lsattr 列出文件/目錄的特殊屬性
lsattr -a test3 列出文件test3的特殊屬性
where which locate find 查找文件
find [路徑][參數]
find
-atime +n :訪問或執行時間大於n天的文件
-ctime +n :寫入、更改inode屬性(例如更改全部者、權限或者鏈接)時間大於n天的文件
-mtime +n :寫入時間大於n天的文件
find -name filename 經過文件名字查找文件所在位置 絕對查找
find -type fa
find -size +500M 查找大於500m的文件
Linux文件系統在windows中是不能識別的,可是在linux系統中你能夠掛載的windows的文件系統,linux目前支持MS-DOS,VFAT,FAT,BSD等格式。
1.sh表明它是一個shell script ,2.tar.gz 表明它是一個壓縮包,my.cnf 表明它是一個配置文件,test.zip 表明它是一個壓縮文件
link 創建鏈接
ln [-s] [來源文件] [目的文件]
ln 經常使用的選項就一個-s ,若是不加就是創建硬鏈接,加上就創建軟鏈接。
ln passwd passwd-hard 創建硬鏈接 不會改變所佔空間大小 不能建立目錄的硬鏈接。
du -sk 查看當前目錄所佔空間大小
ln -s passwd passwd-soft 創建軟鏈接 會增長目錄所佔空間大小
[root@skt 456]# head -n1 passwd-soft
head: 沒法打開"passwd-soft" 讀取數據: 沒有那個文件或目錄 刪除原文件後沒法打開軟鏈接文件 目錄能夠實現軟鏈接
cat /etc/passwd
cat /etc/shadow 這兩個文件能夠說是linux系統中最重要的文件之一。若是沒有這兩個文件或者這兩個文件出問題,則你是沒法正常登陸linux系統的。
新增一個組 groupadd [-g GID] groupname 不加-g表示按照系統默認的gid建組 從500開始 加-g能夠自定義gid
刪除一個組 groupdel groupname uo
useradd -u 510 -g 500 -M -s /sbin/nologin test11 建立用戶test11 uid爲510 gid爲 500 沒有家目錄 且shell自定義爲/sbin/nologin
userdel [-r] username 刪除用戶 -r表示同時刪除所在家目錄
建立/修改一個用戶的密碼 「passwd [username]」
su username 切換用戶登陸 su - 直接切換到root 加」-「後會連同用戶的環境變量一塊兒切換過來。su test 後雖然切換到了test用戶,可是當前目錄仍是切換前的/root目錄,而後當用su - test時切換用戶後則到了test的家目錄/home/test
useradd 只建立用戶,建立完了用 passwd lilei 去設置新用戶的密碼。
adduser 會建立用戶,建立目錄,建立密碼(提示你設置),作這一系列的操做。
usermod root test15 給test15添加root權限
df 查看磁盤容量屬性
df -i df -k df -m df -h
du 查看文件或者目錄所佔空間大小
du [-abckmsh] 文件或者目錄名
-b 以bytes爲單位輸出,默認爲kbytes
-c 彙總同文件的大小
-k 以kb爲單位
-m 以mb爲單位
-s 至列出總和
-h 自動調節單位
fdisk 用於磁盤分區格式化的命令
fdisk [-l][設備名稱] 列出全部磁盤設備以及分區列表,不加-l表示進入磁盤分區操做模式
eg:fdisk /dev/hda
m:打印幫助列表
p:打印當前磁盤的分區狀況。
n:從新創建一個新的分區。
w:保存操做。
q:退出。
d:刪除一個分區。
Command (m for help): 輸入功能字母
mkfs.ext2/mkfs.ext3/mke2fs 格式化linux硬盤分區
-b 分區時設定區塊空間大小,102四、204八、4096bytes
-i 設定inode大小
-N 設定iNode數量
-c 格式化以前檢查磁盤
-L 預設分區標籤label
-j 創建ext3格式的分區 使用mkfs.ext3時不須要
不加任何選項,直接格式化/dev/hdb1
e2label 用來查看或者修改分區的標籤(label)
e2label /dev/sda3 標籤名
fsck 檢查磁盤有沒有壞道
-A 自動檢測全部分區
-a 自動修復檢查到的壞分區
-r 提示是否修復
mount 掛載設備
/etc/fstab
async/sync :async表示和磁盤和內存不一樣步,系統每隔一段時間把內存數據寫入磁盤中,而sync則會時時同步內存和磁盤中數據;
auto/noauto :開機自動掛載/不自動掛載;
default:按照大多數永久文件系統的缺省值設置掛載定義,它包含了rw, suid, dev, exec, auto, nouser,async ;
ro:按只讀權限掛載 ;
rw:按可讀可寫權限掛載 ;
exec/noexec :容許/不容許可執行文件執行,但千萬不要把根分區掛載爲noexec,那就沒法使用系統了,連mount命令都沒法使用了,這時只有從新作系統了;
user/nouser :容許/不容許root外的其餘用戶掛載分區,爲了安全考慮,請用nouser ;
suid/nosuid :容許/不容許分區有suid屬性,通常設置nosuid ;
usrquota :啓動使用者磁盤配額模式,磁盤配額相關內容在後續章節會作介紹;
grquota :啓動羣組磁盤配額模式;
mount -o remount,ro,sync,noauto /dev/sda1 /test1 把/dev/sda1掛載到/test1下 設置讀寫權限爲只讀,同步磁盤數據,開機不自動掛載
blkid 顯示磁盤分區的UUID 經過UUID掛載磁盤能夠確保惟一性
/etc/rc.d/rc.local 開機執行命令所在文件夾
echo 'mount UUID="a1273b79-cd0d-42d6-9e90-568b9203911b" /test2'>>/etc/rc,d/rc.local 將掛載寫入該文件夾 開機啓動執行
mount -t 文件類型 軟盤(vfat) 光盤(iso9660) 一般自動識別文件類型
umount 卸載設備
umount /test2 卸載/test2設備
umount -l /test2 強制卸載設備
創建swap文件
dd if=/dev/zero of=/tmp/newdisk bs=4k count=102400 建立一個swap文件 輸入端/dev/zero 輸出端/tmp/newdisk bs爲塊大小爲4k count定義有102400個塊
mkswap /tmp/newdisk 格式化swap分區
free [-m] 顯示虛擬內存使用狀況 -m表示以mb的形式查看
swapon 啓用swap文件
swapoff 關閉swap文件
quota 用於給用戶分配磁盤空間
quota -g 顯示某個組的限額
quota -u 顯示某個用戶的限額
quota -v 顯示的意思
quota -s 選擇inode或硬盤空間來顯示
quotacheck 掃描一個磁盤的quota空間
quotacheck -a 掃描全部已經mount的具備quota支持的磁盤
quotacheck -u 掃描某個使用者的文件及目錄
quotacheck -g 掃描某個組的文件及目錄
quotacheck -v 顯示掃描過程
quotacheck -m 強制掃描
eduquota 用來編輯某個用戶或者組的quota值
deuquota -u編輯某個用戶的quota
eduquota -g編輯某個組的quota
eduquota -t編輯寬限時間
eduquota -p拷貝某個用戶或者組的quota帶另外一個用戶或者組eduquota -p user -u user
blocks:當前用戶在當前的磁盤分區中所佔的磁盤容量 單位爲kb
soft/hard :當前用戶在該Filesystem內的quota值,soft指的是最低限額,能夠超過這個值,但必需要在寬限時間內將磁盤容量下降到這個值如下。hard指的是最高限額,即不能超過這個值。當用戶的磁盤使用量高於soft值時,系統會警告用戶,提示其要在寬限時間內把使用空間下降到soft值之下。
inodes :目前使用掉的inode的狀態,不用修改。
quotaon 啓動quta,在編輯好quota後,須要啓動才能是quota生效
quotaon -a啓動所有設定的quota
quotaon -u啓動用戶quota
quotaon -g啓動組的quota
quotaon -s顯示相關信息
quotaoff 關閉quota quotaoff -a 關閉所有
echo "quotaon -a" >>/etc/rc.d/rc.local 將生命寫入到開機中
VIM 文本編輯器
三種模式
一、通常模式
上下移動光標;刪除某個字符;刪除某行;複製、粘貼一行或者多行
:
二、 編輯模式:通常模式下,是不能夠修改某一個字符的,只能到編輯模式了。從通常模式進入編輯模式,只需你按一個鍵便可(i,I,a,A,o,O,r,R)。當進入編輯模式時,會在屏幕的最下一行出現「INSERT或REPLACE」的字樣。從編輯模式回到通常模式只須要按一下鍵盤左上方的ESC鍵便可。
三、命令模式:在通常模式下,輸入」:」或者」/」便可進入命令模式。在該模式下,你能夠搜索某個字符或者字符串,也能夠保存、替換、退出、顯示行號等等。
.zip .gz .bz2
tar.gz tar.bz2
一、zip 壓縮文件名 原文件名
zip -r 壓縮文件名 原目錄
unzip 文件名
二、gzip 源文件 (直接壓縮成後面加.gz的格式,源文件消失)
gzip -c 源文件 > 壓縮文件 (源文件保留)
gzip -r 目錄 (壓縮目錄下的全部子文件,不能壓縮目錄)
gzip -d 壓縮文件 解壓縮
gunzip 壓縮文件 解壓縮
三、bzip2 源文件 壓縮爲.bz2格式,不保留源文件
bzip2 -k 源文件 壓縮後保留源文件
bzip2 -d 壓縮文件 解壓縮
bunzip2 壓縮文件 解壓縮
四、tar -zcvf 壓縮包名.tar.gz 源文件 壓縮文件
tar -zxvf 壓縮包名.tar.gz 解壓縮
五、tar -jcvf 壓縮包名.tar.bz2 源文件 壓縮文件
tar -jxvf 壓縮包名.tar.bz2 解壓縮
rpm 安裝rpm包
rpm -i 安裝的意思
rpm -v 可視化
rpm -h 顯示安裝進度
-- force 強制安裝
--nodeps 取消依賴,直接安裝
a2ps-4.13b-57.2.el5.i386.rpm 這個包來解釋一下,a2ps 爲包名;4.13b則爲版本信息;57.2.el5爲發佈版本號;i386爲運行平臺
rpm -Uvh filename -U 升級一個rpm包
rpm -e filename
卸載一個rpm包
rpm -q rpm包名 查詢一個包是否安裝(不要加平臺信息和後綴名)
rpm -qa |head 查詢全部安裝包 前十行
rpm -qi 包名 顯示一個包的相關信息(不要加平臺信息和後綴名)
rpm -ql 包名 顯示一個rpm包安裝的文件
rpm -qf 文件的絕對路徑 顯示一個文件屬於哪一個包
rpm -qf 'which vim' 顯示vim所屬包
yum list 顯示全部可用的包
yum search vim 搜索一個包(yum list |grep vim)
yum install -y [rpm包名] yum安裝一個rpm包 -y表示省略掉和用戶交互的步驟
yum uninstall -y [包名] yum卸載一個rpm包
yum update -y [包名] yum升級一個rpm包
yum remove -y [包名] yum卸載一個rpm包
利用yum下載一個rpm
yum install -y yum -downloadonly.noarch 安裝yum-downloadonly插件
yum install test.rpm -y --downloadonly // 下載不安裝
yum install test.rpm -y --downloadonly --downloaddir=/usr/local/scr 指定到目錄
源碼包安裝
1. ./config 在這一步能夠定製功能,加上相應的選項便可,具備有什麼選項能夠經過」./config --help 」命令來查看。在這一步會自動檢測你的linux系統與相關的套件是否有編譯該源碼包時須要的庫,由於一旦缺乏某個庫就不能完成編譯。只有檢測經過後纔會生成一個Makefile文件。
2. make 使用這個命令會根據Makefile文件中預設的參數進行編譯,這一步其實就是gcc在工做了。
3. make install 安裝步驟,生成相關的軟件存放目錄和配置文件的過程。
./comfigure --prefix=/usr/local/ngnix 指定安裝目錄
ls -l Makefile 或者 echo &? 顯示爲0 均可以查看./config是否完成
shell
一、記錄歷史命令
!! 執行上一條命令
!n 執行第n條命令
!字符串 執行歷史中最近一次以此字符串爲開頭的命令
二、指令和文件名補全
tab
三、別名
alias 給一個指令起別名
unlias 解除別名功能
alias cp='cp -i' 直接敲alias會看到目前系統預設別名
四、通配符
* 匹配零個或者多個字符
? 匹配一個字符
五、輸入輸出重定向
< 輸入重定向
> 覆蓋輸出重定向
2> 錯誤重定向
>> 追加輸出錯誤重定向
六、管道符
| 把前面的命令運行結果丟給後面命令
七、做業控制
ctrl + z 暫停進程
fg 恢復
bg 使他到後臺運行
ctrl + c 終止進程
變量(大寫)
env 列出所有系統預設環境變量
HOME 當前用戶主目錄
HISTSIZE 歷史記錄數量
LOGNAME 當前用戶登陸名
HOSTNAME 主機名稱
SHELL 前用戶shell類型
LANG 語言環境變量
MAIL 當前用戶的郵件存放目錄
PWD 當前目錄
set 列出系統預設的全部變量
自定義變量
一、全部用戶登錄後均可以使用該變量
打開/etc/profile 在文末加上export + myname=Aming(自定義的變量)
運行source /etc/profile
二、只想當前用戶使用該變量
在用戶主目錄下的.bashrc文件最後一行加上export + myname=Aming(自定義的變量)
運行source .bashrc
自定義變量規則
a. 設定變量的格式爲」a=b」,其中a爲變量名,b爲變量的內容,等號兩邊不能有空格;
b. 變量名只能由英、數字以及下劃線組成,並且不能以數字開頭;
c. 當變量內容帶有特殊字符(如空格)時,須要加上單引號;變量內容中自己帶有單引號,就須要用到雙引號。
d. 若是變量內容中須要用到其餘命令運行結果則可使用反引號;
e. 變量內容能夠累加其餘變量的內容,須要加雙引號;
pstree 打印全部進程的進程樹
export 聲明變量 export abc 後就能夠看到abc=123 不加變量名錶示聲明全部變量
unset abc 取消設定的abc變量
【系統環境變量與我的環境變量的配置文件】
/etc/profile 放置變量的文件路徑,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umas等等
/etc/bashrc 主要預設umask以及PS1
[root@localhost ~]echo $ps1 輸出[\u@\h \w]\$ 用戶 主機名 當前目錄 #
【linux shell中的特殊符號】
一、* :表明零個或多個字符或數字。
二、? :只表明一個任意的字符
三、# :這個符號在linux中表示註釋說明的意思,即」#」後面的內容linux忽略掉
四、\ :脫意字符,將後面的特殊符號(例如」*」 )還原爲普通字符。
五、$ :除了用於變量前面的標識符外,還有一個妙用,就是和’!’結合起來使用,表示上條命中中最後一個變量
六、grep :過濾一個或多個字符
七、 cut :截取某一個字段
-d :後面跟分隔字符,分隔字符要用雙引號括起來
-c :後面接的是第幾個字符
-f :後面接的是第幾個區塊
八、sort :用作排序
-t 分隔符 :做用跟cut的-d一個意思
-n :使用純數字排序
-r :反向排序
-u :去重複
-kn1,n2 :由n1區間排序到n2區間,能夠只寫-kn1,即對n1字段排序
九、wc :統計文檔的行數、字符數、詞數,經常使用的選項爲:
-l :統計行數
-m :統計字符數
-w :統計詞數
十、 uniq :去重複的行 uniq -c 統計重複的行,並把行數寫在前面,在進行uniq以前,須要先用sort排序而後才能uniq
十一、tee 至關於> 但能夠顯示內容
十二、tr 替換
-d :刪除某個字符,-d 後面跟要刪除的字符
-s :把重複的字符去掉
1三、split -b 依據大小切割文檔
split -b 500 /etc/passwd passwd 後面的passwd爲分割後文件名的前綴,分割後的文件名爲passwdaa, passwdab, passwdac …
split -l 依據行數切割文檔
split - l 10 /etc/passwd passwd
1四、; 運行兩個或兩個以上的命令如何呢?則須要在命令之間加一個」;」使用」;」時,無論command1是否執行成功都會執行command2;
1五、& 將一條命令放到後臺執行
sleep 100 & 休眠100秒
jobs 查看後臺執行的任務 fg能夠將任務調整到前臺執行
1六、[] 中間爲字符組合 表明中間字符中的任意一個
ls test[12a] 輸出testa
1七、&& 與 || 與和或 使用」&&」時,只有command1執行成功後,command2纔會執行,不然command2不執行;使用」||」時,command1執行成功後command2 不執行,不然去執行command2,總之command1和command2總有一條命令會執行。
grep
語法: grep [-cinvABC] ‘word’ filename
-c :打印符合要求的行數
-i :忽略大小寫
-n :在輸出符合要求的行的同時連同行號一塊兒輸出
-v :打印不符合要求的行
-A :後跟一個數字(有無空格均可以),例如 –A2則表示打印符合要求的行以及下面兩行
-B :後跟一個數字,例如 –B2 則表示打印符合要求的行以及上面兩行
-C :後跟一個數字,例如 –C2 則表示打印符合要求的行以及上下各兩行
^ 表示行的開頭 ^r 表示已r開頭 [^a-zA-Z]在[]裏面表示取反
$ 表示行的結尾 r$ 表示結尾是r 空行則表示」^$」
.表示任意一個字符
ooo* 表示oo,ooo,oooo 或者更多
.* 表示0個或者多個任意字符
o\{2\} {}表示前面的字符o要出現的次數,兩邊要加\ 也能夠表示一個範圍\{n1,n2\} 其中n1<n2 表示重複n1到n2次前面的字符 n2能夠爲空 表示大於等於n1次
egrep grep升級版
o+ 篩選一個或者一個以上的o
o? 篩選零個或者一個o
111|aaa 篩選包含字符串1或者a
(oo) 表示一個oo總體
sed
sed -n 'n' p filename 打印文件的第n行記錄 'n'表示第幾行
sed -n '2' p test.txt 打印第二行
sed -n '2,4'p test.txt 打印第2到4行
sed -n '/qwe/p test.txt 打印包含qwe的行
sed -e '1'p -e '/312/'p -n test.txt 打印第一行和包含312的行 -e
sed '1'd test.txt 打印刪除第一行的其餘記錄
sed '3,$'d test.txt 打印刪除第三行到結尾的其餘記錄
sed '3,4s/sd/op/g' test.txt 打印將34行的sd替換成op的記錄 加g爲整行替換
sed 's/[0-9]//g' test.txt 打印刪除全部數字
awk
awk -F 截取某段 -F的做用是指定分隔符 不加則以空格或者tab爲分隔符
head -n2 test.txt |awk -F ':' '{print $1}' 截取test.txt前兩行中冒號截取的第一個字段 $1爲第一段以此類推 $0表示整行 輸出root和bin
awk '/root/' test.txt 查找包含root的記錄
awk -F ':' '$1~/root/' test.txt 匹配第一行中包含root的行記錄 ~匹配的意思
awk -F ':' '$3=="0"' test.txt 查找以冒號截段的行且第三段爲0的行記錄
cat test.txt |awk -F ':' '$3>="500"' test.txt ==表示精確匹配 500並非一個數字,因此得不到大於500的效果,輸出會有6或者7,8。後面也能夠加上」&&」 和 「||」表示「而且」和「或者」的意思。
awk的內置變量
NF: 表示分隔以後共有多少段
NR:表示行數
head -n5 test.txt |awk -F ':' '{print NF}' 打印:總共分隔了多少段 $NF表示最後一段
awk -F ':' 'NR>=20 && $1~/ssh/' test.txt 打印出冒號分隔的行數大於等於20且匹配包含ssh的行記錄
head -n2 test.txt |awk -F ':' '{$7=$4+$3; print $3,$4,$7}' 計算總和
awk -F ':' '$1=="root"' test.txt |sed 's/root/toor/' 用’:’做爲分隔符,查找第一段爲’root’的行,並把該段的’root’換成’toor’(能夠連同sed一塊兒使用)
awk -F':' '{print $1"@"$NF}' test.txt 用’:’做爲分隔符,打印第一段以及最後一段,而且中間用’@’鏈接
awk -F':' '{(sum+=$4)}; END {print sum}' test.txt 用’:’做爲分隔符,把整個文檔的第四段相加,求和;
shell腳本
vim test.sh
#! /bin/bash
內容
sh test.sh 調用腳本
chmod +x test.sh 增長執行權限
./ test.sh 增長權限後執行腳本
date %Y%m%d %H:%M:%S %w 日期 年月日 時分秒 星期
date -d "-1 day" -d表示前n天或者後n天的日期
變量
d=`date +%H:%M:%S` 反引號能夠將命令的值賦給變量
在腳本中引用變量時須要加上$
求和ab
a=1
b=2
sum=$[$a+$b]
echo "sum is $sum"
數學計算要用[]括起來而且外面要加$
echo "please input a number:"
read x
echo "please input another number:"
read y
sum=$[$x+$y]
echo "The sum of two numbers is $sum."
read表示能夠輸入得到變量的值 read x表示能夠輸入變量值x
read也能夠寫成這樣:
read -p "please input a number:" x -p表示相似於echo的做用
shell中的邏輯判斷
if 判斷語句;then
command
fi
fi表示退出if語句
read -p "please input your score:" a
if ((a<60)); then
echo"You didn't pass the exam"
fi
((a<60)) shell特有格式
帶有else
if 判斷語句; then
command
else
command
fi
read -p "please input your score:" a
if ((a<60)); then
echo"You didn't pass the exam"
else
echo"You pass the exam"
fi
帶有elif
read -p "please input your score:" a
if ((a<60)); then
echo"You didn't pass the exam"
elif ((a>60)) && ((a<85)); then
echo"You pass the exam"
else
echo"Good!You pass the exam"
fi
&&表示而且的意思||表示或者的意思 和上文同樣
case 變量 in
value1)
command
;;
value2)
command
;;
*)
command
;;
esac
value個數不限制 *表明剩餘的值
判斷奇偶
read -p "please input a nnumber:" n
a=$[$n%2]
case $a in
1)
echo "the number is odd"
;;
0)
echo "the number is even"
;;
esac
$n%2 表示變量問n除以2的餘數
循環
for循環
for 變量名 in 循環的條件;do
command
done
for i in `seq 1 5`;do
echo $i
done
while循環
while 條件;do
command
done
a=10
while [$a -ge 1};do
echo "$a"
a=$[$a-1]
done
在判斷數值大小除了能夠用」(( ))」的形式外,還可使用」[ ]」。可是就不能使用>, < , = 這樣的符號了,要使用 -lt (小於),-gt (大於),-le (小於等於),-ge (大於等於),-eq (等於),-ne (不等於)。
函數function
function 函數名(){
command
}
function sum(){
sum=$[$1+$2]
echo $sum
}
sum $1 $2
第十五章 linux系統平常管理
監控系統狀態
一、w查看當前系統(w|cat)
load average:’後面的三個數值,第一個數值表示1分鐘內系統的平均負載值;第二個數值表示5分鐘內系統的平均負載值;第三個數值表示15分鐘系統的平均負載值。
09:59:46 up 5 min, 2 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 09:55 4:35 0.06s 0.06s -bash
root pts/0 192.168.1.41 09:56 0.00s 0.12s 0.06s w
cat /proc/cpuinfo 查看服務器有幾個cpu 或者grep -c 'processor' /proc/cpuinfo
二、vmstat 監控系統的狀態
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 781976 34144 61544 0 0 51 3 37 24 0 1 99 1 0
procs顯示進程相關信息
r表示運行和等待cpu時間片的進程數,若是長期大於服務器cpu的個數,說明cpu不夠用了
b表示等待資源的進程數,若是長時間大於1,則須要關注一下
menory內存相關信息
swpd 表示切換到交換分區的內存數量
free 當前空閒的內存大小
buff 緩衝大小(即將寫入磁盤的)
cache 緩存大小(從磁盤中讀取的)
swap 內存交換狀況
si 由內存進入磁盤交換區的數量
so 由交換區進入內存的數量
io 磁盤使用狀況
bi 從塊設備讀取數據的量(讀磁盤)
bo 從塊設備寫入數據的量(寫磁盤)
system顯示採集間隔內發生的中斷次數
in 表示某一時間間隔中觀測到的每秒設備中斷數
cs 表示每秒產生的上下文切換次數
cpu顯示cpu的使用狀態
us 顯示用戶花費cpu時間百分比
sy 顯示系統花費cpu時間百分比
id 表示cpu處於空閒狀態的時間百分比
wa 表示io等待佔cpu時間百分比
st 表示被盜走的cpu時間百分比(通常爲0)
注意:r列,b列,和wa列 bi以及bo si, so
vmstat 1 5 表示每隔一分鐘打印一次系統狀態 連續打印5次
三、顯示進程所佔系統資源
top
top - 10:55:04 up 1:00, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 107 total, 1 running, 106 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1012456k total, 231140k used, 781316k free, 34232k buffers
Swap: 2047996k total, 0k used, 2047996k free, 61840k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12 root 20 0 0 0 0 S 0.3 0.0 0:02.70 events/1
2399 root 20 0 15032 1204 928 S 0.3 0.1 0:00.17 top
1 root 20 0 19356 1536 1228 S 0.0 0.2 0:01.49 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.28 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
%cpu %men cpu,內存使用狀況
四、sar 監控系統狀態
sar -n DEV 查看歷史網絡流量
Linux 2.6.32-573.el6.x86_64 (skt) 2018年04月13日 _x86_64_ (2 CPU)
09時54分40秒 LINUX RESTART
10時00分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10時10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10時10分01秒 eth0 12.77 0.08 0.82 0.01 0.00 0.00 0.00
10時20分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10時20分01秒 eth0 12.78 0.13 0.82 0.01 0.00 0.00 0.00
10時30分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10時30分01秒 eth0 12.61 0.03 0.81 0.00 0.00 0.00 0.00
IFACE 設備名稱 rxpck/s表示每秒進入收取的包的數量 txpck/s表示每秒發送出去的包的數量 rxkb/s表示每秒收取包的大小(單位Byte) txkb/s表示每秒發出包的大小 若是rxpck/s 那一列的數值大於4000,或者rxbyt/s那列大於5,000,000則頗有多是被攻擊了
sar -n DEV 1 5 打印一秒前的流量狀況 打印5次
sar -n DEV -f /var/log/sa/sa13 查看某一天的網卡流量歷史 13爲離如今最近的日期
sar -q 查看歷史負載
五、free 查看內存使用狀況
free 能夠加-m 或者-g 更換顯示單位
total used free shared buffers cached
Mem: 1012456 185136 827320 228 13368 56680
-/+ buffers/cache: 115088 897368
Swap: 2047996 0 2047996
查看內存使用多少,剩餘多少請看第二行的數據
六、ps 查看系統進程
ps aux 查看系統進程
PID 表示進程id kill PID 終止進程 kill -9 PID 強行終止進程
STAT :表示進程的狀態,進程狀態分爲如下幾種(不要求記住,但要了解)
D 不能中斷的進程(一般爲IO)
R 正在運行中的進程
S 已經中斷的進程,一般狀況下,系統中大部分進程都是這個狀態
T 已經中止或者暫停的進程,若是咱們正在運行一個命令,好比說sleep 10,若是咱們按一下ctrl -z 讓他暫停,那麼咱們用ps查看就會顯示T這個狀態
W 這個好像是說,從內核2.6xx 之後,表示爲沒有足夠的內存頁分配
X 已經死掉的進程(這個好像歷來不會出現)
Z 殭屍進程,殺不掉,打不死的垃圾進程,佔系統一小點資源,不過沒有關係。若是太多,就有問題了。通常不會出現。
< 高優先級進程
N 低優先級進程
L 在內存中被鎖了內存分頁
s 主進程
l 多線程進程
+ 表明在前臺運行的進程
ps aux |grep -c mingetty 能夠同管道符一塊兒使用 查看mingetty進程的數量
七、netstat 查看網絡情況
netstat -lnp (打印當前系統啓動哪些端口)
netstat -an (打印網絡鏈接情況)
netstat -an |grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 52 192.168.1.188:22 192.168.1.41:54981 ESTABLISHED
tcp 0 0 :::22 :::* LISTEN
unix 3 [ ] STREAM CONNECTED 14922
22爲端口號
八、抓包工具tcpdump
先安裝yum -y install tcpdump
tcpdump -nn -i eth0 表示抓取設備eth0網卡的包 -nn表示讓第三列和第四列顯示成ip+端口號的形式 不加-nn則顯示主機名和服務名稱
16:51:59.403841 IP 192.168.1.188.22 > 192.168.1.41.54981: Flags [P.], seq 47204468:47204744, ack 7781, win 304, length 276
16:51:59.404071 IP 192.168.1.188.22 > 192.168.1.41.54981: Flags [P.], seq 47204744:47204908, ack 7781, win 304, length 164
16:51:59.404228 IP 192.168.1.41.54981 > 192.168.1.188.22: Flags [.], ack 47204908, win 251, length 0
linux網絡相關
一、ifconfig查看網卡ip
ifconfig eth0 打印出eth0的ip信息
修改eth0的ip
修改配置文件: etc/sysconfig/network-scripts/ifcfg-eth0
修改IPADDR , NETMASK以及GATEWAY
重啓網絡服務 service network restart
二、給一個網卡設定多個IP
ifcfg-eth0複製成ifcfg-eth0:1 而後編輯ifcfg-eth0:1修改DEVICE以及IPADDR保存後重啓網卡
cp ifcfg-eth0 ifcfg-eth0:1
vim ifcfg-eth0:1
service network restart
3. 查看網卡鏈接狀態
mii-tool
四、更改主機名
hostname + 新名字
配置文件
vim /etc/sysconfig/network
五、設置DNS
配置文件/etc/resolv.conf
【linux的防火牆】
一、selinux 沒卵用 須要關閉
vim /etc/selinux/config
把SELINUX=enforcing改爲SELINUX=disabled 而後重啓機器
臨時關閉命令:
getenforcing 顯示狀態
setenforcing 0 更改狀態爲Permissive 關閉selinux 後面跟1表示狀態改成Enforcing
重啓以後會恢復
二、iptables
iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 動做
三個表
filter 主要用於過濾包 內建三個鏈INPUT、OUTPUT以及FORWARD INPUT做用於進入本機的包;OUTPUT做用於本機送出的包;FORWARD做用於那些跟本機無關的包。
nat 主要用處是網絡地址轉換 PREROUTING 鏈的做用是在包剛剛到達防火牆時改變它的目的地址,若是須要的話。OUTPUT鏈改變本地產生的包的目的地址。POSTROUTING鏈在包就要離開防火牆以前改變其源地址
mangle 主要是用於給數據包打標記,而後根據標記去操做哪些包
-t<表>:指定要操縱的表;
-A:向規則鏈中添加條目;
-D:從規則鏈中刪除條目;
-i:向規則鏈中插入條目;
-R:替換規則鏈中的條目;
-L:顯示規則鏈中已有的條目;
-F:清除規則鏈中已有的條目;
-Z:清空規則鏈中的數據包計算器和字節計數器;
-N:建立新的用戶自定義規則鏈;
-P:定義規則鏈中的默認目標;
-h:顯示幫助信息;
-p:指定要匹配的數據包協議類型;
-s:指定要匹配的數據包源ip地址;
-j<目標>:指定要跳轉的目標;
-i<網絡接口>:指定數據包進入本機的網絡接口;
-o<網絡接口>:指定數據包要離開本機所使用的網絡接口。
動做包括:
accept:接收數據包。
DROP:丟棄數據包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址轉換。
DNAT:目標地址轉換。
MASQUERADE:IP假裝(NAT),用於ADSL。
LOG:日誌記錄。
剩餘的內容太過複雜 有的虛擬機沒法實現 暫時不做操做
linux系統的任務計劃
crontab [u user] file
crontab [u user] [-e] [-l] [-r]
u表示爲指定用戶 不加則表示當前用戶
-e 指定計劃任務
-l 列出計劃任務
-r 刪除計劃任務
crontab -e
01 10 26 05 4 echo "ok" >/root/cron.log 指定一個計劃任務 從左到右依次是分,時,日,月,周+內容>指定到位置
1. 20 1 * * * echo 「」>/var/log/slow.log
2. 0 30 * * 0 /bin/sh /usr/local/sbin/backup.sh
3. 10 04 14 * * /bin/sh /usr/local/sbin/backup_month.sh
4. 0 */8 * * * ntpdate time.windows.com
5. 0 1,12,18 * * /bin/sh /usr/local/sbin/test.sh
6. 0 9-18 * * * /bin/sh /usr/local/sbin/test2.sh
每隔8小時,就是用所有小時(0-23)去除以8,你仔細想一下結果,其實算出來應該是0,8,16三個數。當遇到多個數(分鐘、小時、月、周)例如第5題,則須要用逗號隔開。而時間段是能夠用’-‘的方式表示的
linux的系統服務管理
一、ntsysv 配置服務開啓或者關閉
建議除’crond, iptables, network, sshd, syslog, irqbalance, sendmail, microcode_ctl’ 外其餘服務所有停掉
chkconfig查看全部預設的服務狀況
ls /etc/init.d/ = chkconfig --list
chkconfig能夠詳細到級別 0123456就是inittab裏面的啓動級別
chkconfig --level 3 crond 關閉級別爲3的crond服務
chkconfig --list |grep crond 列出此項服務
chkconfig crond on 不指定級別 默認對2345級別操做 打開2345級別的crond服務
chkconfig --del crond 刪除服務
chkconfig --add crond 添加服務到系統服務中
linux中的數據備份
一、rsync -arv 123 /tmp/123 將當前目錄下的123文件備份帶tmp下 命名爲123
rsync -arv 123 10.0.2.34:/root/ 遠程備份到根目錄下
二、rsync經常使用選項 rsync [OPTION]... SRC DST
-a 保持全部屬性 至關於-rlptgoD 後面能夠加上--no-option 表示關閉其中一個選項
-r 對子目錄以遞歸模式處理 主要針對目錄 單獨的文件則不須要
-v 打印信息 例如速率 文件數量等
-l 保留軟鏈接
-L 向對待常規文件同樣處理軟鏈接 若是SRC中有軟鏈接文件 加上則會將軟鏈接指向的文件備份到DST
-p 保持文件權限
-o 保持文件屬主信息
-g 保持文件屬組信息
-D 保持設備文件信息
-t 保持文件時間信息
--delete 刪除DST中SRC沒有的文件
--exclude=PATTERN 指定排除不須要的文件 =後面接文件名
-u 表示把DST中比SRC還新的文件排除掉 不覆蓋
三、rsync 應用實例
linux系統日誌
/etc/logrotate.conf 配置日誌文件 通常不作修改
/var/log/message是由syslogd這個守護進程產生的,若是停掉這個服務則系統不會產生/var/log/message
Syslogd服務的配置文件爲/etc/syslog.conf這個文件定義了日誌的級別
dmesg這個命令,它能夠顯示系統的啓動信息,若是你的某個硬件有問題(好比說網卡)用這個命令也是能夠看到的。
建議:之後在你平常的管理工總中要養成多看日誌的習慣,尤爲是一些應用軟件的日誌,好比apache, mysql, php等經常使用的軟件,看它們的日誌(錯誤日誌)能夠幫助你排查問題以及監控它們的運行情況是否良好。
xargs
ls 123.txt |xargs cat 查看123.txt內容
常常與find一塊兒用
find ./ -mtime +10 |xargs rm 刪除大於10天前的文件
ls *.txt|xargs -n1 -i{} mv {} {}_bak 查找當前目錄下全部.txt的文件,而後把這些.txt的文件變成.txt_bak -n1意思是一個一個對象的去處理,-i{} 把前面的對象使用{}取代,mv {} {}_bak 至關於 mv 1.txt 1.txt_bak
二、-exec
find ./ -mtime +10 -exec rm -rf {} \; 查找當前目錄建立時間大於10天的文件並刪除。
linux下同步時間命令
ntpdate timeserver
0 0 */6 * * * /usr/sbin/ntpdate 210.72.145.44 >/dev/null 每隔6小時同步一次