LINUX基礎命令

命令格式:命令關鍵字 選項 參數 ls -l /etc (find /etc --name password)幫助命令:man help infophp

cd 切換目錄 cd .. cd-java

絕對路徑:從根目錄 /etc/passwdnode

相對路徑:從當前目錄 ./ ../python

[root@localhost ~]# root用戶名 localhost主機名 ~當前所在目錄 #root用戶 $普通用戶mysql

ls查看目錄下內容linux

選項:-a看隱藏文件(.文件名)web

  -l = ll 以長格式顯示信息正則表達式

  -h 以人類可讀的方式顯示大小redis

-文件類型 -普通文件 d目錄 b塊設備文件 c字符設備文件 l連接文件 s套接字文件 p管道文件sql

文件管理命令:

touch 建立文件或更新時間戳

mkdir 建立目錄 -p -v

rm 刪除 -f -r(目錄)-I

wc  統計 -c -w -l

cp 複製文件 -a -p(保持文件權限) -r

mv 移動或重命名

tree 查看目錄樹 -L

cat tac nl more  less head -n(看文件前n行) tail  -n(看文件後n行)(-f 排錯(持續監控日誌文件尾部變化))查看文件內容

which 查找命令絕對路徑

find 按條件查找文件

查找系統中以bak結尾的文件並刪除

find / -name *bak -exec rm -rf {} \;

whereis -b -m

locate -->updatedb(更新數據庫) -->安裝mlocat 查找速度比find快

grep 過濾 -i -v取反 -E支持擴展正則表達式()-o只顯示要過濾的關鍵字 -A -B -w

壓縮文件

gzip/gunzi=gzip -d -->.gz 1-9

bzip2/bunzip2=bzip2 -d -->.bz2

tar 製做或釋放歸檔文件 -c -v -j(bz2) -z(ge) -f -x -C(解壓指定路徑)

通配符: ?任意一個字符  *任意全部字符

管道符:| 前一個命令的結果做爲後一個命令的執行目標

正則表達式: ^以……開頭

  $以……結尾      grep基礎正則表達式

  |或                 擴展正則表達式

sbin bin 放命令 boot  啓動文件 dev 設備文件 etc 配置文件 home 普通用戶家目錄 lib lib64 庫文件 media 掛載光盤 mnt 掛載可移動設備 proc 虛擬目錄(內存裏)root 超級用戶家目錄 run 服務啓動目錄  usr var 可變長文件

exit 退出登陸,註銷  ctrl+d

history 查看歷史命令記錄 調用!!上一條命令 !n 查看第n條命令 -c(.bash_logout)關機清空歷史紀錄

關機:shutdown -h now, init 0, halt,poweroff

runlevel 查看系統運行級別

重啓:shutdown -r now,init 6,reboot

uname 查看系統信息 -a -r(內核版本)

查看centos系統版本cat /etc/redhat-release

Centos6與Centos7區別:內核版本不一樣6-->2.6  7-->3.10,默認文件系統不一樣6-->ext4   7-->xfs

Echo 打印 echo $?打印上一條命令的狀態碼用於檢測上一條命令執行是否成功

vim 編輯器<--vi

yum -y install vim

命令模式 -->i a o s      esc<--編輯模式-->:/         esc<-- 末行模式

命令模式:

dd 刪除行(剪切 )

D 刪除光標後內容

yy 複製

p 粘貼當前光標下一行

x 刪除當前光標字符

u 撤銷

Ctrl+r 恢復

gg 跳到首行

G 最後一行

w 移動單詞

v 可視   x刪除 y複製

Ctrl +v可視塊

末行模式:

q q! w w! wq wq! x

/ 查找

%s/old/new/g 替換

.vimrc vim的配置文件

編輯模式:補全出現過的單詞 ctrl+n/p

軟件包管理:

dpkg -->ubuntu  suse  debian          -->apt        apt-get

rpm  -->redhat  centos  fedora        -->yum      yum install

 

rpm 管理rpm包 -i -v -h  -a  -q  -e  --nodeps

yum 自動解決rpm包之間的依賴關係    -y

install

update

remove

list

list installed

Info

clear all

makecache

provides 查看包

源碼包(tar包)

解包 tar xf 包名 -C /usr/src

配置 ./configure --prefix=/usr/local/xxx(gcc  gcc-c++)

編譯 make

安裝 make install

 

date 時間

data -s 修改時間 %s時間戳(19700101)

date +%Y%m%d 顯示年月日

