Linux筆記

Linux的基本原則:

    1、有單一的小程序組成,結合小程序完成複雜任務;

    2、一切皆文件;

    3、儘量避免捕獲用戶接口;

    4、配置文件保存爲純文本格式。

切換用戶:su:switch user

    su [-l] 用戶名 #全切換

    su 用戶名 #半切換

    exit #退出當前登陸

1lo:本地迴環

以太網網卡:ethX

ifconfig:顯示當前主機的ip詳細信息;

    -a:顯示所有接口的配置信息

    up/down:ifconfig eth0 up/down #啓用或關閉網卡(重啓後失效)

    /etc/init.d/network {start/stop/restart/status}

route:

          add:添加

        -host:主機路由

        -net:網絡路由

    del:

    route -n:

網絡配置文件:/etc/sysconfig/network

網絡接口配置文件:/etc/sysconfig/network-scripts/ifcfg-interface_name

DEVICE=“關聯設備名稱,要與文件名的後半部interface_name保持一致”

BOOTPROTO={static|none|dhcp|bootp}:引導協議;要使用靜態地址,使用static或none;DHCP表示使用dhcp服務器獲取地址;

IPADDR=:IP地址

NETMASK=:子網掩碼

GETEWAY=:設定默認網關;

ONEBOOT=:開機時是否自動激活此網絡接口;

HWADDR=:硬件地址,要與硬件中的地址保持一致,可省略

USERCTL={yes|no}:是否允許普通用戶控制此接口;

PEERDNS{yes|no}:是否在bootproto爲dhcp時接受由服務器指定的dns地址;

不會立即生效,但是重啓網絡服務或主機重啓後都會生效;

路由:

    /etc/sysconfig/network-scripts/route-ethx

    添加格式一:DEST via NEXTHOP

    添加格式二:

        ADDRESSO=

        NETMASK=

        GATEWAY=

DNS服務器指定方法只有一種:

    /etc/resolv.conf

    nameserver DNS_IP_1

    nameserver DNS_IP_2

指定本地解析:

    /etc/hosts

主機IP                 主機名                                 主機別名

192.168.1.100     www.commander.com     commander

DNS-->/etc/hosts-->DNS

配置主機名:

    hostname HOSTNAME

    立即生效,但不是永久生效;

    /etc/sysconfig/network

    HOSTNAME=

ifconfig 老舊

IP route

ip

  link:配置網卡屬性

       show:ip -s link route

  set:

    ip link set DEVICE{up|down}


            addr:協議地址一塊網卡可以使用多個地址:

網絡設備可以別名:

eth0

ethx:x       eth0:0

  route:路由

/etc,/bin,/sbin,/lib,系統啓動就需 要用到的程序,這些目錄不能掛載額外的分區,必須在根文件系統的分區上

/usr/;操作系統核心功能,可以單獨分區

bin

sbin

lib

init:是所有進程的父進程,其進程號永遠爲1

ps:process state

    sysV風格;

    BSD風格;

        -a:顯示所有跟終端有關的進程;

        -u:顯示相關進程的用戶;

        -x:顯示所有跟終端無關的進程;

        -elF:

        -ef:

        -eF:

進程的分類:

    跟終端相關的進程;

    跟終端無關的進程;

100-139:用戶控制

0-99:內核調整

進程的狀態:

    D:不可中斷的睡眠;

    R:運行或就緒;

    S:可終端的睡眠;

    T:停止;

    Z:僵死;

    <:高優先級進程;

    N:低優先級的進程

    l:多線程進程

    +:前臺進程組中的進程

    s:會話進程中的領導者

    

pstree

pgrep

top

vmstat

free

kill:

    1:HUP

    2:INT

    9:kill

    15:TERM

pkill

top:

    M:根據駐留內存大小進行排序

    P:根據CPU使用百分比進行排序

    T:根據累計時間進行排序

    l:是否顯示平均負載和啓動時間

    t:是否顯示進行和CPU狀態相關的信息

    m:是否顯示內存相關的信息

    c:是否顯示完整的命令信息

    q:退出top

    k:終止某個進程

    -d:指定延遲時長,單位是秒

    -b:批模式;

    -n #:在批模式下,共顯示多少批

進程間通信:(IPC:inter process commuication)

    共享內存

    信號:signal

    semaphore

重要的信號:

    1、SIGHUP:讓一個今年成不用重啓,就可以重讀其配置文件,並讓新的配置信息生效;

    2、SIGINT:CTRL+c,中斷一個進程

    9、SIGKILL:殺死一個進程;

    15、SIGTERM:終止一個進程,默認信號

    制定一個信號:

    信號號碼:kill -l

    信號名稱:kill  -SIGKILL

    信號名稱簡寫:kill  -KILL

kill PID

killall  command #殺死所有是該command進程名的進程;

在啓動時指定nice值;

nice -n NI COMMAND

前臺:佔據了命令提示符;

後臺:啓動之後,釋放命令提示符,後續的操作在後臺完成;

CTRL+z:把正在前臺的作業送往後臺

command &:讓命令在後臺執行

bg:讓後臺的停止作業繼續運行

    bg (jobid)

fg:將後臺的作業調回前臺

    fg (jobid)

jobs:查看後臺的所有作業

    作業號不同於進程號

    +:命令將默認操作的作業

    -:命令將第二個默認操作的作業

kill %jobid:終止某作業

vmstat:系統狀態查看命令;

uptime:開機多長時間

/proc/meminfo:內存信息配置文件;

任務計劃:

    1、在未來的某個時間點執行一次;

    2、週期性的執行;

Linux系統啓動流程;

    post->bios(boot sequence)-->mbr(bootloader,446)-kernel->/sbin/init

    啓動的服務不同:

    運行級別:0-6

        0:halt(關機)

        1:single user mode,單用戶模式,直接以管理員身份切入;

        2:multi user mode,no NFS(多用戶模式)

        3:multi user mode,text mode(正常多用戶文本模式)

        4:reserved(此前尚未定義,屬於保留級別)

        5:multi user mode,graphic mode(圖形界面)

        6:reboot(重啓)

詳解啓動過程:

    boot leader(MBR)

          LILO:Linux loader

          GRUB:grand unified bootloader

stage1:mbr

stage1.5:

stage2:/boot/grub/

/boot/grub.conf/ #以下文本內容的文件路徑

default=0 #設定默認啓動的title的編號;

timeout=5 #等待用戶選擇的超時時長;

splashimage=(hd0,0)/grub/splash.xpm.gz #grub的背景圖片

hiddenmenu #隱藏菜單;

password Redhat #明文加密grub

password --md5 $1$VQIZS/$CBruMoSKxXv72k/IG5mUy #密文加密grub

title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) #內核標題或操作系統名稱,字符串,可自由修改;

root (hd0,0) #內核文件所在的設備,對grub而言,所有類型硬盤一律hd;格式爲(hd#,n),#表示第幾個磁盤,最後的n表示對應磁盤的分區;

kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapp

er/vg_commander-lv_root rd_NO_LUKS rd_LVM_LV=vg_commander/lv_sw

ap rd_NO_MD.UTF-8 rd_LVM_LV=vg_commander/lv_root  KE

YBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet #內核文件路徑,及傳遞給內核的參數

initrd /initramfs-2.6.32-431.el6.x86_64.img #ramdisk文件路徑

核心:動態加載,內核模塊

內核:/lib/modules/‘內核版本號命名的目錄’

vmlinuz-2.6.32.

內核設計風格:

    單內核:Linux(LWP:輕量級進程)

        核心:ko(kernel object)

    微內核:Windows,Solaris(支持多線程)

