Linux命令總結(轉)

1、文件

touch file              # 建立空白文件
rm -rf 目錄名           # 不提示刪除非空目錄(-r:遞歸刪除 -f強制)
dos2unix                # windows文本轉linux文本  
unix2dos                # linux文本轉windows文本
enca filename           # 查看編碼  安裝 yum install -y enca 
md5sum                  # 查看md5值

ln 源文件 目標文件         # 硬連接
ln -s 源文件 目標文件      # 符號鏈接
readlink -f /data       # 查看鏈接真實目錄
cat file | nl |less     # 查看上下翻頁且顯示行號  q退出

head                    # 查看文件開頭內容
head -c 10m             # 截取文件中10m內容
split -c 10m            # 將文件切割大小爲10m
tail -f file            # 查看結尾 監視日誌文件
file                    # 檢查文件類型
umask                   # 更改默認權限

uniq                    # 刪除重複的行
uniq -c                 # 重複的行出現次數
uniq -u                 # 只顯示不重複行

paste a b               # 將兩個文件合併用tab鍵分隔開
paste -d'+' a b         # 將兩個文件合併指定'+'符號隔開
paste -s a              # 將多行數據合併到一行用tab鍵隔開
chattr +i /etc/passwd   # 設置不可改變位
more                    # 向下分面器
locate 字符串              # 搜索

wc -l file              # 查看行數
cp filename{,.bak}      # 快速備份一個文件
\cp a b                 # 拷貝不提示 既不使用別名 cp -i
rev                     # 將行中的字符逆序排列
comm -12 2 3            # 行和行比較匹配
iconv -f gbk -t utf8 原.txt > 新.txt      # 轉換編碼
rename 原模式 目標模式 文件              #重命名,可正則
watch -d -n 1 'df; ls -flat /path'      # 實時某個目錄下查看最新改動過的文件
cp -v  /dev/dvd  /rhel4.6.Iphone 蘋果 ios 9660       # 製做鏡像
diff suzu.c suzu2.c  > sz.patch         # 製做補丁
patch suzu.c < sz.patch                 # 安裝補丁

sort

-t  # 指定排序時所用的欄位分隔字符
    -n  # 依照數值的大小排序
    -r  # 以相反的順序來排序
    -f  # 排序時,將小寫字母視爲大寫字母
    -d  # 排序時,處理英文字母、數字及空格字符外,忽略其餘的字符
    -c  # 檢查文件是否已經按照順序排序
    -b  # 忽略每行前面開始處的空格字符
    -m  # 前面3個字母依照月份的縮寫進行排序
    -k  # 指定域
    -m  # 將幾個排序好的文件進行合併
    +<起始欄位>-<結束欄位>   # 以指定的欄位來排序,範圍由起始欄位到結束欄位的前一欄位。
    -o  # 將排序後的結果存入指定的文
    n   # 表示進行排序
    r   # 表示逆序


    sort -n               # 按數字排序
    sort -nr              # 按數字倒敘
    sort -u               # 過濾重複行
    sort -m a.txt c.txt   # 將兩個文件內容整合到一塊兒
    sort -n -t' ' -k 2 -k 3 a.txt     # 第二域相同,將從第三域進行升降處理
    sort -n -t':' -k 3r a.txt         # 以:爲分割域的第三域進行倒敘排列
    sort -k 1.3 a.txt                 # 從第三個字母起進行排序
    sort -t" " -k 2n -u  a.txt        # 以第二域進行排序,若是遇到重複的,就刪除

find

# linux文件無建立時間
    # access 使用時間  
    # modify 內容修改時間  
    # change 狀態改變時間(權限、屬主)
    # 時間默認以24小時爲單位,當前時間到向前24小時爲0天,向前48-72小時爲2天
    # -and 且 匹配兩個條件 參數能夠肯定時間範圍 -mtime +2 -and -mtime -4
    # -or 或 匹配任意一個條件

    find /etc -name http         # 按文件名查找
    find . -type f               # 查找某一類型文件
    find / -perm                 # 按照文件權限查找
    find / -user                 # 按照文件屬主查找
    find / -group                # 按照文件所屬的組來查找文件
    find / -atime -n             # 文件使用時間在n天之內
    find / -atime +n             # 文件使用時間在n天之前
    find / -mtime -n             # 文件內容改變時間在n天之內
    find / -mtime +n             # 文件內容改變時間在n天之前
    find / -ctime +n             # 文件狀態改變時間在n天前
    find / -ctime -n             # 文件狀態改變時間在n天內
    find / -size +1000000c -print                           # 查找文件長度大於1m字節的文件
    find /etc -name "passwd*" -exec grep "xuesong" {} \;    # 按名字查找文件傳遞給-exec後命令
    find . -name 't*' -exec basename {} \;                  # 查找文件名,不取路徑
    find . -type f -name "err*" -exec  rename err err {} \; # 批量更名(查找err 替換爲 err {}文件
    find 路徑 -name *name1* -or -name *name2*               # 查找任意一個關鍵字