bc 計算器

vimdiff diff比較兩文件不一樣

用戶管理:

用戶分類:超級用戶(root)   uid  0

    普通用戶                    uid  1000

    程序用戶                    uid  1-999

Userdel 刪除用戶 -r 刪除家目錄

useradd -u指定uid -g指定gid -d指定家目錄位置-M指定不建立家目錄 -G指定附加組

passwd -l -u

echo "123123" |passwd --stdin ***

usermod -c -d -g -L -U -e -G修改用戶信息

chage 修改密碼信息 -d 0

croupadd 添加用戶組 -g

chgrp

chsh 或usermod更改用戶的shell

who  whoami  id groups w

last  lastlog

用戶切換和受權

su   -   改變環境變量   -

sudo  受權

visudo(自動檢測是否出錯)   =vim /etc/sudoers

用戶組受權前加%

文件權限:

chmod  u/g/o/a  +/-/=rwx filename 修改文件權限

-0   r4   w2     x1

chown   修改文件歸屬   屬主   屬組

umask   查看或修改mask值

特殊權限位: SUID  SGID  SBIT

ACL 訪問控制列表

getfacl  查看acl控制列表

setfacl   -m  u:***:rwx   ***

          -x             最後刪除mask值

          -b             還原RCL列表

特殊文件權限:

chattr           +、- 修改

lsattr           查看

i    不能修改                        passwd     shadow

a   只能追加,不能修改       日誌

只能root設置、修改

 

 

 

磁盤管理:

SATA   SAS   -->sd           

磁盤邏輯結構:柱面、磁道、扇區(512字節)

MBR  主引導記錄   位於磁盤的第一個扇區

dd if=/dev/sda of=/etc/mbr.bak bs=512 count=1

512:4*16=64     446引導記錄(grub)    2校驗字節

fdisk    劃分磁盤分區  -l    查看

mkfs     建立文件系統 -b  -I

mount    掛載

umount   卸載

df   -Th  查看掛載

du -sh 查看磁盤大小

inode              記錄文件原信息(硬連接inode相同,軟連接inode不一樣類               似於快捷方式;刪除原文件,對硬連接無影響,軟連接不能夠;目錄不能夠作硬連接,能夠作軟連接;硬連接不可跨文件系統,軟連接能夠;硬連接ln,軟連接ln -s)

block              記錄文件內容(默認1k,2k,4k)

superblock      記錄系統inode信息

dumpe2fs 

/etc/fstab   開機自動掛載

blkid   查看硬盤UUID

nmcli con show  查看網卡UUID

Partprobe partx  同步分區表

Parted  超過2T

GTP    2T

swap 交換分區(通常爲內存2倍)

mkswap

swapon 激活交換分區  -s 查看現有交換分區

swapoff 關閉交換分區

uptime 查看系統負載

free -m 查看內存使用狀況

啓動流程:

一、BIOS加電自檢

二、MBR引導

三、GRUB引導

四、加載kernel(內核)

五、啓動init(centos 6)--->system(centos 7)

系統非正常關機下存放的碎片文件

修改密碼:

Centos6 :e2e 空格1 回車再按b passwd reboot

Centos7 重啓系統,按任意鍵中斷啓動加載器的倒計時;按e選定編輯條目,將光標移動到內核命令行(以linxu16開頭的行)在行尾添加rd.break;按ctrl+x

使用這些更改啓動,而後從新掛載mount – o remount,rw /sysroot;chroot /sysroot,而後修改密碼;若是開啓selinux,touch /.autorelabel;執行兩次exit

 

RAID:磁盤冗餘陣列

RAID0:條帶模式,讀寫速度快,磁盤利用率高;沒有數據冗餘

RAID1:鏡像模式,數據徹底冗餘,讀速度快;磁盤利用率低    2*n     50%

RAID5:磁盤利用率想對較高,有數據冗餘,容許一塊硬盤損壞;寫速度慢   3   n-1/n

RAID5+1:熱備盤

RAID10:先作RAID1,再作RAID0

RAID6:兩塊校驗盤

mdadm -C 建立新的RAID -l設置RAID級別 -n -x

LVM:邏輯卷,動態管理磁盤

lvextend 擴容後:

ext4   -->resize2fs

xfs    -->xfs-growfs

 

計劃任務管理:

一次性計劃任務at  --->atd

Systemctl start std

週期性計劃任務crond(分,時,日,月,周)

Systemctl start crond

Crontab -e

Crontab -l

Crontab -r