文件系統:

    rootfs:根文件系統

    FHS:linux

    /boot:系統啓動相關的文件,如內核、initrd以及grub(bootloader)

    /dev:設備文件

        設備文件:

            塊設備:隨機訪問,數據塊

            字符塊設備:線性訪問,按字符爲單位

            設備號:主設備號(major)和次設備號(minor)

    /etc:配置文件 

        /etc/mtab

    /home:用戶的家目錄,默認爲/home/USERNAME

    /root:管理員家目錄

    /lib:庫文件

        /lib/modules:內核模塊文件

        靜態庫:.a 

        動態庫:.dll,.so(shared object)

    /media:掛載點目錄,移動設備

    /mnt:掛載點目錄,額外的臨時文件系統

    /misc:雜項

    /opt:可選目錄,第三方程序安裝目錄

    /proc:僞文件系統,內核映射文件

    /sys:僞文件系統,跟硬件設備相關的屬性映射文件

    /tmp:臨時文件

    /var/tmp:臨時文件

    /var:可變化的文件

    /bin:可執行文件,用戶命令

    /sbin:管理命令


    /usr:shared,read-only

    /usr/bin

    /usr/sbin

    /usr/lib/

    /usr/local:第三方程序安裝目錄

    /usr/local/bin

    /usr/local/sbin

    /usr/local/lib/

    文件和目錄命名規則:

        1、長度不能超過255個字符;

        2、不能使用/當文件名;

        3、嚴格區分大小寫;

    相對路徑:

    絕對路徑:

系統管理工作如下:

    文件管理:touch、stat、file、rm、cp、mv、nano

    目錄管理:ls、cd、pwd、mkdir、rmdir、tree

    運行程序

    設備管理

    軟件管理

    進程管理: 1、在每個進程看來,當前主機上只存在內核和當前進程

                    2、進程是程序的副本,進程是程序的執行實例

    網絡管理

    安全功能

    驅動程序

    日期時間:date、clock、hwclock、cal

    查看文本:cat、tac、more、less、head、tail

        文本處理:cut -d : -f1或者(f1,3)或者(f1-3) /etc/passwd #-d:指定分隔符,默認爲空格;-f:指定要顯示的字段

        sort

            -n:升序排序

            -nr:逆序排序

            -t:字段分隔符

            -k:以那個字段爲準排序

            -u:排序後相同行只顯示一次

            -f:排序時忽略字符大小寫

        uniq:

            -c:顯示文件中行重複的次數

            -d:只顯示重複的行

        join、sed、awk

    文本統計:wc(word count)

        -l:統計行數

    字符處理命令:tr #轉換或刪除字符

        tr 'a-z' 'A-Z' </etc/passwd

        -d:刪除出現在字符集中的所有字符