tar、gzip、gunzip

tar zxvpf gz.tar.gz -c    放到指定目錄 包中的目錄 # 解包tar.gz 不指定目錄則全解壓
    tar zcvpf /$path/gz.tar.gz * # 打包gz 注意*最好用相對路徑
    tar zcf /$path/gz.tar.gz *   # 打包正確不提示
    tar ztvpf gz.tar.gz          # 查看gz
    tar xvf 1.tar -c 目錄        # 解包tar
    tar -cvf 1.tar *             # 打包tar
    tar tvf 1.tar                # 查看tar
    tar -rvf 1.tar 文件名        # 給tar追加文件
    tar --exclude=/home/dmtsai -zcvf myfile.tar.gz /home/* /etc     
    # 打包/home, /etc ,但排除 /home/dmtsai

    tar -n "2005/06/01" -zcvf home.tar.gz /home      # 在 /home 當中,比 2005/06/01 新的文件才備份
    tar -zcvfh home.tar.gz /home                     # 打包目錄中包括鏈接目錄

    zgrep 字符 1.gz              # 查看壓縮包中文件字符行

    bzip2  -dv 1.tar.bz2         # 解壓bzip2
    bzip2 -v 1.tar               # bzip2壓縮
    bzcat                        # 查看bzip2

    gzip a                       # 直接壓縮文件 # 壓縮後源文件消失
    gunzip a.gz                  # 直接解壓文件 # 解壓後源文件消失

    gzip -dv 1.tar.gz            # 解壓gzip到tar
    gzip -v 1.tar                # 壓縮tar到gz

    unzip zip.zip                # 解壓zip
    zip zip.zip *                # 壓縮zip
    # rar3.6下載:  http://www.rarsoft.com/rar/rarlinux-3.6.0.tar.gz
    rar a rar.rar *.jpg          # 壓縮文件爲rar包
    unrar x rar.rar              # 解壓rar包

    7z a 7z.7z *                 # 7z壓縮
    7z e 7z.7z                   # 7z解壓

2、系統

系統信息

uname -a              # 查看linux內核版本信息
    cat /proc/version     # 查看內核版本
    cat /etc/issue        # 查看系統版本
    lsb_release -a        # 查看系統版本  需安裝 centos-release
    locale -a             # 列出全部語系
    hwclock               # 查看時間
    who                   # 當前在線用戶
    w                     # 當前在線用戶
    whoami                # 查看當前用戶名
    logname               # 查看初始登錄用戶名
    uptime                # 查看服務器啓動時間
    sar -n dev 1 10       # 查看網卡網速流量
    dmesg                 # 顯示開機信息
    lsmod                  # 查看內核模塊

硬件信息

more /proc/cpuinfo                                       # 查看cpu信息
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c    # 查看cpu型號和邏輯核心數
    getconf long_bit                                         # cpu運行的位數
    cat /proc/cpuinfo | grep physical | uniq -c              # 物理cpu個數
    cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l     # 結果大於0支持64位
    cat /proc/cpuinfo|grep flags                             # 查看cpu是否支持虛擬化   pae支持半虛擬化  intelvt 支持全虛擬化
    more /proc/meminfo                                       # 查看內存信息
    dmidecode                                                # 查看全面其餘硬件 信息
    dmidecode | grep "product name"                          # 查看服務器型號
    dmidecode | grep -p -a5 "memory\s+device" | grep size | grep -v range       # 查看內存插槽
    cat /proc/mdstat                                         # 查看軟raid信息
    cat /proc/scsi/scsi                                      # 查看dell硬raid信息(ibm、hp須要官方檢測工具)
    lspci                                                    # 查看其餘硬件 信息
    lspci|grep raid                                          # 查看是否支持raid
    lspci -vvv |grep ethernet                                # 查看網卡型號
    lspci -vvv |grep kernel|grep driver                      # 查看驅動模塊
    modinfo tg2                                              # 查看驅動版本(驅動模塊)
    ethtool -i em1                                           # 查看網卡驅動版本

系統命令

wall                      # 給其它用戶發消息
whereis ls                  # 查找命令的目錄
which                       # 查看當前要執行的命令所在的路徑
clear                       # 清空整個屏幕
reset                       # 從新初始化屏幕
cal                         # 顯示月曆
echo -n 123456 | md5sum     # md5加密
mkpasswd                    # 隨機生成密碼   -l位數 -c大小 -c小寫 -d數字 -s特殊字符
netstat -anlp | grep port   # 是否打開了某個端口
ntpdate stdtime.gov.hk      # 同步時間
tzselect                    # 選擇時區 #+8=(5 9 1 1) # (tz='asia/shanghai'; export tz)括號內寫入 /etc/profile
/sbin/hwclock -w            # 保存到其餘硬件 
/etc/shadow                 # 帳戶影子文件
lang=en                     # 修改語言
vim /etc/sysconfig/i18n     # 修改編碼  lang="en_us.utf-8"
export lc_all=c             # 強制字符集
vi /etc/hosts               # 查詢靜態主機名
alias                       # 別名
watch uptime                # 監測命令動態刷新
ipcs -a                     # 查看linux系統當前單個共享內存段的最大值
lsof |grep /lib             # 查看加載庫文件
ldconfig                    # 動態連接庫管理命令
dist-upgrade                # 會改變配置文件,改變舊的依賴關係,改變系統版本 
/boot/grub/grub.conf        # grub啓動項配置
sysctl -p                   # 修改內核參數/etc/sysctl.conf,讓/etc/rc.d/rc.sysinit讀取生效
mkpasswd -l 8  -c 2 -c 2 -d 4 -s 0            # 隨機生成指定類型密碼
echo 1 > /proc/sys/net/ipv4/tcp_syncookies    # 使tcp syn cookie 保護生效  # "syn attack"是一種拒絕服務的攻擊方式

進程

ps -eaf               # 查看全部進程
    kill -9 pid           # 強制終止某個pid進程
    kill -15 pid          # 安全退出 需程序內部處理信號
    cmd &                 # 命令後臺運行
    nohup cmd &           # 後臺運行不受shell退出影響
    ctrl+z                # 將前臺放入後臺(暫停)
    jobs                  # 查看後臺運行程序
    bg 2                  # 啓動後臺暫停進程
    fg 2                  # 調回後臺進程
    pstree                # 進程樹
    vmstat 1 9            # 每隔一秒報告系統性能信息9次
    sar                   # 查看cpu等狀態
    lsof file             # 顯示打開指定文件的全部進程
    lsof -i:32768         # 查看端口的進程
    renice +1 180         # 把180號進程的優先級加1
    ps aux |grep -v user | sort -nk +4 | tail      # 顯示消耗內存最多的10個運行中的進程,之內存使用量排序.cpu+3

top

前五行是系統總體的統計信息。
        第一行: 任務隊列信息,同 uptime 命令的執行結果。內容以下:
            01:06:48 當前時間
            up 1:22 系統運行時間,格式爲時:分
            1 user 當前登陸用戶數
            load average: 0.06, 0.60, 0.48 系統負載,即任務隊列的平均長度。
            三個數值分別爲 1分鐘、5分鐘、15分鐘前到如今的平均值。

        第2、三行:爲進程和cpu的信息。當有多個cpu時,這些內容可能會超過兩行。內容以下:
            tasks: 29 total 進程總數
            1 running 正在運行的進程數
            28 sleeping 睡眠的進程數
            0 stopped 中止的進程數
            0 zombie 殭屍進程數
            cpu(s): 0.3% us 用戶空間佔用cpu百分比
            1.0% sy 內核空間佔用cpu百分比
            0.0% ni 用戶進程空間內改變過優先級的進程佔用cpu百分比
            98.7% id 空閒cpu百分比
            0.0% wa 等待輸入輸出的cpu時間百分比
            0.0% hi
            0.0% si

        第4、五行:爲內存信息。內容以下:
            mem: 191272k total 物理內存總量
            173656k used 使用的物理內存總量
            17616k free 空閒內存總量
            22052k buffers 用做內核緩存的內存量
            swap: 192772k total 交換區總量
            0k used 使用的交換區總量
            192772k free 空閒交換區總量
            123988k cached 緩衝的交換區總量。
            內存中的內容被換出到交換區,然後又被換入到內存,但使用過的交換區還沒有被覆蓋,
            該數值即爲這些內容已存在於內存中的交換區的大小。
            相應的內存再次被換出時可,沒必要再對交換區寫入

進程信息區,各列的含義以下: # 顯示各個進程的詳細信息node

序號 列名    含義
        a   pid      進程id
        b   ppid     父進程id
        c   ruser    real user name
        d   uid      進程全部者的用戶id
        e   user     進程全部者的用戶名
        f   group    進程全部者的組名
        g   tty      啓動進程的終端名。不是從終端啓動的進程則顯示爲 ?
        h   pr       優先級
        i   ni       nice值。負值表示高優先級,正值表示低優先級
        j   p        最後使用的cpu,僅在多cpu環境下有意義
        k   %cpu     上次更新到如今的cpu時間佔用百分比
        l   time     進程使用的cpu時間總計,單位秒
        m   time+    進程使用的cpu時間總計,單位1/100秒
        n   %mem     進程使用的物理內存百分比
        o   virt     進程使用的虛擬內存總量,單位kb。virt=swap+res
        p   swap     進程使用的虛擬內存中,被換出的大小,單位kb。
        q   res      進程使用的、未被換出的物理內存大小,單位kb。res=code+data
        r   code     可執行代碼佔用的物理內存大小,單位kb
        s   data     可執行代碼之外的部分(數據段+棧)佔用的物理內存大小,單位kb
        t   shr      共享內存大小,單位kb
        u   nflt     頁面錯誤次數
        v   ndrt     最後一次寫入到如今,被修改過的頁面數。
        w   s        進程狀態。
            d=不可中斷的睡眠狀態
            r=運行
            s=睡眠
            t=跟蹤/中止
            z=殭屍進程
        x   command  命令名/命令行
        y   wchan    若該進程在睡眠,則顯示睡眠中的系統函數名
        z   flags    任務標誌,參考 sched.h

signal

kill -l                    # 查看linux提供的信號
        trap "echo aaa"  2 3 15    # shell使用 trap 捕捉退出信號

        # 發送信號通常有兩種緣由:
        #   1(被動式)  內核檢測到一個系統事件.例如子進程退出會像父進程發送sigchld信號.鍵盤按下control+c會發送sigint信號
        #   2(主動式)  經過系統調用kill來向指定進程發送信號                             
        # 進程結束信號 sigterm 和 sigkill 的區別:  sigterm 比較友好,進程能捕捉這個信號,根據您的須要來關閉程序。在關閉程序以前,您能夠結束打開的記錄文件和完成正在作的任務。在某些狀況下,假如進程正在進行做業並且不能中斷,那麼進程能夠忽略這個sigterm信號。
        # 若是一個進程收到一個sigusr1信號,而後執行信號綁定函數,第二個sigusr2信號又來了,第一個信號沒有被處理完畢的話,第二個信號就會丟棄。

        sighup  1          a     # 終端掛起或者控制進程終止
        sigint  2          a     # 鍵盤終端進程(如control+c)
        sigquit 3          c     # 鍵盤的退出鍵被按下
        sigill  4          c     # 非法指令
        sigabrt 6          c     # 由abort(3)發出的退出指令
        sigfpe  8          c     # 浮點異常
        sigkill 9          aef   # kill信號  馬上中止
        sigsegv 11         c     # 無效的內存引用
        sigpipe 13         a     # 管道破裂: 寫一個沒有讀端口的管道
        sigalrm 14         a     # 鬧鐘信號 由alarm(2)發出的信號 
        sigterm 15         a     # 終止信號,可以讓程序安全退出 kill -15
        sigusr1 30,10,16   a     # 用戶自定義信號1
        sigusr2 31,12,17   a     # 用戶自定義信號2
        sigchld 20,17,18   b     # 子進程結束自動向父進程發送sigchld信號
        sigcont 19,18,25         # 進程繼續(曾被中止的進程)
        sigstop 17,19,23   def   # 終止進程
        sigtstp 18,20,24   d     # 控制終端(tty)上按下中止鍵
        sigttin 21,21,26   d     # 後臺進程企圖從控制終端讀
        sigttou 22,22,27   d     # 後臺進程企圖從控制終端寫
        
        缺省處理動做一項中的字母含義以下:
            a  缺省的動做是終止進程
            b  缺省的動做是忽略此信號,將該信號丟棄,不作處理
            c  缺省的動做是終止進程並進



行內核映像轉儲(dump core),內核映像轉儲是指將進程數據在內存的映像和進程在內核結構中的部份內容以必定格式轉儲到文件系統,而且進程退出執行,這樣作的好處是爲程序員提供了方便,使得他們能夠獲得進程當時執行時的數據值,容許他們肯定轉儲的緣由,而且能夠調試他們的程序。
            d  缺省的動做是中止進程,進入中止情況之後還能從新進行下去,通常是在調試的過程當中(例如ptrace系統調用)
            e  信號不能被捕獲
            f  信號不能被忽略

crontab

at 5pm + 3 days /bin/ls  # 單次定時任務 指定三天後下午5:00執行/bin/ls

    crontab -e               # 編輯週期任務
    #分鐘  小時    天  月  星期   命令或腳本
    1,30  1-3/2    *   *   *      命令或腳本  >> file.log 2>&1
    echo "40 7 * * 2 /root/sh">>/var/spool/cron/root    # 直接將命令寫入週期任務
    crontab -l                                          # 查看自動週期性任務
    crontab -r                                          # 刪除自動週期性任務
    cron.deny和cron.allow                               # 禁止或容許用戶使用週期任務
    service crond start|stop|rest art                    # 啓動自動週期性服務

日誌管理

history                      # 歷時命令默認1000條
    histtimeformat="%y-%m-%d %h:%m:%s "   # 讓history命令顯示具體時間
    history  -c                  # 清除記錄命令
    cat $home/.bash_history      # 歷史命令記錄文件
    last                         # 查看登錄過的用戶信息
    who /var/log/wtmp            # 查看登錄過的用戶信息
    lastlog                      # 用戶最後登陸的時間
    lastb -a                     # 列出登陸系統失敗的用戶相關信息
    /var/log/btmp                # 登陸失敗二進制日誌記錄文件
    tail -f /var/log/messages    # 系統日誌
    tail -f /var/log/secure      # ssh日誌

selinux

sestatus -v                    # 查看selinux狀態
    getenforce                     # 查看selinux模式
    setenforce 0                   # 設置selinux爲寬容模式(可避免阻止一些操做)
    semanage port -l    # 查看selinux端口限制規則
    semanage port -a -t http_port_t -p tcp 8000  # 在selinux中註冊端口類型
    vi /etc/selinux/config         # selinux配置文件
    selinux=enfoceing              # 關閉selinux 把其修改成  selinux=disabled

iptables

內建三個表:nat mangle 和 filtermysql

filter預設規則表,有input、forward 和 output 三個規則鏈linux

vi /etc/sysconfig/iptables    # 配置文件
    input    # 進入
    forward  # 轉發
    output   # 出去
    accept   # 將封包放行
    reject   # 攔阻該封包
    drop     # 丟棄封包不予處理
    -a         # 在所選擇的鏈(input等)末添加一條或更多規則
    -d       # 刪除一條
    -e       # 修改
    -p         # tcp、udp、icmp    0至關於全部all    !取反
    -p       # 設置缺省策略(與全部鏈都不匹配強制使用此策略)
    -s         # ip/掩碼    (ip/24)    主機名、網絡名和清楚的ip地址 !取反
    -j         # 目標跳轉,當即決定包的命運的專用內建目標
    -i         # 進入的(網絡)接口 [名稱] eth0
    -o         # 輸出接口[名稱] 
    -m         # 模塊
    --sport  # 源端口
    --dport  # 目標端口


    iptables -f                        # 將防火牆中的規則條目清除掉  # 注意: iptables -p input accept
    iptables-rest ore < 規則文件        # 導入防火牆規則
    /etc/init.d/iptables save          # 保存防火牆設置
    /etc/init.d/iptables rest art       # 重啓防火牆服務
    iptables -l -n                     # 查看規則
    iptables -t nat -nl                # 查看轉發

iptables實例ios

iptables -l input                   # 列出某規則鏈中的全部規則
        iptables -x allowed                 # 刪除某個規則鏈 ,不加規則鏈,清除全部非內建的
        iptables -z input                   # 將封包計數器歸零
        iptables -n allowed                 # 定義新的規則鏈
        iptables -p input drop              # 定義過濾政策
        iptables -a input -s 192.168.1.1    # 比對封包的來源ip   # ! 192.168.0.0/24  ! 反向對比
        iptables -a input -d 192.168.1.1    # 比對封包的目的地ip
        iptables -a input -i eth0           # 比對封包是從哪片網卡進入
        iptables -a forward -o eth0         # 比對封包要從哪片網卡送出 eth+表示全部的網卡
        iptables -a input -p tcp            # -p ! tcp 排除tcp之外的udp、icmp。-p all全部類型
        iptables -d input 8                 # 從某個規則鏈中刪除一條規則
        iptables -d input --dport 80 -j drop         # 從某個規則鏈中刪除一條規則
        iptables -r input 8 -s 192.168.0.1 -j drop   # 取代現行規則
        iptables -i input 8 --dport 80 -j accept     # 插入一條規則
        iptables -a input -i eth0 -j drop            # 其它狀況不容許
        iptables -a input -p tcp -s ip -j drop       # 禁止指定ip訪問
        iptables -a input -p tcp -s ip --dport port -j drop               # 禁止指定ip訪問端口
        iptables -a input -s ip -p tcp --dport port -j accept             # 容許在ip訪問指定端口
        iptables -a input -p tcp --dport 22 -j drop                       # 禁止使用某端口
        iptables -a input -i eth0 -p icmp -m icmp --icmp-type 8 -j drop   # 禁止icmp端口
        iptables -a input -i eth0 -p icmp -j drop                         # 禁止icmp端口
        iptables -t filter -a input -i eth0 -p tcp --syn -j drop                  # 阻止全部沒有通過你係統受權的tcp鏈接
        iptables -a input -f -m limit --limit 100/s --limit-burst 100 -j accept   # ip包流量限制
        iptables -a input -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j accept  # 除192.168.62.1外,禁止其它人ping個人主機
        iptables -a input -p tcp -m tcp --dport 80 -m state --state new -m recent --update --seconds 5 --hitcount 20 --rttl --name web --rsource -j drop

iptables配置實例文件程序員

# generated by iptables-save v1.2.11 on fri feb  9 12:10:37 2007
        *filter
        :input accept [637:58967]
        :forward drop [0:0]
        :output accept [5091:1301533]

        # 容許的ip或ip段訪問 建議多個
        -a input -s 127.0.0.1 -p tcp -j accept
        -a input -s 192.168.0.0/255.255.0.0 -p tcp -j accept

        # 開放對外開放端口
        -a input -p tcp --dport 80 -j accept

        # 指定某端口針對ip開放
        -a input -s 192.168.10.37 -p tcp --dport 22 -j accept

        # 拒絕全部協議(input容許)
        -a input -p tcp -m tcp --tcp-flags fin,syn,rst,psh,urg rst -j drop

        # 容許已創建的或相關連的通行
        iptables -a input -m state --state established,related -j accept
        
        # 拒絕ping
        -a input -p tcp -m tcp -j reject --reject-with icmp-port-unreachable
        commit
        # completed on fri feb  9 12:10:37 2007

iptables配置實例web

# 容許某段ip訪問任何端口
        iptables -a input -s 192.168.0.3/24 -p tcp -j accept

        # 設定預設規則 (拒絕全部的數據包,再容許須要的,如只作其餘web服務器 .仍是推薦三個鏈都是drop)
        iptables -p input drop
        iptables -p forward drop
        iptables -p output accept

        # 注意: 直接設置這三條會掉線
        # 開啓22端口
        iptables -a input -p tcp --dport 22 -j accept

        # 若是output 設置成drop的,要寫上下面一條
        iptables -a output -p tcp --sport 22 -j accept 

        # 注:不寫致使沒法ssh.其餘的端口同樣,output設置成drop的話,也要添加一條鏈
        # 若是開啓了其餘web服務器 ,output設置成drop的話,一樣也要添加一條鏈
        iptables -a output -p tcp --sport 80 -j accept

        # 作其餘web服務器 ,開啓80端口 ,其餘同理
        iptables -a input -p tcp --dport 80 -j accept

        # 作郵件服務器,開啓25,110端口
        iptables -a input -p tcp --dport 110 -j accept
        iptables -a input -p tcp --dport 25 -j accept

        # 容許icmp包經過,容許ping
        iptables -a output -p icmp -j accept (output設置成drop的話) 
        iptables -a input -p icmp -j accept  (input設置成drop的話)

        # 容許loopback!(否則會致使dns沒法正常關閉等問題) 
        iptables -a input -i lo -p all -j accept (若是是input drop)
        iptables -a output -o lo -p all -j accept(若是是output drop)

Memory

free -m
    #-/+ buffers/cache:       6458       1649
    #6458m爲真實使用內存  1649m爲真實剩餘內存(剩餘內存+緩存+緩衝器)
    #linux會利用全部的剩餘內存做爲緩存,因此要保證linux運行速度,就須要保證內存的緩存大小

date

date -s 20091112                     # 設日期
    date -s 18:30:50                     # 設時間
    date -d "7 days ago" +%y%m%d         # 7天前日期
    date -d "5 minute ago" +%h:%m        # 5分鐘前時間
    date -d "1 month ago" +%y%m%d        # 一個月前
    date +%y-%m-%d -d '20110902'         # 日期格式轉換
    date +%y-%m-%d_%x                    # 日期和時間
    date +%n                             # 納秒
    date -d "2012-08-13 14:00:23" +%s    # 換算成秒計算(1970年至今的秒數)
    date -d "@1363867952" +%y-%m-%d-%t   # 將時間戳換算成日期
    date -d "1970-01-01 utc 1363867952 seconds" +%y-%m-%d-%t  # 將時間戳換算成日期
    date -d "`awk -f. '{print $1}' /proc/uptime` second ago" +"%y-%m-%d %h:%m:%s"    # 格式化系統啓動時間(多少秒前)

開機啓動腳本順序

/etc/profile
    /etc/profile.d/*.sh
    ~/bash_profile
    ~/.bashrc
    /etc/bashrc

4、服務

shell執行mysql

mysql -u$username -p$passwd -h$dbhost -p$dbport -a -e "
use $dbname;
delete from data where date=('$date1');"    
# 執行多條mysql命令

mysql -uroot -p -s mysql.sock -e "
use db;
alter table gift add column accountid  int(11) not null;
flush privileges;"    
# 不登錄mysql插入字段

5、網絡

rz   # 經過ssh上傳小文件
sz   # 經過ssh下載小文件
ifconfig eth0 down                  # 禁用網卡
ifconfig eth0 up                    # 啓用網卡
ifup eth0:0                         # 啓用網卡
mii-tool em1                        # 查看網線是否鏈接
traceroute www.baidu.com            # 測試跳數
vi /etc/resolv.conf                 # 設置dns  nameserver ip 定義dns服務器的ip地址
nslookup www.moon.com               # 解析域名ip
dig -x www.baidu.com                # 解析域名ip
curl -i www.baidu.com               # 查看網頁http頭
tcpdump tcp port 22                 # 抓包
lynx                                # 文本上網
wget -p 路徑 http地址               # 下載  包名:wgetrc
curl -d "user=xuesong&pwd=123" http://www.abc.cn/result    # 提交web頁面表單 需查看錶單提交地址
rsync -avzp -e "ssh -p 22" /dir user@$ip:/dir              # 同步目錄 # --delete 無差同步 刪除目錄下其它文件
ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0        # 增長邏輯ip地址
mtr -r www.baidu.com                                       # 測試網絡鏈路節點響應時間 # trace ping 結合
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all           # 禁ping
ipcalc -m "$ip" -p "$num"                                  # 根據ip和主機最大數計算掩碼
dig +short txt hacker.wp.dg.cx                             # 經過 dns 來讀取 wikipedia 的hacker詞條
host -t txt hacker.wp.dg.cx                                # 經過 dns 來讀取 wikipedia 的hacker詞條
net rpc shutdown -i ip_address -u username%password         # 遠程關掉一臺windows機器
wget --random-wait -r -p -e robots=off -u mozilla www.example.com    # 遞歸方式下載整個網站

netstat

-a     # 顯示全部鏈接中的socket
    -t     # 顯示tcp鏈接
    -u     # 顯示udp鏈接
    -n     # 顯示全部已創建的有效鏈接
    -anlp  # 查看連接
    –r     # 查看路由表

ssh

ssh -p 22 user@192.168.1.209                            # 從linux ssh登陸另外一臺linux 
    ssh -p 22 root@192.168.1.209 cmd                        # 利用ssh操做遠程主機
    scp -p 22 文件 root@ip:/目錄                            # 把本地文件拷貝到遠程主機
    sshpass -p '密碼' ssh -n root@$ip "echo hello"          # 指定密碼遠程操做
    ssh -o stricthostkeychecking=no $ip                     # ssh鏈接不提示yes
    ssh -t "su -"                                           # 指定僞終端 客戶端以交互模式工做
    scp root@192.168.1.209:遠程目錄 本地目錄                # 把遠程指定文件拷貝到本地
    ssh -n -l2001:remotehost:80 user@somemachine            # 用ssh建立端口轉發通道
    ssh -t host_a ssh host_b                                # 嵌套使用ssh
    ssh -t -p 22 $user@$ip /bin/su - root -c {$cmd};     # 遠程su執行命令 cmd="\"/sbin/ifconfig eth0\""
    ssh-keygen -t rsa                                       # 生成密鑰
    ssh-copy-id -i xuesong@10.10.10.133                     # 傳送key
    vi $home/.ssh/authorized_keys                           # 公鑰存放位置
    sshfs name@server:/path/to/folder /path/to/mount/point  # 經過ssh掛載遠程主機上的文件夾
    fusermount -u /path/to/mount/point                      # 卸載ssh掛載的目錄
    ssh user@host cat /path/to/remotefile | diff /path/to/localfile -                
    # 用diff對比遠程文件跟本地文件
    su - user -c "ssh user@192.168.1.1 \"echo -e aa |mail -s test mail@163.com\""    
    # 切換用戶登陸遠程發送郵件

ftps上傳

ftp -i -v -n $host <<end
        user $username $password 
        cd /ftp
        mkdir data
        cd data
        mput *.tar.gz
        bye
end

nmap

snmp

6、存儲

df -ph                                # 查看硬盤容量
df -t                                 # 查看磁盤分區格式
df -i                                 # 查看inode節點   若是inode用滿後沒法建立文件
du -h 目錄                            # 檢測目錄下全部文件大小
du -sh *                              # 顯示當前目錄中子目錄的大小
iostat -x                             # 查看磁盤io狀態
mount                                 # 查看分區掛載狀況
fdisk -l                              # 查看磁盤分區狀態
fdisk /dev/hda3                       # 分區 
mkfs -t ext3  /dev/hda3               # 格式化分區
fsck -y /dev/sda6                     # 對文件系統修復
lsof |grep delete                     
# 釋放進程佔用磁盤空間  列出進程後,查看文件是否存在,不存在則kill掉此進程

tmpwatch -afv 3                       # 刪除3小時內的臨時文件
cat /proc/filesystems                 # 查看當前系統支持文件系統
mount -o remount,rw /                 # 修改只讀文件系統爲讀寫
smartctl -h /dev/sda                  # 檢測硬盤狀態
smartctl -i /dev/sda                  # 檢測硬盤信息
smartctl -a /dev/sda                  # 檢測全部信息
e2label /dev/sda5                     # 查看卷標
e2label /dev/sda5 new-label           # 建立卷標
ntfslabel -v /dev/sda8 new-label      # ntfs添加捲標
tune2fs -j /dev/sda                   # ext2分區轉ext3分區
mke2fs -b 2048 /dev/sda5              # 指定索引塊大小
dumpe2fs -h /dev/sda5                 # 查看超級塊的信息
mount -t Iphone 蘋果 ios 9660 /dev/dvd  /mnt       # 掛載光驅
mount -t ntfs-3g /dev/sdc1 /media/yidong        # 掛載ntfs硬盤
mount -t nfs 10.0.0.3:/opt/images/  /data/img   # 掛載nfs
mount -o loop  /software/rhel4.6.Iphone 蘋果 ios    /mnt/    # 掛載鏡像文件

新硬盤掛載

fdisk /dev/sdc 
    p    #  打印分區
    d     #  刪除分區
    n    #  建立分區,(一塊硬盤最多4個主分區,擴展佔一個主分區位置。p主分區 e擴展)
    w    #  保存退出
    mkfs -t ext3 -l 卷標  /dev/sdc1        # 格式化相應分區
    mount /dev/sdc1  /mnt        # 掛載
    vi /etc/fstab               # 添加開機掛載分區
    label=/data            /data                   ext3    defaults        1 2      # 用卷標掛載
    /dev/sdb1              /data4                  ext3    defaults        1 2      # 用真實分區掛載
    /dev/sdb2              /data4                  ext3    noatime,defaults        1 2

第一個數字"1"該選項被"dump"命令使用來檢查一個文件系統應該以多快頻率進行轉儲,若不須要轉儲就設置該字段爲0sql

第二個數字"2"該字段被fsck命令用來決定在啓動時須要被掃描的文件系統的順序,根文件系統"/"對應該字段的值應該爲1,其餘文件系統應該爲2。若該文件系統無需在啓動時掃描則設置該字段爲0shell

當以 noatime 選項加載(mount)文件系統時,對文件的讀取不會更新文件屬性中的atime信息。設置noatime的重要性是消除了文件系統對文件的寫操做,文件只是簡單地被系統讀取。因爲寫操做相對讀來講要更消耗系統資源,因此這樣設置能夠明顯提升服務器的性能.wtime信息仍然有效,任什麼時候候文件被寫,該信息仍被更新vim

raid原理與區別

raid0至少2塊硬盤.吞吐量大,性能好,同時讀寫,但損壞一個就完蛋

    raid1至少2塊硬盤.至關鏡像,一個存儲,一個備份。安全性比較高.可是性能比0弱

    raid5至少3塊硬盤.分別存儲校驗信息和數據,壞了一個根據校驗信息能恢復

    raid6至少4塊硬盤.兩個獨立的奇偶系統,可壞兩塊磁盤,寫性能很是差

7、用戶

users                   # 顯示全部的登陸用戶
groups                  # 列出當前用戶和他所屬的組
who -q                  # 顯示全部的登陸用戶
groupadd                # 添加組
useradd user            # 創建用戶
passwd 用戶             # 修改密碼
userdel -r              # 刪除賬號及家目錄
chown -r user:group     # 修改目錄擁有者(r遞歸)
chown y\.li:mysql       # 修改全部者用戶中包含點"."
umask                   # 設置用戶文件和目錄的文件建立缺省屏蔽值
chgrp                   # 修改用戶組
finger                  # 查找用戶顯示信息
echo "xuesong" | passwd user --stdin       # 非交互修改密碼
useradd -g www -m  -s /sbin/nologin  www   # 指定組並不容許登陸的用戶,nologin容許使用服務
useradd -g www -m  -s /bin/false  www      # 指定組並不容許登陸的用戶,false最爲嚴格
usermod -l 新用戶名 老用戶名               # 修改用戶名
usermod -g user group                      # 修改用戶所屬組
usermod -d 目錄 -m 用戶                    # 修改用戶家目錄
usermod -g group user                      # 將用戶添加到附加組
gpasswd -d user group                      # 從組中刪除用戶
su - user -c " #命令1; "                   # 切換用戶執行
相關文章
相關標籤/搜索