命令絕對路徑

最小單位:分

$()或’’先執行

進程管理:

程序:靜態

進程:動態  -->PID(進程號) PPID(父進程號)

top 動態查看進程信息

cat /proc/cpuinfo |grep core查看內核

ps -aux  -ef

kill 殺死PID進程 -9強制殺

killall 根據進程名殺

pkill 根據特殊條件殺

pgrep 根據特色條件查pid

pstree 進程樹

nice

renice

優先級 -20 20 只有root能夠設定負的優先級

&後臺

jobs 查看後臺任務

fg 1 調到前臺

ctrl+z中止

bg 1在後臺繼續運行

 

sort排序

-n 按數字進行排序

-r 倒序

-k

 

time 統計命令執行時間

網絡管理命令:

ip addr、ifconfig查看網卡信息IP地址

route

hostname 查看或修改主機名(7:/etc/hostname 6:/etc/sysconfig/network)

bash 打開新的shell

nmap 端口掃描

常見服務的端口號:

ftp 20/21 ssh 22 telnet 23 smtp 25 dns 53  dhcp 67/68 tftp 69 http 80 pop3 110 nfs(rpc) 111 ntp 123 imap 143 https 443 rsync 873 mysql 3306

redis 6379

 

 

ftp 文件傳輸協議:

20:數據

21:控制

鏈接方式:

主動鏈接

被動鏈接

傳輸模式:

文本模式

二進制模式

用戶:

匿名用戶:ftp anonymous

本地用戶:Linux系統中

 

DNS域名解析協議

tcp   53 主從服務器數據同步

udp   53 域名解析

完整域名 www.baidu.com

. 根域

.com 頂級域   .cn  .com   .org   .edu

.baidu 二級域

www   主機頭

 

hosts  早期用來作域名與IP映射

DNS查詢方式:

遞歸:C-S

迭代:S-S

DNS解析:

正向解析

反向解析:反垃圾郵件

知名DNS服務器:

114.114.114.114

8.8.8.8

Linux:

bind

named

/etc/named.conf

/var/named/

hosts文件優先級高於DNS

命令(bind-utils):

host

nslookup

dig

解析記錄:

SOA受權域

NS管理這個域—>DNS服務器本身的域名

MX郵件交換記錄

A域名映射IP

CNAME別名

*泛解析

PTR反向解析記錄

 

域名服務器分類

主域名服務器

從域名服務器

緩存域名服務器

 

CDN內容分發網絡

緩存

流程:

1.  客戶端發送域名解析請求到本地DNS服務器;

2.  本地DNS服務器將請求轉發給CDN DNS 服務器;

3.  CDN DNS解析後將服務器地址返回給客戶端;

 

 

Shell 腳本

面向過程     動態語言   解釋型     弱類型

變量

規則:只能以字母和下劃線開頭,包括字母、數字、下劃線。區分大小寫

規範:一、變量名要有意義

       二、採用駝峯式命名 SameName sam_name

定義變量

變量名=變量值

調用變量

$變量名

打印變量值:

echo $變量名

printf $變量名

printf 「$a\n」

刪除變量:

unset  變量名

declare -i 變量名 聲明該變量爲整數型 +i取消聲明

declare -r變量名 聲明只讀變量

環境變量(全局變量)

env  查看系統環境變量