bash特性:

    1、命令歷史:history

        -c:清空命令歷史;

        -d:刪除指定行

        -w:保存命令歷史至歷史文件中

    2、管道、重定向

    3、命令別名

    4、命令行編輯

        光標跳轉(ctrl+a#跳轉到命令行行首;ctrl+e#跳轉到命令行行尾ctrl+u#刪除光標至命令行首的內容ctrl+k#刪除光標至行爲的內容ctrl+l#清屏)

    5、命令行展開

    6、文件名通配:

        *:匹配任意長度的任意字符

        ?:匹配任意單個字符

        []:匹配指定範圍內的任意單個字符 #[abc]、[a-z]、[0-9]、[0-9a-zA-Z]

    7、變量

    8、編程

    9、bash支持的引號:

        ``:命令替換

        "":弱引用,可以實現變量替換

        '':強引用,不完成變量替換

用戶、組、權限:

    r、w、x

    文件:

        r:可讀,可以使用類似cat等命令查看文件內容;

        w:可寫,可以編輯或刪除此文件

        x:可執行,exacutable,可以在命令提示符下當作命令提交給內核

    目錄:

        r:可以對此目錄執行ls以列出內部的所有文件;

        w:可在此目錄創建文件;

        x:可以使用cd切換進此目錄,也可以使用ls -l查看內部文件的詳細信息

常用命令詳解:

        chown:改變用戶屬主(只有管理員纔有這個權限)

                chown USERNAME file1,file2...

                chown USERNAME:GROUPNAME  file

                -R:修改目錄機器內部文件的屬主

                --reference=/path/to/somefile  file#修改文件權限和參考文件權限一樣

        chgrp:修改文件屬組

                -R:修改目錄機器內部文件的屬主

                --reference=/path/to/somefile  file#修改文件權限和參考文件權限一樣

        chmod:修改文件的權限

                -R:修改目錄機器內部文件的權限

                --reference=/path/to/somefile  file#修改文件權限和參考文件權限一樣

        umask:(xxx)遮罩碼##文件默認不能有執行權限,如果算的的結果中有執行的權限,則將其權限默認+1

                文件:666-xxx

                目錄:777-xxx

用戶組類別:

        管理員組:

        普通組:

        系統組:

        一般組:

        私有組:

        基本組:

        附加組,額外組,默認組以外的其他組。

        用戶管理:

            useradd [options] USERNAME

                -u

                -r:添加系統用戶

                -g:指定用戶基本組

                -G:附加組

                -d:/path/to/directory

                -s:指定用戶shell路徑

                -m:強制爲用戶創建家目錄

                -M:不創建用戶家目錄

        id:查看用戶的賬號屬性信息

            -u:打印用戶id號

            -g:打印用戶組id號

            -G:打印用戶所有組id號

            -n:打印用戶的名稱

        finger:查看用戶賬號信息

            finger USERNAME

        usermod:修改賬號屬性

            -u:修改賬號UID

            -s:修改用戶的shell

            -g:修改基本組GID(組id必須事先存在)

            -a -G:GID #指定新的附加組,不使用-a選項會覆蓋此前的附加組

            -c:註釋信息

            -d:爲用戶指定新的家目錄

            -L:鎖定用戶賬號

            -U:解鎖用戶賬號

        passwd:密碼管理(對於普通用戶來說只能用來修改自己的密碼)

            passwd USERNAME 

            --stdin:從標準輸入接受密碼(echo "shouhuzhe" |passwd --stdin USERNAME)

            -l:鎖定用戶賬號

            -u:解鎖用戶賬號

            -d:刪除用戶密碼

        pwck:檢查用戶賬號完整性

        userdel:刪除用戶

            -r:刪除用戶相關的一切

        chage:

            -d:最近一次修改的時間

            -E:過期時間

            -I:非活動時間

            -m:最短使用期限

            -M:最長使用期限

            -W:警告時間

        chsh:修改用戶的shell

        chfn:修改用戶的註釋信息

        /etc/login.defs:用戶信息規定

    組管理:

        groupadd:創建組

            -g:指定gid

            -r:添加爲系統組

        groupdel:刪除組

        groupmod:

            -g:GID

            -n:GRPNAME

        gpasswd:設定組密碼

bash的配置文件:

    全局配置文件:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc

    個人配置文件:

        ~/.bash_profile,~/.bashrc

    profile類的文件:

        1、設定環境變量

        2、運行命令或腳本

    bashrc類的文件:

        1、設定本地變量

        2、定義命令別名

登陸式shell如何讀取配置文件:

    /etc/profile—-->/etc/profile.d/*.sh-->~/.bash_profile->~/.bashrc-->/etc/bashrc

非登陸式shell:

    ~/.bashrec-->/etc/bashrc-->/etc/profile.d/*.sh

加密方法:

    對稱加密:加密和解密使用同一個密碼;

    公鑰加密:每個密碼都成對出現,一個爲私鑰(secret),一個爲公鑰(public key)

    單向加密:散列加密,提取數據特徵碼

I/O重定向:

set -C:禁止覆蓋重定向

set +C:關閉上述功能

    >:覆蓋重定向

    >>:追加重定向

    2>:錯誤覆蓋重定向

    2>>:錯誤追加重定向

管道:前一個命令的輸出,作爲後一個命令的輸入

文本查找的需要:

    grep:根據模式搜索文本,並將符合模式的文本行顯示出來。

        -i:忽略字符大小寫

        --color:對匹配的字符做高亮顯示

        -o:只顯示被模式匹配到的字符串

        -E:使用擴展正則表達式

    fgrep:不支持正則表達式

    

匹配次數:

    *:匹配其前面的字符任意次

    \?:匹配其前面的字符一次或0次

    \{m,n\}:匹配其前面的字符至少m次,至多n次。

位置鉚釘:

    ^:鉚釘行首,此字符後面的任意內容必須出現在行首

    $:鉚釘行尾,此字符前面的任意內容必須出現在行尾

    ^$:空白行

    \<或\b:鉚定詞首,其後面的任意字符必須作爲單詞的首部出現

    \>或\b:鉚定詞尾,其前面的任意字符必須作爲單詞的尾部出現

shell編程:

    bash變量類型:

        環境變量

        本地變量(局部變量)

        位置變量:

            $1,$2...:第一個參數,第二個參數

        特殊變量:

            $?:上一個命令執行狀態返回值

            $#:參數的個數

            $*:參數列表

            $@:參數列表

    腳本在執行時會啓動一個子shell進程

        命令行在啓動的腳本會繼承當前shell環境;

        系統自動執行的腳本(非命令行啓動)就需要自我定義需要各環境變量

    bash如何實現條件判斷:

        條件測試類型:

            整數測試:

                -eq:測試兩個整數是否相等 [ a -eq b ]

                -ne:測試兩個整數是否不等,不等爲真,相等爲假;

                -gt:測試一個屬是否大於另一個數,大於爲真,小於爲假;

                -lt:測試一個數是否小於另一個數,小於爲真,大於爲假;

                -ge:大於或等於;

                -le:小於或等於;

            命令間的邏輯關係:

                邏輯與:&&

                邏輯或:||

            字符測試:

                ==或=:相等爲真,不等爲假

                !=:不等爲真,相等爲假

                -n:測試指定的字符串是否爲空,空則真,不空則假

                -z:測試指定的字符串是否爲空,不空爲真,空則爲假

            文件測試:

                -e file:測試文件是否存在

                -f file:測試文件是否爲普通文件

                -d file:測試指定路徑是否爲目錄

                -r file:測試當前用戶對指定文件受否有讀取權限

                -w file:測試當前用戶對指定文件受否有寫權限

                -x file:測試當前用戶對指定文件受否有執行權限

        shell中如何進行算數運算:

            let 算術表達式

            c=$[$a+$b]

            $((算術運算表達式))

            expr {例子:c=`expr $a + $b`}算數運算表達式,表達式中各操作數及運算符要有空格

grep、sed(流編輯器)、awk

    sed的基本用法:

        模式空間:默認不編輯源文件,僅對模式空間中的數據做處理,處理結束後將模式空間打印至屏幕

        sed [options] 'AddressCommand' file ...

            -n:靜默模式,不在默認顯示空間中的內容

            -i:之間修改原文件

            -e script -e script ...:可以同時執行多個腳本

            -f /PATH/TO/SED_SCRIPT

            sed -f /path/to/scripts  /file

            -r:表示使用擴展正則表達式

        Address:

            1、StartLine,EndLine

                比如1,100

                $:最後一行

            2、/RegExp/

                /^root/

            3、/pattern1/,/panttern2/

                第一次被pattern1匹配到的行開始,至第一次被pattern2匹配到的行結束,這中間的所有行

            4、LineNumber

                指定的行

            5、StartLine,+N

                從startline開始,向後的N行

            Command:

                d:刪除符合條件的行

                p:顯示符合條件的行

                \n:可以換行

                a \string:在指定的行後面追加新行,內容爲string

                i \string:在指定的行前面添加新行,內容爲string

                r FILE:將指定文件的內容添加至符合的行處

                sed '$r /etc/issue' /etc/fstab

                sed '1,2r /etc/issue' /etc/fstab

                w FILE:將指定範圍內的內容另存至指定的文件中

                sed  '/root/w /tmp/root.txt' /etc/passwd

                s/pattern/string/':查找並替換,默認至替換每一行中第一次被模式匹配到的字符串

                s/pattern/string/g':全局替換

                s/pattern/string/i':忽略字符大小寫

文件查找:

    locate:非實時,非精確查找,是根據全系統文件數據庫進行的

        updatedb:手動生成文件數據庫

    find:實時查找,精確,支持衆多查找標準,遍歷指定目錄中的所有文件完成查找,速度慢

        find 查找路徑(可以省略) 查找標準 查找到以後的處理標準

        查找路徑:默認當前路徑

        查找標準:默認當前路徑下的所有文件

        處理運作:默認爲顯示

        匹配標準:

            -name ‘FILENAME':根據文件名查找,支持通配符

            -iname “FILENAME':文件名匹配時不區分大小寫

            -regex PATTER :基於正則表達式進行文件名查找

            -user  USERNAME:根據屬主查找

            -group GROUPNAME:根據屬組查找

            -uid UID:根據UID查找

            -gid GID:根據GID查找

            -nouser:查找沒有屬主的文件

            -nogroup:查找沒有屬組的文件

            -type

                f:普通文件

                d:目錄

                c:字符

                b:塊設備

                s:套接字設備

                l:連接文件

            -size

                [+|-]#k/M/G :+表示大於,-表示小於

                #K:

                #M:兆

                #G:GB

        組合條件:

            -a:與關係

            -o:或關係

            -not:非

vim編輯器:

    1、打開文件:

        vim +# :打開文件,並定位於第#行

        vim +:打開文件,定位至最後一行

        vim +/pattern:打開文件,定位至第一次被pattern匹配到行的行首

    2、模式轉換:

        i:在當前光標所在所有字符的前面,轉爲輸入模式

        a:在當前光標所在所有字符的後面,轉爲輸入模式

        o:在當前光標所在行的下方,新建一行,並轉入輸入模式

        I:在當前光標所在行的行首,並轉換爲輸入模式

        A:在當前光標所在行的行尾,並轉換爲輸入模式

        O:在當前光標所在行的上方,新建一行,並轉入輸入模式

    3、以單詞爲單位移動:

        w:移動至下一個單詞的詞首

        e:跳到當前單詞詞尾或下一個單詞的詞尾

        b:跳到當前單詞詞首或前一個單詞的詞首

    4、行內跳轉:

        0:跳至行首

        ^:行首的第一個非空白字符

        $:絕對行尾

    5、行間跳轉

        #G:直接跳轉至第#行

        G:最後一行

    6、翻屏操作

        ctrl + f:向後翻屏

        ctrl + b:向上翻一屏

        ctrl + d:向下翻半屏

        ctrl + u:向上翻半屏

    7、刪除單個字符

        #x:刪除光標所在處及向後的共#個字符

        x:刪除光標處的字符

    8、刪除命令

        d命令和跳轉命令組合使用

        #dd:刪除#行

        dd:刪除當前光標所在行

    9、末行模式

        startAdd,EndAdd

        .:表示當前行

        $:最後一行

        +#:向下的#行

    10、粘貼命令

        p:如果刪除的或複製的爲整行內容,則粘貼至光標所在行的下方,如果複製的或刪除的內容爲非整行,則粘貼至光標所在字符的後面

        P:如果刪除的或複製的爲整行內容,則粘貼至光標所在行的上方,如果複製的或刪除的內容爲非整行,則粘貼至光標所在字符的前面

    11、複製命令

        yy:複製一行

        y$:複製光標到行尾

    12修改

        cc:先刪除光標所在行,然後轉爲輸入模式

    13、替換

        r:替換

        R:替換模式

    14、撤銷編輯操作

        u:撤銷前一次的編輯操作

        連續u命令可撤銷此前n次的編輯操作

        #u:直接撤銷最近#次的操作

        ctrl+r:撤銷最近一次的撤銷操作

    15、重複前一編輯操作

        .:重複前一編輯操作

    16、可視化模式

        v:按字符選取

        V:按矩形選取

    17、查找

        /PATTERN

        ?PATTERN

    使用vim編輯多個文件:

        vim file1 file2...

        :next:切換至下一個文件

        :prev:切換至前一個文件

        :last:切換至最後一個文件

        :first:切換至第一個文件

        :qa:全部退出

    分屏顯示:

        ctrl+w,s:水平拆分窗口

        ctrl+w,v:垂直拆分窗口

        ctrl+w,ARROW:在窗口間切換光標

        qa:全部退出

    分窗口編輯多個文件

        vim -o:水平分割顯示

        vim -O垂直分割顯示

    將當前文件中部分內容另存爲另外一個文件

        :w

        :ADDR1,ADDR2w /path/to/somewhere

    在當前光標下方將另外一個文件的內容填充在當前文件中

        :r /path/to/somewhere

    根shell交互

        :!:COMMAND

    高級話題

        set nu:顯示行號:

        set nonu:取消顯示行號

        set ic:忽略大小寫

        set noic:不忽略大小寫

        set ai:設定自動縮進

        set noai:取消自動縮進

        set hlsearch:設定高亮顯示搜索到的文本

        set nohlsearch:取消高亮顯示搜索到的文本

        set syntax on:設定語法高亮顯示

        set syntax off:取消語法高亮顯示

    配置文件:

        /etc/vimrc:全局配置文件,對所有用戶都生效

        ~/.vimrc:當前用戶配置文件

組合測試條件:

    -a:與關係

    -o:或關係

    !:非關係

    例如:if [ $# -gt 1 -a $# le 3 ]

        或者if [ $# -gt 1 ] && [ $# le 3 ]都是可以的

賦值表達式:

    let i+=1相當於i++

    let i-=1相當於i--

特殊權限:

    SUID:運行某程序時,相應的進程的屬主是程序文件自身的屬主,而不是啓動者;

        chmod u+s 

        chmod u-s 

    SGID:運行某程序時,相應的進程的屬組是程序文件自身的屬組,而不是啓動者;

        chmod g+s

        chmod g-s

    sticky:在一個公共目錄,每個人都可以創建文件,刪除自己的文件,但是不能刪除別人的文件

        chmod o+t DIR

        chmod o-t DIR

facl:文件訪問控制列表(Filesystem Access Control List)

    setfacl:

        -m:設定 

            u:UID:權限 

            g:GID:權限 

    -x:取消

        u:UID:權限 

        g:GID:權限

    getfacl file:查看文件的facl權限

常用命令詳解:

    last:顯示/var/log/wtmp文件,顯示用戶登陸歷史及系統重啓歷史

        -n #:顯示最近#次的相關信息

    lastb:/var/log/wtmp ,顯示用戶錯誤的登陸嘗試

        -n #:顯示最近#次的相關信息

    lastlog:顯示每個用戶最近一次的成功登陸信息

        -u USERNAME :顯示指定用戶最近的登陸信息

    basename:顯示路徑基名

        $0:執行腳本時的腳本名稱

    hostname:修改主機名

echo $RANDOM:生成隨機數

終端類型:

    console:控制檯

    pty:物理終端(VGA)

    tty#:虛擬終端(VGA)

    ttys#:串行終端

    pts#:僞終端

面向過程:

    控制結構:

        順序結構

        選擇結構:if、case語句

        循環結構:for、while語句

磁盤管理:

    創建鏈接:

        硬鏈接:ln  src desc

            1、只能對文件創建,不能應用於目錄

            2、不能跨文件系統

            3、創建硬鏈接會增加文件被鏈接的次數

        軟鏈接: ln -s src desc

            1、可應用於目錄

            2、可以跨文件系統

            3、不會增加被鏈接文件的連接次數

            4、其大小爲指定的路徑所包含的字符個數

    設備文件:

        b:按塊爲單位,隨機訪問的設備(硬盤)

        c:按字符爲單位,線性設備(鍵盤)

    /dev:

        主設備號(major number)

        標識設備類型

        次設備號(minor number)

        標識同一種類型中不同設備

    mknod [OPTION] NAME TYPE [MAJOR NINOR]

        -M MODE

    硬盤設備的設備文件名:

        IDE\ATA:hd

            第一個IDE接口:主、從

            /dev/hda、/dev/hdb

            第二個IDE接口:主、從

            /dev/hdc、/dev/hdd

        SATA:sd

        SCSI:sd

        USB:sd

            a、b、c...來區別同一種類型下的不同該設備

        hda:

            hda1:第一個主分區

            hda2:第二個主分區

            hda3:第三個主分區

            hda4:第四個主分區

            hda5:第一個邏輯分區

    查看當前系統識別了幾塊硬盤設備:

        fdisk -l /dev/to/some_device_file

        fdisk /dev/sda:分區操作

            p:顯示當前硬件的分區,包括沒保存的改動

            n:創建新分區

            e:擴展分區

            p:主分區

            d:刪除一個分區

            w:保存退出

            q:不保存退出

            t:修改分區類型

            l:顯示所有支持的分區類型

            cat /proc/pattitons:查看當前系統掛載的分區  

            partprobe /dev/sda :重新探測分區

        cat /proc/filesystems:查看當前內核所支持文件系統類型

    創建文件系統:

        mkfs:make file system 

            -t FSTYPE:(ext2、ext3、ext4)指定文件類型

    專門管理ext系列文件:

        mke2fs:

            -j:創建ext3類型文件系統

            -b BLOCK SIZE:指定塊大小,默認爲4096,可用取值爲1024、2048、4096;

            -L LABLE:指定分區卷標

            -m #:指定預留給超級用戶的塊數百分比

            -i #:用於指定爲多少字節的空間創建一個inode,默認爲8192,這裏給出的數值大小應該爲塊大小的2^n倍

            -N #:指定inode個數

            -F:強制創建文件系統

            -E:用戶指定額外文件系統屬性

    blkid /dev/sda:查詢或查看磁盤設備的相關屬性

        UUID:設備唯一標識符

        TYPE:文件系統格式

        LABLE:查看卷標

    e2lable:查看或設定卷標

        e2lable /dev/sda 卷標:設定卷標

        e2lable /dev/sda:查看卷標

    tune2fs:無損調整文件系統相關屬性

        -j:不損壞原有數據,將ext2升級爲ext3

        -L:用於設定或更改卷標

        -m #:調整預留百分比

        -r:指定預留塊數

        -o:設定默認掛載選項

        -c #:指定掛載次數達到#次後進行自檢,0或-1表示關閉此功能

        -i:每掛載使用多少天后進行自檢,0或-1表示關閉此功能

        -l:顯示超級塊中的詳細信息

    dumpe2fs:顯示文件屬性信息

        -h:只顯示超級塊中的信息

    fsck:檢查並修復linux文件系統

        -t FISTYLE:指定文件系統類型

        -a:自動完成修復

    e2fsck:專用於修復ext2、ext3文件系統

        -f:強制檢查

        -p:自動修復

    mount:顯示當前已掛載的設備及掛載點{掛載:將新的文件系統關聯至當前根文件系統}

        -a:表示掛載/etc/fstab文件中定義的所有文件中的設備

        -n:默認情況下,mount命每掛載一個設備,都會把掛載的設備信息保存至/etc/mtab文件;使用-n選項意味着掛載設備時,不把信息寫入此文件

        -t FSTYPE:指定正在掛載設備上的文件系統的類型,不使用此選項時,mount命令會調用blkid命令獲取對應文件系統的類型

        -r:只讀掛載,掛載光盤時常用此選項

        -w:讀寫掛載

        -o:指定額外的掛載選項,也即指定文件系統啓用的屬性

            remount:重新掛載當前文件系統

            ro:掛載爲只讀

            rw:讀寫掛載

            loop:掛載本地迴環設備

    mount 設備 掛載點 

        設備文件:/dev/sda 

        卷標:LABLE=‘’

        UUID:UUID=“”

        掛載點:目錄

            要求:

            1、此目錄沒有被其他進程使用

            2、目錄的是新啊存在

            3、目錄中的原有文件會暫時隱藏

    umount:卸載(將某文件系統於當前文件系統的關聯關係移除)

    umount 設備或者掛載點

    卸載注意事項:

        1、掛載的設備沒有被進程使用

    swap分區:虛擬內存

    mkswap /dev/sda2:創建交換分區

        -L LABLE

    swapon /dev/sda2:啓用交換分區

    swapoff /dev/sda2:關閉交換分區

    dd命令:

        if=數據來源

        of=數據存儲目標

        bs=#M:塊大小爲#M

        count=#:總共#塊 

        senk=#:創建數據文件時,跳過的空間大小

            dd if=’/etc/passwd‘ of=’/home/passwd'

            dd if=/dev/sda of=/home/mbr.bak bs=512 count=1:備份磁盤mbr

            dd if=/dev/zero of=/var/swapfile bs=1M count=1024

        文件系統配置文件:/etc/fstab 

            OS在初始時,會自動掛載此文件中定義的每個文件系統

            要掛載的設備 掛載點 文件系統類型 掛載選項   轉儲頻率

            /dev/mapper/vg_server-lv_root                /         ext4     defaults                1 1

            UUID=48968f07-cae1-4b7e-b14f-cae762877300   /boot       ext4     defaults                1 2

            /dev/mapper/vg_server-lv_home                /home     ext4     defaults         1 2

            /dev/mapper/vg_server-lv_swap                swap      swap     defaults         0 0

            tmpfs                                      /dev/shm     tmpfs    defaults         0 0

            devpts                                  /dev/pts   devpts   gid=5,mode=620   0 0

            sysfs                                        /sys   sysfs    defaults         0 0

            proc                                        /proc   proc     defaults         0 0

            /dev/sdb/   /mnt/  ext4  defaults 0 0

    fuser :驗證進程正在使用的文件或套接字文件

        -v:查看某個文件上正在運行的進程

        -k:

        -m:

        fuser -km MOUNT_POIT:中止正在訪問此掛載點的所有進程

壓縮解壓:

    gzip :.gz

        gzip /PATH/TO/SOME_FILE:壓縮完成後會刪除源文件

        -d:解壓縮

        #:1-9,指定壓縮比,默認是6

        gunzip:解壓縮

        zcat PATH/TO/SOME_FILE:不解壓的情況下臨時查看壓縮文件內容

    bzip2:.bz2比gzip有着更大的壓縮比,使用格式類似

        bzip  /PATH/TO/SOME_FILE:壓縮完成後會刪除源文件

        -d:解壓縮

        -k:壓縮時保留原文件

        #:1-9,指定壓縮比,默認是6

    bunzip /PATH/TO/SOME_FILE:壓縮完成後會刪除源文件

        bzcat PATH/TO/SOME_FILE:不解壓的情況下臨時查看壓縮文件內容

    xz :.xz

        /PATH/TO/SOME_FILE:壓縮完成後會刪除源文件

        -d:解壓縮

        -k:壓縮時保留原文件

        #:1-9,指定壓縮比,默認是6

        unxz /PATH/TO/SOME_FILE:解壓縮完成後會刪除源文件

        xzcat PATH/TO/SOME_FILE:不解壓的情況下臨時查看壓縮文件內容

        xzdec PATH/TO/SOME_FILE:不解壓的情況下臨時查看壓縮文件內容

    zip:既歸檔又壓縮

        zip FILENAME.ZIP FILE1 FILE2 ...:壓縮後不刪除原文件

        unzip FILENAME.ZIP:解壓縮

    tar:歸檔工具,只歸檔,不壓縮

        -c:創建歸檔文件

        -f FILENAME.tar:操作的歸檔文件

        -x:展開歸檔

        --xzttrs:歸檔時,保留文件的擴展屬性

        -t:不展開歸檔查看歸檔了哪些文件

        -zcf:調用gzip工具,壓縮成gzip

        -zxf:調用gzip解壓縮並展開歸檔

        -jcf:調用bzip2歸檔並調用gzip2

        -xcf:調用bzip2解壓縮並展開歸檔

    cpio:歸檔工具

    read:內建命令

        read name:直接在屏幕爲name賦值

        -t #:指定默認超時時間爲#

        -p:

        用read寫一個可選擇性的備份腳本:

            #/bin/bash 

            read -p "輸入三個文件:"FILE1 FILE2 FILE3

            read -p "輸入文件保存位置:"DEST

            read -p "請選擇壓縮方式[gzip|bzip2|xz]"COMP

            case $COMP in

            gzip)

                tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3

                ;;

            bzip2)

                tar -zcf ${DEST}.tar.bz $FILE1 $FILE2 $FILE3

                ;;

            xz)

                tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3

                xz ${DEST}.tar  

                ;;

            *)

                echo "Uknown"

                exit 9

                ;;

           esac

RAID:

    級別:僅代表磁盤組織方式的不同,沒有上下之分

    0:條帶

        性能提升:讀寫

        冗餘能力(容錯能力):吳

        空間利用率:ns

        至少需要2塊盤

    1:鏡像

        性能表現:寫性能下降,讀性能提升

        冗餘能力:有

        空間利用率:1/2

        至少需要2塊盤

    2

    3

    4

    5:性能表現:讀寫提升

        冗餘能力:有

        空間利用率:(n-1)/n 

        至少需要2塊盤

    10:性能表現:讀寫提升

        冗餘能力:有

        空間利用率:1/2

        至少需要4塊盤

    01:性能表現:讀寫提升

        冗餘能力:有

        空間利用率:1/2

        至少需要4塊盤

    50:性能表現:讀寫提升

        冗餘能力:有

        空間利用率:(n-1)/n 

        至少需要6塊盤

    jbod:性能表現:無提升

        冗餘能力:無

        空間利用率:100%

        至少需要兩塊盤

    邏輯RAID:

        /dev/md0

        /dev/md1

    mdadm:將任何塊設備做成RAID;md命令

        模式化的命令:

            創建模式

                -C:

                    專用選項:

                        -l:級別

                        -n :設備個數

                        -a {yes|no}:自動爲其創建設備文件

                        -c :CHUNK大小

            管理模式

                --add,--del,--fail

            監控模式:

                -F

            增長模式:

                -G:

            裝配模式

                -A

        mdadm -D /dev/md0:查看raid設備詳細信息

    pv:命令

        pvcreat,pvremove,pvscan,pvdisplay,pvmove

    vg:命令 

        vgcreate VG_NAME /PATH/TO/PV

        -s #:PE大小,默認爲4MB

        

        ,vgmove,vgextend,vgreduce,vgs,vgdisplay,vgscan

    lv:

        lvcreat -n LV_NAME -L #G VG_NAME 

        lvremove:移除邏輯卷組

        lvextend:

        -L [+]# /PATH/TO/LV :擴展邏輯分區

        lvreduce,lvs,lvdisplay

        resize2fs -p /PATH/TO/LV:擴展邏輯分區

擴展邏輯卷:

縮減邏輯卷:

    注意:1、不能在線縮減,得先卸載

        2、確保縮減後的空間大小依然能夠存儲原有的所有數據

        3、在縮減之前應該先強行檢查文件,以確保文件系統處於一致狀態

        df -lh

        umount /PATH/TO/DEVICE

        e2fsck -f 

網絡配置:

    IP:

        DHCP:動態主機配置協議

        static :手動指定地址

    NETMASK

    GATEWAY

    HOSTNAME

    DNS1

    DNS2

    ifconfig:

        -a:顯示所有接口的配置信息

        ifconfig eth0 ip/mask:臨時配置主機ip地址

        ifconfig eth0 up/down:啓用或者禁用eth0網卡,並且立即生效

    route:

        route add -net|-host DEST/NETMASK gw NEXTDEST#添加路由信息

        route add default gw NEXTDEST#添加默認路由信息

        route del default gw NEXTDEST#刪除默認路由信息

        route del -net|-host DEST/NETMASK#刪除路由信息

        -n:以數字顯示主機各端口信息

        add:添加

            -host:主機路由

            -net:網絡路由

            -net 0.0.0.0

        del:刪除 route del -net DEST

            -host:

            -net:

    網絡接口配置文件:/etc/sysconfig/ifcfg-ethX

         1DEVICE=eth0#關聯的設備名稱

         2 HWADDR=00:E0:4C:13:71:CF#MAC地址

         3 TYPE=Ethernet

         4 UUID=d714b59a-4923-492f-b079-87b4b8f96d3b

         5 ONBOOT=yes#開機時是否自動激活此網絡接口

         6 NM_CONTROLLED=yes

         7 BOOTPROTO=static#應道協議

         8 IPADDR=10.10.174.150#IP地址

         9 NETMASK=255.255.254.0#子網掩碼

        10 GATEWAY=10.10.175.254#網管

        11 DNS1=202.99.96.68#DNS地址

        12  PEERDNS:{yes|no}#是否在BOOTPROTO爲dhcp時接受由DHCP服務器指定的dns指定的地址

        13  USERCTL:{yes|no}#是否允許普通用戶控制此接口 

        以上配置不會立即生效,但是重啓主機或是重啓網絡服務後會永久生效

DNS:域名解析配置方法

    /etc/resolv.conf:DNS配置文件

    指定本地解析:

        /etc/hosts:本地解析配置文件

        DNS-->/etc/hosts-->DNS緩存

被指主機名:hostname NAME

    /etc/sysconfig/metwork:主機名配置文件

進程:ps

    -a:顯示所有和終端有關的進程

    -x:顯示所有和終端無關的進程

    -u:顯示用戶信息

進程狀態;

    D:不可中斷的睡眠;

    R:運行或就緒

    s:可中斷的睡眠

    T:停止

    Z:僵死

    <:高優先級進程 

    N:低優先級進程

    +:前臺進程組中的進程

pstree:進程樹




查看運行級別:

    runlevel;

    who -r;

查看內核release號:

    uname -r;

安裝grub stage1:

    #grubs

    grub>root (hd0,0)  #指定安裝位置

    grub>setup (hd0)  #安裝

    grub>quit  #退出

    安裝grub第二種方式:

    #grub-install --root-directory=/

    grub>find

    grub>root (hd#,N)

    grub>kernel /PATH/KERNEL_FILE

    grub>initrdn/PATH/INITRD_FILE

    grub>boot


kernel初始化過程:

    1、設備探測

    2、驅動初始化(可能從initrd(initramfs紅帽6)文件中裝載驅動模塊)

    3、以只讀掛載根文件系統

    4、裝載第一個進程init(PID:1)


/sbin/init:(/etc/inittab)

    upstart:Ubuntu,d-bus,event-drive

    systemd:

id:runlevels:action:process

    id:標識符

    runlevels:在那個級別下運行此行

    action:在什麼情況下執行此行

    process:要運行程序

id:5:initdefault:(/etc/inittab)

ACTION:

    initdefault;設定默認運行級別

    sysinit:系統初始化

    wait:等待級別切換至此級別時執行

/etc/rc.d/rc.sysinit完成的任務:

    1、激活udev和selinux

    2、根據/etc/sysctl.conf文件,來設定內核參數

    3、設定時鐘

    4、裝載鍵盤映射

    5、啓用交換分區

    6、設置主機名

    7、根文件系統檢測,並以讀寫方式重新掛載

    8、激活raid和lvm設備

    9、啓用磁盤配額

    10、根據/etc/fstab;檢查並掛載其他文件系統

    11、清理過期的鎖和pid文件


for i in /etc/rc3.d/k*

do

        $i stop

done

for i in /etc/rc3.d/s*

do

        $i start

done

先關閉以k開頭的服務,後啓動以s開頭的;

/etc/rc.d/init.d

服務類腳本:

    start

    SysV:/etc/rc.d/init.d

    start|stop|restart|status

    reload|configtest

chkconfig:runlevels SS KK

        當chkconfig命令來爲此腳本在rcc#.d目錄創建鏈接時,runlevels表示默認創建爲S*開頭的鏈接,除此之外的級別默認創建爲K*開頭的鏈接;

        S後面的啓動優先級爲ss所表示的數字;K後面關閉優先次序爲kk所表示的數字;

    description:用於說明此腳本的簡單功能;\ 續行

    chkconfig --list:查看所有獨立守護服務的啓動設定;獨立守護進程

        chkconfig --list service_name

    chkconfig --add service_name:添加服務鏈接

    chkconfig --del service_name:刪除服務鏈接

    chkconfig --level runlevels service_name(on|off)

/etc/inittab的任務:

    1、設定默認運行級別

    2、運行系統初始化腳本

    3、指定運行級別對應的目錄下的腳本

    4、設定ctrl+alt+del組合鍵的操作

    5、定義ups電源在電源故障/恢復時執行的操作

    6、啓動虛擬終端(2345級別)

    7、啓動圖形終端(5級別)

守護進程的類型:

    獨立守護進程

    xinitd:超級守護進程

    瞬時守護進程,不需要關聯至運行級別

核心:/boot/vmlinuz-version

    內核模塊(ko):/lib/modules/version

    內核設計:

    單內核

        模塊化設計

    微內核

裝載模塊:

    insmod:

    modprobe:

www.kernel.org

用戶空間訪問、監控內核方式:

    /proc、/sys

    僞文件系統:/proc/sys:此目錄中的文件是可讀寫的

    /sys:某些文件可寫

    

設定內核參數值的方法:

echocalue > /proc/sys/to/somefile

sysctl -w kernel.hostname='commander':修改主機名,重啓後失效,可以立即生效

永久生效,但不能立即生效:/etc/sysctl.conf

修改完配置文件後,執行如下命令:

sysctl -p

sysctl -a:顯示所有內核參數及其值


內核模塊管理:

lsmod:查看

modporbe mod_name:裝載某模塊

modprobe -r mod_name:卸載某模塊

modinfo mod_name:查看模塊的具體信息


insmod /PATH/TO/MODULE_NAME:裝載模塊

rmmod mod_name:移除模塊

depmod /PATH/TO/MODILES_DIR

內核中的功能除了核心功能之外,在編譯時。大多功能都有三種選擇:

    1、不使用此功能;

    2、編譯成內核模塊;

    3、編譯進內核;

如何手動編譯內核:

    make gconfig:Gnome桌面使用環境,

    make kconfig:KDE桌面使用環境

grub-->kernel-->initrd-->rootfs(/sbin/init,/bin/bash)


/etc/inittab:

    設定默認運行級別

    系統初始化(/etc/rc.d/rc.sysinit)

    運行指定級別的服務腳本

        /etc/rc.d/init.d

            /etc/rc.d/rc#.d

                rc0.d--rc6.d

                    K*

                        S*

                            00-99:運行次序

    啓動虛擬終端

    啓動圖形終端

/etc/rc.d/rc.sysinit:

    檢測並以只讀方式重新掛載根文件系統;

    設定主機名;

    檢測並掛載/etc/fstab中的其他文件系統;

    啓動swap分區;

    初始化外圍硬件設備驅動;

    根據/etc/sysctl.conf設定內核參數;

    激活udev和selinux;

    激活LVM和RAID設備;

    清理過期鎖和PID文件;

    裝載鍵映射;

關機和重啓:


mount -n :掛載時不更新/etc/mtab文件;


設定內核參數:

    /etc/sysctl.conf

    sysctl -p

用戶:

    PAM:

    /etc/pam.d

繞過PAM:

    /bin/login:

用戶:uid /etc/passwd

組:gid /etc/group

login:驗證

nsswitch:network service switch

框架:/etc/passwd, /etc/group, /etc/shadow

    配置文件:/etc/nsswitch.conf

/etc/rc.d/init.d/服務腳本

服務腳本支持配置文件:/etc/sysconfig/服務腳本同名的配置文件

mktemp:用於創建臨時文件或目錄;

    mktemp /tmp/file.XXXX

        -d:創建爲目錄;

任務計劃:

    1、在未來的某個時間點執行一次;

        at now+times(minutes...)

        at>command

        at>ctrl+d:保存退出

        指定時間:

            絕對時間:HH:MM,DD:MM:YY,MM/DD/YY

            相對時間:now+*

                單位:mintues,hours,days,weeks

            模糊時間:noon,midnight,teatime

        命令執行結果,將以郵件方式

        at -l:顯示隊列

        at -d:刪除隊列

        batch

    2、週期性的執行;

    cron:自身是一個不間斷運行的服務;

        anacron:cron的補充,能夠實現讓Cron因爲各種原因在過去的時間該執行而未執行的任務恢復正常執行一次;

    cron:

        系統cron任務:/etc/crontab

            分鐘 小時 天 月 周 用戶 任務

        用戶cron任務:/var/spool/cron/USERNAME

            分鐘 小時 天 月 周 任務

            # For details see man 4 crontabs

                Example of job definition:

                .---------------- minute (0 - 59)

                    |  .------------- hour (0 - 23)

                        |  |  .---------- day of month (1 - 31)

                            |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

                                |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

                                    |  |  |  |  |

                                        *  *  *  *  * user-name command to be executed

                                            5  *  *  *  * /home/major/shell_編程/1.sh

         時間有效取值:

            分鐘:0-59

            小時:0-23

            天:1-31

            月:1-12

            周:0-7,0和7都表示週日

        時間統配表示:

            *:對應的所有有效值

            3 * * * 7 :每個禮拜天的每個小時的第三分鐘

        每兩個小時執行一次:08 */2 * * *

        每兩天執行一次:10 04 */2 * *

    執行結果將以郵件形式發送給管理員:*/3 * * * * cat /etc/fatab &> /dev/null

    cron的環境變量:cron執行的所有命令都去PATH環境變量指定的路徑下去找

    PATH /bin:/sbin:/usr/bin:/usr/sbin

    用戶任務的管理:

    crontab:

    -l:列出當前用戶的所有Cron任務;

    -e:編輯;

    -r:移除所有任務;

    -u USERNAME:管理其他用戶的cron任務;

日誌系統:syslog、syslog-ng(開源)

信息詳細程序:日誌級別

子系統:facility,設施

syslog服務:

syslogd:系統,非內核產生的信息

klogd:內核,專門負責記錄內核產生的日誌

信息詳細程序:

子系統:facility 設施

動作:

日誌需要滾動(日誌切割):

message1 message2 message3

/sbin/init:

/var/log/message:系統標準錯誤日誌信息;非內核產生引導信息,各子系統產生的信息;

/var/log/maillog:郵件系統產生的日誌信息;

/var/log/secure:和安全相關的日誌記錄,並且會記錄ssh登陸的詳細信息

telnet:遠程登陸協議,tcp

C/S:架構

S:telnet遠程服務器

C:telnet客戶端

ssh:secure shell,協議 22/tcp

通信和認證過程都是加密的,主機認證;

用戶認證過程加密

sshv1:已經被破解,容易被中間人***;

sshv2:建議使用;

認證過程:

基於口令認證;

基於密鑰認證;

協議即規範;

實現:服務端、客戶端;

Linux:openSSH

C/S:

服務器端:sshd、配置文件/etc/ssh/sshd_config

客戶端:ssh、配置文件/etc/ssh/ssh_config

ssh-keygen:密鑰生成器;

ssh-copy-id:將公鑰傳輸至遠程服務器

scp:跨主機安全複製工具

ssh:

ssh USERNAME@HOST

ssh -l USERNAME HOST

ssh USERNAME@HOST ‘command’

scp:

scp SRC DEST

-r:

-a:

scp USERNAME@HOST:PATH/to/somefile  /path/to/local

ssh-keygen:

-t rsa

~/.ssh/id_rsa

~/.ssh/id_rsa.pub

公鑰保存到遠程主機某用戶的家目錄下的.ssh/aut

如何將遠程服務器的目錄,拷貝到本地:

scp -r [email protected]:/root/rules /opt:意思爲將遠程服務器上/root/rules目錄內的內容拷貝到本地的opt目錄下

將本地的文件上傳到遠程服務器上:

scp /root/node-v4.2.1-linux-x64.tar.gz [email protected]:/opt/test:將本地文件node-v4.2.1-linux-x64.tar.gz上傳到服務器/opt/test目錄下

dropbear:嵌入式系統是專用的ssh服務器端和客戶端工具;

服務器端:dropbear

dropbearkey

客戶端:dbclient

dropbear默認使用nsswitsch實現名稱解析

/etc/nsswitch.conf

/usr/libnss_files*

/usr/lib/libnss.so

/usr/lib/libnss_files*

dropbear會在用戶登錄檢查其默認shell是否當前系統的安全shell

/etc/shells

linux常見的系統故障排除:

1、確定問題的故障特徵;

2、重現故障;

3、使用工具收集進一步信息;

4、排除不可能的原因;

5、定位故障:

從簡單的問題入手;

一次嘗試一種方式;

6、備份原文件;

7、儘可能藉助工具;

可能會出現的故障:

1、管理員密碼忘記;

2、系統無法正常啓動;

a、grub損壞(mbr損壞、grub配置文件丟失)

b、系統初始化故障(某文件系統無法正常掛載、驅動不兼容)

c、服務故障;

d、用戶無法登陸系統(bash程序故障)

3、命令無法運行

4、編譯過程無法繼續(開發環境缺少基本組件)

sudo的配置文件 /etc/sudoers

-l:列出當前用戶可以使用的所有sudo的命令;

-k:讓認證信息失效;

修改網卡的網絡屬性

TCP/IP安全:

機密性:明文傳輸(ftp、http、smtp、telnet)

plaintext(明文)-->轉換規則-->ciphertext(密文)

ciphertext(密文)-->轉換規則-->plaintext(明文)

openssl實現私有CA;

1、先生成一對密鑰

2、生成自簽署證書


DNS(Domain Name Service):域名解析

TLD:

組織域:.com,.org,.net,.cc

國家域:.cn,.jp

DNS:分佈式數據庫

上級僅知道其直接下級

下級只知道根的位置

DNS服務器:

接受本地客戶查詢請求(遞歸)

外部客戶端請求:請求權威答案

肯定答案:TTL

否定答案:TTL

外部客戶端請求:非權威答案

數據庫中的每一個條目稱作一個資源記錄

資源記錄格式如下:

NAME TTL IN RRT VALUE

PHP:超文本預處理器


數據的組織結構:

1、層次結構

2、網狀型

3、關係型

RDBMS:

1、數據庫的創建、刪除

2、創建表、刪除表、修改表

3、索引的創建、刪除

4、用戶和權限

5、數據的增、刪、改

6、查詢

DML:數據操作語言 insert、update、delete、

DDL:數據定義語言 create、alter、drop

DCL:數據控制語言 grant、revoke


RDBMS:

oracle、Sybase、infomix、SQL server;

mysql、postgresql

MySQL:

軟件包格式:

軟件包管理器特有的格式

rpm包,.exe格式

通用二進制格式

源程序

交互模式中的命令類別:

客戶端模式

服務器端命令

都必須使用語句結束符,默認爲分號;

SQL接口:

Oracle,PL/SQL

SQL server,T-SQL

關係數據庫對象:

索引

視圖

約束

存儲過程

存儲函數

觸發器

遊標

用戶

權限

事務

庫本身

表:

行和列的組合;

表:實體集

行:row

列:field也叫column(字段)

字段名稱,數據類型,類型修飾(限制)

字符:

char(n)

varchar(n)

binary(n)

varcharbinary(n)

text(n)

blob(n)

數值:

精確數值型

整型

十進制

近似數值

float

double

日期時間:

date

time

datetime

stamp

日期

布爾

內置

DDL:

create

alter

drop

DML:

insert

update

delete

DCL:

grant

revoke

創建數據庫

CREATE DATABASE testda;

刪除數據庫

DROP DATABASE db_name;

創建表

CREATE TABLE ;

查看錶 

SHOW TABLES;

查看庫中的表

SHOW TABLE FROM DB_NAME;

查看錶結構

DESC STUDENTS;

刪除表

DROP TABLE DB_NAME;

修改表

ALTER TABLE DB_NAME;

MODIFY

CHANGE

ADD

DROP

DML:

INSERT INTO TB_NAME ;

REPLACE 

DCL:

創建用戶:

CREATE USER 'USENAME'@'HOST' IDENTIFIED BY 'PASSWD';

刪除用戶:

DROP USER 'USERNAME'@'HOST';

HOST:

IP;

HOSTNAME;

NETWORK;

通配符:

_:匹配任意單個字符,192.168.1._

%:匹配任意字符;

GRANT PRIL1,PRIL2...ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWD'];給用戶授予權限

REVOKE PRIL1,PRIL2...ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST';刪除用戶權限

SHOW GRANTS FOR 'USERNAME'@'HOST'; 查看用戶的權限


爲用戶設定密碼:

1、SET PASSWORD FOR 'USERNAME'@'HOST'=PASSWORD('PASSWORD');

修改用戶密碼:

UPDATE USER SET PASSEORD=PASSWORD('PASSWORD') WHERE USER='root';

圖形化客戶端:

1、phpmyadmin

2、workbench

3、MySQL front

4、navicat for MySQL

單層結構

二層結構

三層結構

PHP:腳本編程語言,php解釋器

webapp:面向對象的特性

zend:

第一階段:詞法分析,語法分析,編譯爲opcode;

第二階段:執行opcode;

PHP緩存器:

APC

eaccelerator

cache

PHP解釋器-->MySQL,如何交互:

bash:a.sh

php-mysql

mysql:配置文件格式,集中式配置文件,可以爲多個程序提供配置

MySQL服務器維護了兩類變量:

服務器變量:

定義MySQL服務器運行特性

SHOW GLOBAL VARIABLES [LIKE 'STRING'];

狀態變量:

保存了MySQL服務器運行統計數據

SHOW GLOBAL STATUS [LIKE 'STRING']; 

壓力測試工具

ab

http_load

webbench

siege

mail server:

SMTP:簡單郵件協議(tcp25號端口)

ESMTP:簡單擴展郵件協議

pop3:郵局協議

IMAP4:

uucp:Unix to Unix copyd

Unix主機複製文件的協議

MTA:郵件傳輸代理,SMTP服務器

sendmail,uucp

qmail

postfix:模塊化設計,安全,跟sendmail兼容,效率高

exchange:(Windows,異步消息協作平臺)

MDA:郵件投遞代理

procmail

maildrop

MRA:郵件檢索代理

pop3:郵局協議

imap4

Cyrus-imap

dovecot

thunderbird

evolution

mutt(文本界面)

webmail:

openwebmail

squirrelmail

extmail(extman)

EMOS,centos

SASL:v2

cyrus-sasl

courier-authlib

postfix+SASL+(courier-authlib)+mysql 

dovect+mysql 

extmail+extman+httpd


postfix:rpm 


MUA:mutt


都是以明文方式工作

pop3:tcp/110

imap4:tcp/143

dove支持四種協議:pop3,imap4,pops,imaps

配置文件:/etc/dovecot.conf

有ssl認證能力

郵箱格式:

mbox:一個文件存儲所有郵件

maildir:一個文件存儲一封郵件,所有郵件存儲在一個目錄中


FTP:文件傳輸協議

端口:21/tcp

文件共享服務:應用層服務

NFS:network file sysytem(RPC:remote procedure call:遠程過程調用)

smba:CIFS/SMB;

ftp:基於tcp協議,有兩個連接

命令連接,也叫控制連接,一直存在:tcp/21

數據連接,按需打開,按需關閉:

主動模式:20/tcp

被動模式:

數據傳輸模式:

文本:

二進制:

服務器端程序:

wuftpd:華盛頓大學服務器程序

vsftpd:very secure ftp doemon

proftpd:

pureftpd:

serv-u:windows

filezilla:既有Linux又有Windows

客戶端程序:

CLI;

ftp:

lftp:

GUI:

gftpd

flashfxp

cuteftp

filezilla

vsftpd:

/etc/vsftpd:配置文件目錄

/etc/init.d/vsftpd:服務腳本

基於PAM實現用戶認證:

/etc/pam.d/*

/lib/security/*

/lib64/security/*

支持虛擬用戶

文件服務權限

守護進程:

獨立守護進程

瞬時守護進程

由xinetd代爲管理

vsftpd:

max_clients=#最大客戶端連接數

max_per_ip=#每個用戶最多能發起幾次請求

ftp:用戶

用戶

匿名用戶——》系統用戶:anonmous

系統用戶

虛擬用戶———》系統用戶

文件服務權限:文件系統權限*文件共享權限

ftp軟件:flashfxp

NFS:network file system

RPC:remote procedure call(遠程過程調用)

linux :提供RPC服務的程序:portmap:111/tcp,111/udp

RPC:編程技術,也是一種協議,簡化分佈式應用程序的開發,c-rpc c--》rpc s 

RPC:二進制格式,文本格式(xmlrpc)-->SOPA(輕量級的RPC)

服務器端:nfsutils

nfs:nfsd(nfs服務進程)mountd(掛載),quotad(配額)

nfsd:2049/tcp,2049/udp

quotad:

安全通信方式:

ftps:ftp+ssl

Linux:網絡防火牆

netfilter:frame

IP tables:數據報文過濾,NAT、mangle等規則生成的工具;

網絡:IP報文首部,tcp報文首部

防火牆:硬件,軟件:規則(匹配標準,處理辦法)

framework:

默認規則:

開放:堵

關閉:通

規則:匹配標準

IP:源ip,目標ip

TCP:源端口,目標端口

UDP:源端口,目標端口

ICMP:icmp-type

hook function:鉤子函數

prerouting

input

output

forward

postrouting

規則鏈:

prerouting

input

output

forward

postroutin

filter(過濾):

input

output

forward

nat(地址轉換):

prerouting

postroutin

mangle(拆開、修改、封裝):表

prerouting

input

output

forward

postroutin

raw():

prerouting

output

iptables:

能否使用自定義鏈?

可以使用自定義鏈,但只在被調用時才能發揮作用,而且如果沒有自定義鏈中的任何規則匹配,還應該有返回機制:

用戶可以刪除自定義的空鏈

默認鏈無法刪除

每個規則都有兩個內置的計數器:

被匹配的報文個數

被匹配的報文大小之和

規則:匹配標準,處理動作

iptables [-t TABLE] COMMAND CHAIN [num] 標準匹配 -j 處理辦法 

匹配標準:

通用匹配

-s,--src:指定源地址

-d,--dst:指定目標地址

-p,{tcp|udp|icmp}

-i interface :指定數據報文流入的接口

可用於定義標準的鏈:prerouting,input,forward

-o interface:指定數據報文流出的接口

可用於標準定義的鏈:output,postrouting,forward

擴展匹配

隱含擴展:不用特別指明由那個模塊進行的擴展,因此使用-p{tcp|udp|icmp}

顯式擴展:必須指明由那個模塊進行的擴展,在iptables中使用-m選項可完成此功能

命令:

管理規則

-A:附加一條規則,添加在鏈的尾部

-I:chain[num]:插入一條規則,插入爲對應chain的第num條

-D:chain[num]:刪除鏈中的第num條規則

-R:chain[num]:替換指定的規則

管理鏈:

-F:[chain] flush,清空指定的規則鏈,如果省略chain,則可以刪除對應表中的所有鏈

-P:chain:設定指定鏈的默認策略;

-N:自定義一個新的空鏈

-X:刪除一個自定義的空鏈

-Z:置零指定鏈中的所有規則的計數器

-E:重命名自定義的鏈

查看類:

-L:顯示指定表中的規則

-n:以數字格式顯示主機地址和端口

-v:顯示鏈及規則的詳細信息

-x:顯示計數器的精確值

--line-numbers:顯示規則號碼

動作(target):

ACCEPT:放行

REJECT:丟棄

DNAT:目標地址轉換 

SNAT:源地址轉換

REDIRECT:端口重定向

MASQUERADE:地址僞裝

LOG:日誌 

MARK:打標機

iptables不是服務,但有服務腳本;服務腳本的主要作用在於管理保存的作用

NAT:network address translation

DNAT:目標地址轉換

SNAT:源地址轉換

samba:

web:

httpd:

1、事先創建進程;

2、按需維持適當的進程;

3、模塊化設計,核心比較小,各種功能都能模塊添加,支持運行時配置,支持單獨模塊編譯;

4、

Tomcat

Hadoop

MPM:Multi Path Modules(/etc/sysconfig/httpd,apache的三種工作模式,默認是prefork)

mpm_winnt

prefork:一個請求用一個進程響應

worker:一個請求用一個線程響應(啓動多個進程,每個進程生成多個線程)

event:一個進程處理多個請求

URL路徑跟本地文件系統路徑不是一回事兒,URL是相對於DocumentRoot的路徑而言的

Options:

Indexs:允許索引目錄

FollowSynLinks:允許訪問符號鏈接指向源文件

Includes:允許執行服務器端包含(SSI)

ExecCGI:允許運行CGI腳本

ALL:啓用所有選項

Order:用於定義基於主機的訪問控制功能的,IP,網絡地址或主機定義訪問控制機制

Order allow,deny

    allow from 192.168.0.0/24#只允許此網絡訪問

deny from

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章