/etc/profile-->/etc/profile.d/*.sh

~/.bash_profile -->~/.bashrc-->/etc/bashrc

export 變量名 將該變量導出爲全局變量

自定義變量(局部變量)

預約義變量  

$0    保存腳本的路徑和名稱

$1 $2 $3 … 位置變量,不交互傳參

$*    保留傳入的全部參數(總體)

$@    保留傳入的全部參數(單個)

$#    傳入參數的個數

$$    保存腳本的pid

$?   保存上一條命令執行狀態碼

#!    幻數-->指定解釋器

註釋

執行代碼

執行腳本方式:

一、bash或sh腳本名執行,在子shell中執行結束後退回到父shell

二、相對路徑或絕對路徑執行,必須有執行權限chomd +x

三、Source或.執行,在當前shell下執行

符號:

單引號,原樣輸出

雙引號,解析變量

賦值時,若是有空格,就用引號引發來

$()或``先執行括號中命令,拿到命令結果

shell計算:

$(())整數計算,判斷

let 整數計算

expr 整數計算 \*(乘號要轉義)字符與字母要報錯

bc

$[]

條件測試

[ 條件 ] 或 test 條件測試

文件測試:

-f 是不是文件

-d 是不是目錄

-e 文件或目錄是否存在

-s 是不是一個空文件 非空爲真

整數測試:

-eq 等於

-ne 不等於

-gt 大於

-lt 小於

-le 小於等於

-ge 大於等於

字符串測試:

== 字符串相等

=

-z 測試是否爲空字符串 非空爲假

邏輯運算符:[[ ]]

&& 或 -a  與

|| 或 -o  或

       非

case 變量 in

條件1)

     執行代碼

;;

條件2)

     執行代碼

;;

for i in `seq 100` ;do

        if [ $((i%2)) -eq 0 ];then

                sum=$((i+sum))

        fi

done   

echo $sum

獲取字符串長度:

echo $name|wc -L

echo ${#name}

echo length $name

字符串截取:

echo ${name:起始位置:個數}

echo $name|cut -c 起始字符數-結束字符數

字符替換:

abcABC123ABCabc

echo ${name#a*C}    123aABCabc

echo ${name##a*C}   abc

echo ${name%a*C}    abcABC123ABCabc

echo ${name%A*c}    abcABC123

echo ${name%%A*c}   abc

echo ${name/abc/456}456ABC123ABCabc

echo ${name//abc/456}456ABC123ABC456

正則表達式:

基礎正則表達式:grep egrep sed awk

.匹配任意一個字符

*匹配前一個字符或表達式任意次

^匹配以…開頭

$匹配以…結尾

[]匹配括號中任意字符 [^0-9] 取反 [a-z]

{n,}匹配前一個字符或表達式最少n次

{,m}匹配前一個字符或表達式最多m次

{n,m}匹配前一個字符或表達式n到m次

擴展正則表達式:egrep = grep -E awk sed -r

+匹配前一個字符或表達式1次或1次以上

?匹配前一個字符或表達式0次或1次

()分組

|或

sed流編輯器

sed 選項‘操做 地址’文件

-r 支持擴展正則表達式

-i 修改文件

-n 安靜模式,只輸入處理的行

 

i 插入一行

a 追加

d 刪除

c 整行替換

s 字符串替換

p 打印

 

echo http://www.baidu.com/1.mp3|sed -nr ‘s#(.*)//(.*)/(.*)#\2#gp’

ip a show eno16777736|sed -n "3p"|sed -nr 's#(.*) (.*)/(.*)#\2#p'

 

awk

默認分隔符爲空格  -F指定

內置變量

NF處理的列數 $1表明第一段 $0整行

NR處理的行數

cut 切割

-c切割字符

-b按字節切割

-d指定分割符

-f指定段數

uniq 去重(相鄰)

-c 統計重複出現的行

查看系統中命令使用最多的

history |awk '{print $2}' |sort |uniq -c |sort -nr |head

 

ping

-c 指定發送數據包

-w 發包的時間間隔

-i 等待多上時間認爲發送失敗

腳本:

一、統計192.168.2.0/24內有多少主機存活?

二、批量建立10個用戶,能夠爲這些用戶設置統一的默認密碼;強制用戶首次登錄修改密碼;

三、統計當前內存使用狀況,若是內存使用率超過80%,打印報警

awk ‘{print $1}’ /etc/httpd/logs/access_log |sort|uniq -c|sort -nr

awk ‘{array[$1]++} END{for (i in array) print i,array[i]}’ /etc/httpd/logs/access_log

YoLa.2575+

數組:

array=(a b c d)

echo ${array[0]} a

unset array[]

echo ${array[*]:1:2}

echo ${array[*]/a/b}

web 2.0

http 1.1 80  https 443

靜態網站:沒有交互,沒有程序,沒有MySQL

一、每一個頁面有一個特定的URL地址,不含?或&等特殊符號

二、每一個網頁都是獨立的實體文件

三、內容是固定不變的,容易被搜索引擎收錄(優勢)

四、網頁沒有數據庫支持,在製做和維護方面工做量較大,當網站數據量比較大時,

五、交互性差,

動態網站:交互的,有程序(php,java,python,perl)

http狀態碼    200

               301

               401

403

404

500

502

LAMP Linux Apache(7 2.4  6 2.2) MySQL/Mariadb php/python/perl

虛擬主機:

基於IP

基於域名

基於端口

IO

< 標準輸入           0

> 標準輸出(覆蓋)   1

>> 標準輸出(追加)

2>標準錯誤           2

2>>

&>混合輸出

相關文章
相關標籤/搜索