Linux命令總結

    總結mysql

1.權限管理-----------linux

   @1.用戶權限管理ios

     chown : 設置用戶屬組屬主nginx

      chown   屬主:屬組web

      chown   :屬組   文件sql

     chgrp  :設置用戶屬組shell

     chgrp    屬組   文件數據庫

   @2.文件權限管理vim

    chmod命令用來改變許可權限。讀取、寫入和執行是許可權限中的三個主要設置。瀏覽器

    chmod: 設置文件的讀、寫、執行

r—文件能夠被讀取 w—文件能夠被寫入 x—文件能夠被執行,若是文件是程序的話

可使用帶有-l的ls命令來仔細查看一個文件的許多細節。

chmod命令用來設定文件的權限。標準用法:

chmod 文件的使用者(u,g,o,a)增減(+,-,=)權限名稱(r,w,x) 文件

文件的使用者說明權限說明增減說明 u 擁有文件的用戶r讀取權+添加權限 g全部者所在的組羣 w寫入權 -刪除權限 o其餘人x執行權=是它稱爲惟一權限 a所有(u,g和o)

刪除某一文件的全部權限,輸入命令:

chmod a-rwx test.txt

爲文件全部者添加權限,輸入命令:

chmod u+rwx test

還能夠用數字表示權限:4——讀取,2——寫入,1——執行。下面的兩個命令等價:

chmod 751 filename chmod u+rwx,g=rx,0=x filename

   @3.防火牆:iptables

       防火牆策略 規則

你可使用以下命令來查看 IPtables 防火牆策略FILTER 表:
iptables -L -n -v

若是你發佈有某個 IP 向服務器導入攻擊或非正常流量,可使用以下規則屏蔽其 IP 地址: iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

注意須要將上述的 XXX 改爲要屏蔽的實際 IP 地址,其中的 -A 參數表示在 INPUT 鏈的最後追加本條規則。(IPTables 中的規則是從上到下匹配的,一旦匹配成功就再也不繼續往下匹配)

若是你只想屏蔽 TCP 流量,可使用 -p 參數的指定協議,例如: iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

解封某個IP地址

要解封對 IP 地址的屏蔽,可使用以下命令進行刪除: iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

其中 -D 參數表示從鏈中刪除一條或多條規則。

使用IPtables關閉特定端口

不少時候,咱們須要阻止某個特定端口的網絡鏈接,可使用 IPtables 關閉特定端口。

阻止特定的傳出鏈接: iptables -A OUTPUT -p tcp --dport xxx -j DROP

阻止特定的傳入鏈接: iptables -A INPUT -p tcp --dport xxx -j ACCEPT

使用Multiport控制多端口

使用 multiport 咱們能夠一次性在單條規則中寫入多個端口,例如: iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

在規則中使用 IP 地址範圍

在 IPtables 中 IP 地址範圍是能夠直接使用 CIDR 進行表示的,例如: iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT

配置端口轉發

有時咱們須要將 Linux 服務器的某個服務流量轉發到另外一端口,此時可使用以下命令: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525

上述命令會將全部到達 eth0 網卡 25 端口的流量重定向轉發到 2525 端口。

屏蔽HTTP服務Flood攻擊

有時會有用戶在某個服務,例如 HTTP 80 上發起大量鏈接請求,此時咱們能夠啓用以下規則: iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

上述命令會將鏈接限制到每分鐘 100 個,上限設定爲 200。

禁止PING

對 Linux 禁 PING 可使用以下規則屏蔽 ICMP 傳入鏈接: iptables -A INPUT -p icmp -i eth0 -j DROP

容許訪問迴環網卡

環回訪問(127.0.0.1)是比較重要的,建議你們都開放: iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT

屏蔽指定MAC地址

使用以下規則能夠屏蔽指定的 MAC 地址: iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

限制併發鏈接數

若是你不但願來自特定端口的過多併發鏈接,可使用以下規則: iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

   @4.setenforce  0服務都是以普通用戶啓動的

   @5.服務權限-----全部的

 

2. 網絡管理

    @1.ip地址管理

         增刪改查命令

  使用ifconfig命令配置並查看網絡接口狀況

        ifconfig:查看linux   ip地址

        ifconfig -a

    @2.路由管理

  使用route 命令配置路由

       增刪改查

  表示例1:添加到主機路由# route add –host 192.168.4.2 dev eth0:1# route add –host 192.168.4.1 gw 192.168.4.250

2 ip address delete–刪除一個協議地址. 縮寫:delete、del、d# ip addr del 192.168.4.1/24 brd + dev eth0 label eth0:Alias1

5.3 ip address show–顯示協議地址. 縮寫:show、list、lst、sh、ls、l# ip addr ls eth0

5.4.ip address flush–清除協議地址. 縮寫:flush、f示例1 : 刪除屬於私網10.0.0.0/8的全部地址:# ip -s -s a f to 10/8示例2 : 取消全部以太網卡的IP地址# ip -4 addr flush label 「eth0″—————————

    @3.NDS 查看驗證域名是否解析成功

ping命令。第一行會返回域名及解析的ip

host命令。會返回域名has ip 地址。

nslookup命令。輸入命令後回車,在命令提示符輸入域名,回車,就會顯示域名的ip地址。

dig命令。會顯示a記錄即域名的解析。

dig命令能夠trace解析過程,先訪問13臺根域root(.)服務器,其中一臺根域服務器返回一級域名服務器(本例是.com.)的ip地址,一級服務器再返回二級域名服務器ip地址(本例  .baidu.com.)...... dig命令的其餘參數,能夠查看help。

    @4.網卡管理

     ifup  ifdown

ifdown和ifup命令和運行ifconfig up,ifconfig down的功能同樣。給定網絡接口的名字能夠只禁用或啓用這一個接口。須要root權限,因此在Ubuntu上須要使用sudo來運行。

netstat -s則顯示全部端口的詳細統計信息。

3.管理本地資源命令

    @1.內存     查看命令

     2)硬盤

     3)cpu

     4)進程

     5)內核

top: 
主要參數
d:指定更新的間隔,以秒計算。
q:沒有任何延遲的更新。若是使用者有超級用戶,則top命令將會以最高的優先序執行。
c:顯示進程完整的路徑與名稱。
S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。
s:安全模式。
i:不顯示任何閒置(Idle)或無用(Zombie)的行程。
n:顯示更新的次數,完成後將會退出to
顯示參數:
PID(Process ID):進程標示號。
USER:進程全部者的用戶名。
PR:進程的優先級別。
NI:進程的優先級別數值。
VIRT:進程佔用的虛擬內存值。
RES:進程佔用的物理內存值。
SHR:進程使用的共享內存值。
S:進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數。
%CPU:該進程佔用的CPU使用率。
%MEM:該進程佔用的物理內存和總內存的百分比。
TIME+:該進程啓動後佔用的總的CPU時間。
Command:進程啓動的啓動命令名稱,若是這一行顯示不下,進程會有一個完整的命令行。
top命令使用過程當中,還可使用一些交互的命令來完成其它參數的功能。這些命令是經過快捷鍵啓動的。
<空格>:馬上刷新。
P:根據CPU使用大小進行排序。
T:根據時間、累計時間排序。
q:退出top命令。
m:切換顯示內存信息。
t:切換顯示進程和CPU狀態信息。
c:切換顯示命令名稱和完整命令行。
M:根據使用內存大小進行排序。
W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
free 
1.做用
free命令用來顯示內存的使用狀況,使用權限是全部用戶。

2.格式
free [-b-k-m] [-o] [-s delay] [-t] [-V]

3.主要參數
-b -k -m:分別以字節(KB、MB)爲單位顯示內存使用狀況。
-s delay:顯示每隔多少秒數來顯示一次內存使用狀況。
-t:顯示內存總和列。
-o:不顯示緩衝區調節列。

uptime 
18:59:15 up 25 min, 2 users, load average: 1.23, 1.32, 1.21
如今的時間
系統開機運轉到如今通過的時間
連線的使用者數量
最近一分鐘,五分鐘和十五分鐘的系統負載
參數: -V 顯示版本資訊。

vmstat 
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 1 24980 10792 8296 47316 5 19 205 52 1161 698 26 3 1 70
1 觀察磁盤活動狀況
磁盤活動狀況主要從如下幾個指標瞭解:
bi:表示從磁盤每秒讀取的塊數(blocks/s)。數字越大,表示讀磁盤的活動越多。
bo:表示每秒寫到磁盤的塊數(blocks/s)。數字越大,表示寫磁盤的活動越多。
wa:cpu等待磁盤I/O(未決的磁盤IO)的時間比例。數字越大,表示文件系統活動阻礙cpu的狀況越嚴重,由於cpu在等待慢速的磁盤系統提供數據。wa爲0是最理想的。若是wa常常大於10,可能文件系統就須要進行性能調整了。 
2 觀察cpu活動狀況
vmstat比top更能反映出cpu的使用狀況:
us:用戶程序使用cpu的時間比例。這個數字越大,表示用戶進程越繁忙。
sy: 系統調用使用cpu的時間比例。注意,NFS因爲是在內核裏面運行的,因此NFS活動所佔用的cpu時間反映在sy裏面。這個數字常常很大的話,就須要注 意是否某個內核進程,好比NFS任務比較繁重。若是us和sy同時都比較大的話,就須要考慮將某些用戶程序分離到另外的服務器上面,以避免互相影響。
id:cpu空閒的時間比例。
wa:cpu等待未決的磁盤IO的時間比例。

iostat 
用於統計CPU的使用狀況及tty設備、硬盤和CD-ROM的I/0量
參數:
-c 只顯示CPU行
-d 顯示磁盤行
-k 以千字節爲單位顯示磁盤輸出
-t 在輸出中包括時間戳
-x 在輸出中包括擴展的磁盤指標

avg-cpu: %user %nice %sys %iowait %idle
20.25 0.18 2.61 76.39 0.57
%iowait 等待本地I/O時CPU空閒時間的百分比
%idle 未等待本地I/O時CPU空閒時間的百分比

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
hda 9.86 284.34 84.48 685407 2036
每秒傳輸數(tps)、每秒512字節塊讀取數(Blk_read/s)、每秒512字節塊寫入數(Blk_wrtn/s)和512字節塊讀取(Blk_read)和寫入(Blk_wrtn)的總數量。

系統 
  # uname -a # 查看內核/操做系統/CPU信息
  # head -n 1 /etc/issue # 查看操做系統版本
  # cat /proc/cpuinfo # 查看CPU信息
  # hostname # 查看計算機名
  # lspci -tv # 列出全部PCI設備
  # lsusb -tv # 列出全部USB設備
  # lsmod # 列出加載的內核模塊
  # env # 查看環境變量

資源
  # free -m # 查看內存使用量和交換區使用量
  # df -h # 查看各分區使用狀況
  # du -sh # 查看指定目錄的大小
  # grep MemTotal /proc/meminfo # 查看內存總量
  # grep MemFree /proc/meminfo # 查看空閒內存量
  # uptime # 查看系統運行時間、用戶數、負載
  # cat /proc/loadavg # 查看系統負載
  磁盤和分區
  # mount | column -t # 查看掛接的分區狀態
  # fdisk -l # 查看全部分區
  # swapon -s # 查看全部交換分區
  # hdparm -i /dev/hda # 查看磁盤參數(僅適用於IDE設備)
  # dmesg | grep IDE # 查看啓動時IDE設備檢

# ps -ef # 查看全部進程
  # top # 實時顯示進程狀態

服務 
  # chkconfig --list # 列出全部系統服務
  # chkconfig --list | grep on # 列出全部啓動的系統服務

4.文件處理命令

     @1.編輯命令

若是沒有文檔並且你又想編輯就能夠直接編輯vi aa【名字你能夠隨便命名】
也能夠先創建一個文檔touch aa 而後再編輯vi aa
編輯器有三種模式 1 命令行模式 2 末行模式 3 輸入模式
按Esc 就能夠進入命令行模式也是系統默認模式
輸入模式能夠按 o i a 均可以進入 退出能夠進入末行和命令行模式
末行模式能夠按ctrl+;它的主要功能是退出編輯器 也能夠保存退出文檔
q! 【強制退出不保存】 q【退出不保存】 wq【退出並保存後面也能夠加個!】
在輸入模式和命令行模式命令不少 若是你想具體知道哪些你能夠在和我說
如複製(yy)粘貼(p) 刪除(d)等等

     @2.增刪改查

使用vi編輯該文件:

vi有兩個模式:一個是編輯一個是命令。咱們從命令進入編輯爲:i,o,a。通常使用的是i:由於這個我是最熟悉的。退出點擊esc鍵,就進入命令模式。

咱們須要刪除文件的當前行和後一行,命令爲:2dd,通常咱們使用的是單個字符的刪除爲:x。咱們通常進入編輯模式,來進行添加,修改,刪除。

可是當咱們刪除和修改的內容過多的時候,咱們使用命令行模式,進行修改,這樣方便,快捷,而命令行中,最經常使用到的是x,dd,u,p這四個命令:

x:刪除當前字符:

dd:刪除當前行:

u:恢復前一步操做:

p:複製以前刪除的行:

rm -rf 刪除文件

touch 、 vim、vi、echo、cp 建立新文件

mv 修更名字

5.磁盤分區命令

     @1.主分區

     @2.邏輯分區

     @3.擴展分區

分區工具fdisk用法介紹
   fdisk命令參數介紹
   p、打印分區表。
   n、新建一個新分區。
   d、刪除一個分區。
   q、退出不保存。
   w、把分區寫進分區表,保存並退出

6.軟件管理命令(安裝 、 卸載、更新、查看、查看)
    1)rpm
        rpm   ---   
        rpm -qf  
        rpm -ql
            RPM是RedHat Package Manager(RedHat軟件包管理工具)相似Windows裏面的「添加/刪除程序」
rpm 執行安裝包
二進制包(Binary)以及源代碼包(Source)兩種。二進制包能夠直接安裝在計算機中,而源代碼包將會由RPM自動編譯、安裝。源代碼包常常以src.rpm做爲後綴名。
經常使用命令組合:
-ivh:安裝顯示安裝進度--install--verbose--hash
-Uvh:升級軟件包--Update;
-qpl:列出RPM軟件包內的文件信息[Query Package list];
-qpi:列出RPM軟件包的描述信息[Query Package install package(s)];
-qf:查找指定文件屬於哪一個RPM軟件包[Query File];
-Va:校驗全部的RPM軟件包,查找丟失的文件[View Lost];
-e:刪除包
rpm -q samba //查詢程序是否安裝
rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm //按路徑安裝並顯示進度
rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm    //指定安裝目錄
rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm    //用來檢查依賴關係;並非真正的安裝;
rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //新版本降級爲舊版本
rpm -qa | grep httpd      #[搜索指定rpm包是否安裝]--all搜索*httpd*
rpm -ql httpd         #[搜索rpm包]--list全部文件安裝目錄
rpm -qpi Linux-1.4-6.i368.rpm #[查看rpm包]--query--package--install package信息
rpm -qpf Linux-1.4-6.i368.rpm #[查看rpm包]--file
rpm -qpR file.rpm       #[查看包]依賴關係
rpm2cpio file.rpm |cpio -div    #[抽出文件]
rpm -ivh file.rpm  #[安裝新的rpm]--install--verbose--hash
rpm -ivh
http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
rpm -Uvh file.rpm    #[升級一個rpm]--upgrade
rpm -e file.rpm      #[刪除一個rpm包]--erase
    2)yum
        yum  -

 

1 安裝 yum install 所有安裝 yum install package1 安裝指定的安裝包package1 yum groupinsall group1 安裝程序組group1

 

2 更新和升級 yum update 所有更新 yum update package1 更新指定程序包package1 yum check-update 檢查可更新的程序 yum upgrade package1 升級指定程序包package1 yum groupupdate group1 升級程序組group1

 

3 查找和顯示 yum info package1 顯示安裝包信息package1 yum list 顯示全部已經安裝和能夠安裝的程序包 yum list package1 顯示指定程序包安裝狀況package1 yum groupinfo group1 顯


    3)源碼安裝------二級制

wget 命令

wget http://xxx.xxx.xxx.xx/aaa/gcc.tar.gz   -c -O /tmp/gcc.tar.gz

 

     -c  斷點下載

 

     -O   指定路徑

 

 

 

wget 下載網站 

 

  wget  -m  http://xxx.com/xxx

 

wget -r -p -np -k http://xxx.com/xxx
-r,  --recursive(遞歸)          specify recursive download.(指定遞歸下載) -k,  --convert-links(轉換連接)      make links in downloaded HTML point to local files.(將下載的HTML頁面中的連接轉換爲相對連接即本地連接) -p,  --page-requisites(頁面必需元素)    get all images, etc. needed to display HTML page.(下載全部的圖片等頁面顯示所需的內容) -np, --no-parent(不追溯至父級)          don't ascend to the parent directory.


    4)二進制------(綠色軟件)
8、平常命令:
    ping 

命令格式:

ping [參數] [主機名或IP地址]

 

2.命令功能:

 

ping命令用於:肯定網絡和各外部主機的狀態跟蹤和隔離硬件和軟件問題測試、評估和管理網絡。若是主機正在運行並連在網上,它就對回送信號進行響應。每一個回送信號請求包含一個網際協議(IP)和 ICMP 頭,後面緊跟一個 tim 結構,以及來填寫這個信息包的足夠的字節。缺省狀況是連續發送回送信號請求直到接收到中斷信號(Ctrl-C)。

 

ping 命令每秒發送一個數據報而且爲每一個接收到的響應打印一行輸出。ping 命令計算信號往返時間和(信息)包丟失狀況的統計信息,而且在完成以後顯示一個簡要總結。ping 命令在程序超時或當接收到 SIGINT 信號時結束。Host 參數或者是一個有效的主機名或者是因特網地址。

 

3.命令參數:

 

-d 使用Socket的SO_DEBUG功能。

 

-f  極限檢測。大量且快速地送網絡封包給一臺機器,看它的迴應。

 

-n 只輸出數值。

 

-q 不顯示任何傳送封包的信息,只顯示最後的結果。

 

-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。一般是查看本機的網絡接口是否有問題。

 

-R 記錄路由過程。

 

-v 詳細顯示指令的執行過程。

 

<p>-c 數目在發送指定數目的包後中止。

 

-i 秒數設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次。

 

-I 網絡界面使用指定的網絡界面送出數據包。

 

-l 前置載入設置在送出要求信息以前,先行發出的數據包。

 

-p 範本樣式設置填滿數據包的範本樣式。

 

-s 字節數指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。

 

-t 存活數值設置存活數值TTL的大小。


    ssh

 

一、查看SSH客戶端版本

有的時候須要確認一下SSH客戶端及其相應的版本號。使用ssh -V命令能夠獲得版本號。須要注意的是,Linux通常自帶的是OpenSSH: 下面的例子即代表該系統正在使用OpenSSH:

$ ssh -V OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003

下面的例子代表該系統正在使用SSH2:

$ ssh -V ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu

二、鏈接到遠程主機:

命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 說明:以上兩種方式均可以遠程登陸到遠程主機,server表明遠程主機,name爲登陸遠程主機的用戶名。

三、鏈接到遠程主機指定的端口:

命令格式: ssh name@remoteserver -p 2222 或者 ssh remoteserver -l name -p 2222 說明:p 參數指定端口號,一般在路由裏作端口映射時,咱們不會把22端口直接映射出去,而是轉換成其餘端口號,這時就須要使用-p端口號命令格式。

四、經過遠程主機1跳到遠程主機2:

命令格式: ssh -t remoteserver1 ssh remoteserver2 說明:當遠程主機remoteserver2沒法直接到達時,可使用-t參數,而後由remoteserver1跳轉到remoteserver2。在此過程當中要先輸入remoteserver1的密碼,而後再輸入remoteserver2的密碼,而後就能夠操做remoteserver2了。

五、經過SSH運行遠程shell命令:

命令格式: ssh -l name remoteserver ‘command’ 說明:鏈接到遠程主機,並執行遠程主機的command命令。例如:查看遠程主機的內存使用狀況。 $ ssh -l root 192.168.1.100 svmon -G

六、修改SSH監聽端口:

默認狀況下,SSH監聽鏈接端口22,攻擊者使用端口掃描軟件就能夠看到主機是否運行有SSH服務,將SSH端口修改成大於1024的端口是一個明智的選擇,由於大多數端口掃描軟件(包括nmap)默認狀況都不掃描高位端口。打開/etc/ssh/sshd_config文件並查找下面這樣的行: Port  22 去掉該行前面的# 號,而後修改端口號並從新啓動SSH服務: $ /etc/init.d/ssh restart

七、僅容許SSH協議版本2:

有兩個SSH協議版本,僅使用SSH協議版本2會更安全,SSH協議版本1有安全問題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。編輯/etc/ssh/sshd_config文件並查找下面這樣的行: # Protocol 2,1 修改成 Protocol 2

八、禁止root用戶登陸:

一般狀況下,不採用直接用root用戶登陸到遠程主機,因爲root用戶擁有超級權限,這樣會帶來安全隱患,因此,通常咱們用普通用戶登陸,當須要管理遠程主機時,再切換到root用戶下。打開/etc/ssh/sshd_config文件並查找下面這樣的行: #PermitRootLogin yes 將#號去掉,而後將yes修改爲no,重啓ssh服務,這樣就能夠禁止root用戶登陸。
將#號去掉,而後將bannertest.txt文件的全路徑替換/some/path,而後保存,重啓ssh服務。當客戶端登陸時,就會看到bannertest.txt文件中的提示信息。

九、進行端口映射:

假如公司內網有臺web服務器,可是隻對內不對外,這樣,外網就沒法訪問,能夠用ssh進行端口映射來實現外網訪問內網的web服務器。假如web服務器名爲webserver,webserver能夠用ssh訪問到遠端主機remoteserver,登陸到webserver,而後用下面命令進行映射 命令格式: ssh -R 3000:localhost:80 remoteserver 執行完成後,在remoteserver機器上,執行netstat -an | grep 3000,查看有沒有開通3000端口。並執行如下命令觀察是否能夠打開webserver上的網頁 $ w3m http://127.0.0.1:3000 若是能打開界面,說明映射成功.可是,這隻限於本機訪問web服務器,即只能remoteserver機器訪問webserver。由於3000端口綁定的是remoteserver機器的127.0.0.1端口。能夠編輯remoteserver機器上的/etc/ssh/sshd_config文件並添加以下內容: 添加 GatewayPorts yes  內容,把監聽端口3000綁定到 0.0.0.0 地址上,這樣外部的全部機器都能訪問到這個監聽端口,而後保存退出。並重啓ssh服務。完成後其它機器就能夠在瀏覽器中輸入 http://remoteserver:3000來訪問webserver了。

十、設置登陸時提示信息

首先編輯一個文件,如bannertest.txt,文件內容自行定義。而後打開/etc/ssh/sshd_config文件並查找下面這樣的行: #Banner /some/path


    telnet

 (1)用法:

    用法:  telnet [參數] [主機]

 

 

 

    (2)功能:

 

    功能:  telnet命令一般用來遠程登陸。

 

    原理: Telnet服務雖然也屬於客戶機/服務器模型的服務,但它更大的意義在於實現了基於Telnet協議的遠程登陸(遠程交互式計算)。

 

    telnet實現的遠程登陸:

 

    分時系統容許多個用戶同時使用一臺計算機,爲了保證系統的安全和記賬方便,系統要求每一個用戶有單獨的賬號做爲登陸標識,系統還爲每一個用戶指定了一個口令。用戶在使用該系統以前要輸入標識和口令,這個過程被稱爲'登遠程登錄是指用戶使用Telnet命令,使本身的計算機暫時成爲遠程主機的一個仿真終端的過程。仿真終端等效於一個非智能的機器,它只負責把用戶輸入的每一個字符傳遞給主機,再將主機輸出的每一個信息回顯在屏幕上。

 

    telnet的簡介:

 

    Telnet協議是TCP/IP協議族中的一員,是Internet遠程登錄服務的標準協議和主要方式。它爲用戶提供了在本地計算機上完成遠程主機工做的能力。在終端使用者的電腦上使用telnet程序,用它鏈接到服務器。終端使用者能夠在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制檯上輸入同樣。能夠在本地就能控制服務器。要開始一個 telnet會話,必須輸入用戶名和密碼來登陸服務器。

 

  Telnet是經常使用的遠程控制Web服務器的方法。可是,telnet由於採用明文傳送報文,安全性很差,不少Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。但仍然有不少別的系統可能採用了telnet方式來提供遠程登陸,所以弄清楚telnet客戶端的使用方式還是頗有必要的。

 

    telnet命令還可作別的用途,好比肯定遠程服務的狀態,好比肯定遠程服務器的某個端口是否能訪問。

 

 

 

    (3)選項參數:

 

  1) -8          容許使用8位字符資料,包括輸入與輸出。

 

     2) -a        嘗試自動登入遠端系統。

 

   3) -b<主機別名>   使用別名指定遠端主機名稱。

 

     4) -c          不讀取用戶專屬目錄裏的.telnetrc文件。

 

     5) -d        啓動排錯模式。

 

     6) -e<脫離字符>   設置脫離字符。

 

     7) -E        濾除脫離字符。

 

     8) -f            此參數的效果和指定"-F"參數相同。

 

     9) -F        使用Kerberos V5認證時,加上此參數可把本地主機的認證數據上傳到遠端主機。

 

   10) -k<域名>     使用Kerberos認證時,加上此參數讓遠端主機採用指定的領域名,而非該主機的域名。

 

   11) -K           不自動登入遠端主機。

 

   12) -l<用戶名稱>    指定要登入遠端主機的用戶名稱。

 

   13) -L        容許輸出8位字符資料。

 

   14) -n<記錄文件>   指定文件記錄相關信息。

 

   15) -r         使用相似rlogin指令的用戶界面。

 

   16) -S<服務類型>   設置telnet連線所需的IP TOS信息。

 

   17) -x         假設主機有支持數據加密的功能,就使用它。

 

   18) -X<認證形態>   關閉指定的認證形態。

 

 

 

    (4)實例:

 

     1)[root@localhost xinetd.d]# telnet localhost 23      鏈接本地的主機,端口號爲23


    ftp

 

1、ftpget命令和mget命令有何不一樣?

 

get一次只下載一個文件;mget一次能夠下載多個文件,並且支持通配符,須要注意的是在mget的時侯,須要對每個文件都選擇y/n,若是想不交互的下載所有的文件,能夠先用prompt命令關掉交互方式(關閉:prompt off;打開:prompt on)。

 

2、FTP使用什麼命令來定位服務器與本地硬盤的路徑?

 

ftp中用lcd切換本地路徑,用cd切換遠程服務器的路徑。經常使用到的命令以下:

 

cd目錄名(進入服務器目錄)    lcd目錄名(進入本機目錄)

 

cd \(退到服務器根目錄)      lcd \(退到本機根目錄)

 

cd ..(退回到上一級目錄)     lcd ..(退回到上一級目錄)

 

3、!命令有何做用?

 

執行本地shell命令,如:!dir(顯示本機當親目錄內容),若是不加!如:dir(顯示服務器當前目錄內容)

 

4、ftp命令支持「含有空格」的文件夾/文件名嗎?

 

支持,只要在引用時加上雙引號「」便可!

 

5、下面是命令行方式使用FTP的實戰練習

 

假設有一ftp服務器:ftp.test.com,用戶名:username,密碼:user1234。在本地電腦D:盤建立一個文件夾「qint」。將要上傳的文件複製到D:\qint裏。經過FTP命令將文件從本地上傳,從服務器下載的步驟以下:

 

一、「開始」→「運行」→輸入「FTP

 

二、open ftp.test.com

 

注意:這一步能夠與第一步合併,在「運行」裏直接輸入:ftp ftp.test.com。若是你的FTP服務器不是用的21默認端口,假如端口是2121,那麼此步的命令應在後面空格加2121,即「open ftp.test.com

 

三、username 注意:提示你輸入用戶名

 

四、user1234 注意:提示你輸入密碼,密碼不回顯,打完密碼後回車便可。若是你的密碼輸入錯誤,將不會提示你從新輸入,這時你要鍵入「user」命令,將會出現第三步,你能夠從新輸入用戶名和密碼。

 

五、dir 注意:你成功登錄後就能夠用dir查看命令查看FTP服務器中的文件及目錄,用ls命令只能夠查看文件。

 

六、mkdir qint 注意:在FTP服務器上根目錄下創建qint目錄

 

七、cd qint 注意:進入目錄qint,用「cd 你的目錄名」能夠進入當前目錄的下一級目錄,這跟DOS同樣。

 

八、bin

 

注意:採用二進制傳輸。若是你要上傳下載,這一步很重要,不先執行這個命令,上傳下載會很慢。大多數系統(包括UNIX系統)只有兩種模式:文本模式和二進制模式。文本傳輸器使用ASCII字符,並由回車鍵和換行符分開,而二進制不用轉換或格式化就可傳字符,二進制模式比文本模式更快,而且能夠傳輸全部ASCII值,因此係統管理員通常將FTP設置成二進制模式。通常來講,咱們最好都用binary方式,這樣能夠保證不出錯。

 

九、lcd d:\qint

 

注意:定位本地默認文件夾,在前面已事先在D:盤建立

 

十、!dir

 

注意:查看本地文件夾中的文件及目錄

 

十一、put i001.jpg 注意:將當前目錄(d:\qint)中的文件i001.jpg上傳到FTP服務器默認目錄。能夠用「mput *.*」將全部文件上傳到FTP服務器上。

 

十二、get d123.jpg 注意:將FTP服務器默認目錄中的文件d123.jpg下載到當前目錄下(d:\qint)。能夠用「mget *.*」將全部文件下載到d:\qint

 

1三、delete *.*

 

注意:刪除服務器對應目錄qint中的全部文件。

 

1四、cd ..

 

注意:返回至上一級目錄,即根目錄。返回上一級目錄用「cd ..」要注意,中間有空格。返回根目錄用「cd \」。

 

1五、mrdir qint

 

注意:刪除目錄qint。刪除目錄,在此目錄下不能有文件及目錄,否則將沒法刪除。

 

1六、bye

 

注意:退出FTP服務器。

 

上傳下載時特別要注意服務器及本地電腦的當前目錄,文件是從哪裏到哪裏的問題。查看FTP服務器的當前目錄命令爲pwd,能夠用cd命令定位服務器的目錄。能夠用lcd命令定位本地電腦的目錄。

 

以上實例應用到了採用FTP命令行方式上傳下載的最經常使用命令,你還能夠用命令「?」查看更多的命令


9、服務命令:
        httpd

 

參數說明

 

  • -c<httpd指令>   在讀取配置文件前,先執行選項中的指令。
  • -C<httpd指令>   在讀取配置文件後,再執行選項中的指令。
  • -d<服務器根目錄>   指定服務器的根目錄。
  • -D<設定文件參數>   指定要傳入配置文件的參數。
  • -f<設定文件>   指定配置文件。
  • -h   顯示幫助。
  • -l   顯示服務器編譯時所包含的模塊。
  • -L   顯示httpd指令的說明。
  • -S   顯示配置文件中的設定。
  • -t   測試配置文件的語法是否正確。
  • -v   顯示版本信息。
  • -V   顯示版本信息以及創建環境。
  • -X   以單一程序的方式來啓動服務器。
            nginx
  • 一、查看nginx進程

    1

    ps -ef|grep nginx

    說明:nginx的進程由主進程和工做進程組成。

      www.2cto.com 

    二、啓動nginx

     

    1

    nginx

    啓動結果顯示nginx的主線程和工做線程,工做線程的數量跟nginx.conf中的配置參數worker_processes有關。

     

    三、平滑啓動nginx

    1

    kill -HUP `cat /var/run/nginx.pid`

    2

    或者

    3

    nginx -s reload

    其中進程文件路徑在配置文件nginx.conf中能夠找到。

     

    平滑啓動的意思是在不中止nginx的狀況下,重啓nginx,從新加載配置文件,啓動新的工做線程,完美中止舊的工做線程。

     

    四、完美中止nginx 
    1
    kill -QUIT `cat /var/run/nginx.pid`
     
    五、快速中止nginx 
    1
    kill -TERM `cat /var/run/nginx.pid`
    2
    或者
    3
    kill -INT `cat /var/run/nginx.pid`
     
    六、完美中止工做進程(主要用於平滑升級) 
    1
    kill -WINCH `cat /var/run/nginx.pid`
     
    七、強制中止nginx 
    1
    pkill -9 nginx
     
    八、檢查對nginx.conf文件的修改是否正確 
    1
    nginx -t -c /etc/nginx/nginx.conf 或者 nginx -t
     
    九、中止nginx的命令 
    1
    nginx -s stop
    十、查看nginx的版本信息
     
    1
    nginx -v
     
    十一、查看完整的nginx的配置信息 
     
    1
    nginx -V
            mysql
            mysql  -e
            mysql  -h  -p   -u
  • 一.linux下啓動mysql的命令: 

               1. mysqladmin start 

             2. /ect/init.d/MySQL start (前面爲mysql的安裝路徑) 

    二.linux下重啓mysql的命令: 

    1.mysqladmin restart  2./ect/init.d/mysql restart (前面爲mysql的安裝路徑) 

    三.linux下關閉mysql的命令: 

    1.mysqladmin shutdown  2./ect/init.d/mysql shutdown (前面爲mysql的安裝路徑) 

    四.鏈接本機上的mysql: 

    1.進入目錄mysql\bin,再鍵入命令mysql -uroot -p, 回車後提示輸入密碼。  2.退出mysql命令:exit(回車) 

    五.修改mysql密碼: 

    1.mysqladmin -u用戶名 -p舊密碼 password 新密碼  2.或進入mysql命令行SET PASSWORD FOR root=PASSWORD("root"); 

    六.增長新用戶。(注意:mysql環境中的命令後面都帶一個分號做爲命令結束符) 

    1.grant select on 數據庫.* to 用戶名@登陸主機 identified by "密碼"  2.如增長一個用戶test密碼爲123,讓他能夠在任何主機上登陸,並對全部數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入mysql,而後鍵入如下命令:  3.grant select,insert,update,delete on *.* to " Identified by "123"; 

    7、有關mysql數據庫方面的操做 

    必須首先登陸到mysql中,有關操做都是在mysql的提示符下進行,並且每一個命令以分號結束  一、顯示數據庫列表。 
    show databases; 
    二、顯示庫中的數據表: 
    use mysql; //打開庫 
    show tables; 
    三、顯示數據表的結構: 
    describe 表名; 
    四、建庫是設置好字符編碼: 
    create database 庫名 character set utf-8; 
    五、建表: 
    use 庫名; 
    create table 表名(字段設定列表); 
    六、刪庫和刪表: 
    drop database 庫名; 
    drop table 表名; 
    七、將表中記錄清空: 
    delete from 表名; 
    八、顯示錶中的記錄: 
    select * from 表名; 
    九、編碼的修改 
    若是要改變整個mysql的編碼格式: 
    啓動mysql的時候,mysqld_safe命令行加入 
    --default-character-set=gbk 
    若是要改變某個庫的編碼格式:在mysql提示符後輸入命令 
    alter database db_name default character set gbk; 

    8、數據的導入導出 

    一、文本數據轉到數據庫中 
    文本數據應符合的格式:字段數據之間用tab鍵隔開,null值用來代替。例: name duty 2006-11-23 
              數據傳入命令 load data local infile "文件名" into table 表名;  二、導出數據庫和表 
    mysqldump --opt news > news.sql(將數據庫news中的全部表備份到news.sql文件,news.sql是一個文本文件,文件名任取。) 
    mysqldump --opt news author article > author.article.sql(將數據庫news中的author表和article表備份到author.article.sql文件, author.article.sql是一個文本文件,文件名任取。) 
    mysqldump --databases db1 db2 > news.sql(將數據庫dbl和db2備份到news.sql文件,news.sql是一個文本文件,文件名任取。) 
    mysqldump -h host -u user -p pass --databases dbname > file.dump 
    就是把host上的以名字user,口令pass的數據庫dbname導入到文件file.dump中 
    mysqldump --all-databases > all-databases.sql(將全部數據庫備份到all-databases.sql文件,all-databases.sql是一個文本文件,文件名任取。) 
    三、導入數據 
    mysql < all-databases.sql(導入數據庫) 
    mysql>source news.sql;(在mysql命令下執行,可導入表) 

    9、鏈接MySQL 

    1、格式: mysql -h主機地址 -u用戶名 -p用戶密碼 

    一、例1:鏈接到本機上的MYSQL。 
    首先在打開DOS窗口,而後進入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車後提示你輸密碼,若是剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車便可進入到MYSQL中了,MYSQL的提示符是: mysql>。 
    二、例2:鏈接到遠程主機上的MYSQL。假設遠程主機的IP爲:110.110.110.110,用戶名爲root,密碼爲abcd123。則鍵入如下命令: 
    mysql -h110.110.110.110 -uroot -pabcd123 
    (注:u與root能夠不用加空格,其它也同樣) 
    三、退出MYSQL命令: exit (回車)。 

    2、修改密碼 

    格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼 
    一、例1:給root加個密碼ab12。首先在DOS下進入目錄mysqlbin,而後鍵入如下命令: 
    mysqladmin -uroot -password ab12 
              注:由於開始時root沒有密碼,因此-p舊密碼一項就能夠省略了。  二、例2:再將root的密碼改成djg345。 
    mysqladmin -uroot -pab12 password djg345 

    3、增長新用戶。(注意:和上面不一樣,下面的由於是MySQL環境中的命令,因此後面都帶一個分號做爲命令結束符) 

    格式:grant select on 數據庫.* to 用戶名@登陸主機 identified by \"密碼\" 
    例一、增長一個用戶test1密碼爲abc,讓他能夠在任何主機上登陸,並對全部數據庫有查詢、插入、修改、刪除的權限。首先用 以root用戶連入MySQL,而後鍵入如下命令: 
    grant select,insert,update, 
    delete on *.* to test1@\"%\" Identified by \"abc\"; 
    但例1增長的用戶是十分危險的,你想如某我的知道test1的密碼,那麼他就能夠在internet上的任何一臺電腦上登陸你的MySQL數據庫並對你的數據能夠隨心所欲了,解決辦法見例2。 
    例二、增長一個用戶test2密碼爲abc,讓他只能夠在localhost上登陸,並能夠對數據庫mydb進行查詢、插入、修改、刪除的操做(localhost指本地主機,即MySQL數據庫所在的那臺主機),這樣用戶即便用知道test2的密碼,他也沒法從internet上直接訪問數據庫,只能經過MySQL主機上的web頁來訪問。 
    grant select,insert,update, 
    delete on mydb.* to test2@localhost identified by \"abc\"; 
    若是你不想test2有密碼,能夠再打一個命令將密碼消掉。 
    grant select,insert,update,delete on mydb 
    .* to test2@localhost identified by \"\"; 
    在上面講了登陸、增長用戶、密碼更改等問題。下面咱們來看看MySQL中有關數據庫方面的操做。注意:你必須首先登陸到MySQL中,如下操做都是在MySQL的提示符下進行的,並且每一個命令以分號結束。 

    4、操做技巧 

    一、若是你打命令時,回車後發現忘記加分號,你無須重打一遍命令,只要打個分號回車就能夠了。也就是說你能夠把一個完整的命令分紅幾行來打,完後用分號做結束標誌就完成。 
    二、你可使用光標上下鍵調出之前的命令。但之前我用過的一個MySQL舊版本不支持。我如今用的是mysql-3.23.27-beta-win。 

    5、顯示命令 

    一、顯示數據庫列表: 
    show databases; 
    剛開始時才兩個數據庫:mysql和test。MySQL庫很重要它裏面有MYSQL的系統信息,咱們改密碼和新增用戶,實際上就是用這個庫進行操做。 
    二、顯示庫中的數據表: 
    use mysql; //打開庫,學過FOXBASE的必定不會陌生吧 
    show tables; 
    三、顯示數據表的結構: 
    describe 表名; 
    四、建庫: 
    create database 庫名; 
    五、建表: 
    use 庫名; 
    create table 表名 (字段設定列表); 
    六、刪庫和刪表: 
    drop database 庫名; 
    drop table 表名; 
    七、將表中記錄清空: 
    delete from 表名; 
    八、顯示錶中的記錄: 

    select * from 表名; 

    6、一個建庫和建表以及插入數據的實例 

    drop database if exists school; //若是存在SCHOOL則刪除  create database school; //創建庫SCHOOL  use school; //打開庫SCHOOL  create table teacher //創建表TEACHER  id int(3) auto_increment not null primary key,  name char(10) not null,  address varchar(50) default ’深圳’,  year date  ); //建表結束  //如下爲插入字段  insert into teacher values(’’,’glchengang’,’深圳一中’,’1976-10-10’);  insert into teacher values(’’,’jack’,’深圳一中’,’1975-12-23’);  注:在建表中(1)將ID設爲長度爲3的數字字段:int(3)並讓它每一個記錄自動加一:auto_increment並不能爲空:not null並且讓他成爲主字段primary key(2)將NAME設爲長度爲10的字符字段(3)將ADDRESS設爲長度50的字符字段,並且缺省值爲深圳。varchar和char有什麼區別呢,只有等之後的文章再說了。(4)將YEAR設爲日期字段。  若是你在MySQL提示符鍵入上面的命令也能夠,但不方便調試。你能夠將以上命令原樣寫入一個文本文件中假設爲school.sql,而後複製到c:\\下,並在DOS狀態進入目錄\\mysql\\bin,而後鍵入如下命令:  mysql -uroot -p密碼 < c:\\school.sql  若是成功,空出一行無任何顯示;若有錯誤,會有提示。(以上命令已經調試,你只要將//的註釋去掉便可使用)。 

    7、將文本數據轉到數據庫中 

    一、文本數據應符合的格式:字段數據之間用tab鍵隔開,null值用\\n來代替。  例: 
    3 rose 深圳二中 1976-10-10 
    4 mike 深圳一中 1975-12-23 
    二、數據傳入命令 load data local infile \"文件名\" into table 表名。 
    注意:你最好將文件複製到\\mysql\\bin目錄下,而且要先用use命令打表所在的庫。 
    5、備份數據庫: 
    一、mysqldump --opt school>school.bbb 
    mysqldump --opt school>school.bbb 
    (命令在DOS的\\mysql\\bin目錄下執行) 
    註釋:將數據庫school備份到school.bbb文件,school.bbb是一個文本文件,文件名任取,打開看看你會有新發現。 
    後記:其實MySQL的對數據庫的操做與其它的SQL類數據庫大同小異,您最好找本將SQL的書看看。我在這裏只介紹一些基本的,其實我也就只懂這些了,呵呵。最好的MYSQL教程仍是「晏子「譯的「MYSQL中文參考手冊「不只免費每一個相關網站都有下載,並且它是最權威的。惋惜不是象\"PHP4中文手冊\"那樣是chm的格式,在查找函數命令的時候不太方便。 
    二、修改登陸密碼 
    1) mysqladmin -u用戶名 -p舊密碼 password 新密碼: 
    例:mysqladmin -u root password 21century 
    注:由於開始時root沒有密碼,因此-p舊密碼一項就能夠省略了。 
    2)直接修改user表的root用戶口令: 
    mysql> user mysql; 
    mysql> update user set pasword=password('21century') where user='root'; 
    mysql> flush privileges; 
    注:flush privileges的意思是強制刷新內存受權表,不然用的仍是緩衝中的口令。 
    三、測試密碼是否修改爲功: 
    1)不用密碼登陸: 
    [root@test1 local]# mysql 
    ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO) 
    顯示錯誤,說明密碼已經修改。 
    2)用修改後的密碼登陸: 
    [root@test1 local]# mysql -u root -p 
    Enter password: (輸入修改後的密碼21century) 
    Welcome to the MySQL monitor. Commands end with ; or \g. 
    Your MySQL connection id is 177 to server version: 3.23.48 
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 
    mysql> 
    成功! 

    這是經過mysqladmin命令修改口令,也可經過修改庫來更改口令。 

     

    四、啓動和中止: 
    啓動:Mysql從3.23.15版本開始做了改動,默認安裝後服務要用MySQL用戶來啓動,不容許root用戶啓動。 
    若是非要用root用戶來啓動,必須加上--user=root參數(./safe_mysqld --user=root &)中止:mysqladmin -u root -p shutdown。 
    五、導出meeting數據庫: 
    mysqldump -uroot -p21century meeting > db_meeting.sql 
    導人dbname數據庫: 
    mysqldump -uroot -p21century dbname < xxx.sql 
    導入數據庫還可用相似於oracle中@my_script.sql的方式一次執行大量sql語句,這在使用mysqldump不起做用時很是有用。 
    例:#./mysql -uroot -p < /home/xuys/db_meeting_2003.sql 
    (注:create database、use databasename、create table和insert into語句均可寫在上面的腳步文件中) 
    六、給表更名: 
    RENAME TABLE ztemp TO ztemp4; 
    七、修改字段屬性: 
    ALTER TABLE bbabase CHANGE news_id id VARCHAR(5) NOT NULL; 
    八、在表中的content後增長一字段: 
    ALTER TABLE bbabase ADD leave_time DATETIME NOT NULL AFTER

    10、日誌命令
                tail -f
  • linux查看日誌文件內容命令tail、cat、tac、head、echo

    tail -f test.log 你會看到屏幕不斷有內容被打印出來. 這時候中斷第一個進程Ctrl-C,

    --------------------------- linux 如何顯示一個文件的某幾行(中間幾行)

    從第3000行開始,顯示1000行。即顯示3000~3999行 cat filename | tail -n +3000 | head -n 1000

    顯示1000行到3000行 cat filename| head -n 3000 | tail -n +1000

    *注意兩種方法的順序 分解: tail -n 1000:顯示最後1000行 tail -n +1000:從1000行開始顯示,顯示1000行之後的 head -n 1000:顯示前面1000行

    用sed命令 sed -n '5,10p' filename 這樣你就能夠只查看文件的第5行到第10行。

    例:cat mylog.log | tail -n 1000 #輸出mylog.log 文件最後一千行

    --------------------------- cat主要有三大功能: 1.一次顯示整個文件。$ cat filename 2.從鍵盤建立一個文件。$ cat > filename  只能建立新文件,不能編輯已有文件. 3.將幾個文件合併爲一個文件: $cat file1 file2 > file 參數: -n 或 --number 由 1 開始對全部輸出的行數編號 -b 或 --number-nonblank 和 -n 類似,只不過對於空白行不編號 -s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換爲一行的空白行 -v 或 --show-nonprinting 例: 把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案裏 cat -n textfile1 > textfile2

    把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)以後將內容附加到 textfile3 裏。 cat -b textfile1 textfile2 >> textfile3
    把test.txt文件扔進垃圾箱,賦空值test.txt cat /dev/null > /etc/test.txt  注意:>意思是建立,>>是追加。千萬不要弄混了。 ------------------------------------------ tac (反向列示) tac 是將 cat 反寫過來,因此他的功能就跟 cat 相反, cat 是由第一行到最後一行連續顯示在螢幕上, 而 tac 則是由最後一行到第一行反向在螢幕上顯示出來!

    ------------------------------------------ 在Linux中echo命令用來在標準輸出上顯示一段字符,好比: echo "the echo command test!"

    這個就會輸出「the echo command test!」這一行文字!

    echo "the echo command test!">a.sh 這個就會在a.sh文件中輸出「the echo command test!」這一行文字! 該命令的通常格式爲: echo [ -n ] 字符串其中選項n表示輸出文字後不換行;字符串能加引號,也能不加引號。 用echo命令輸出加引號的字符串時,將字符串原樣輸出; 用echo命令輸出不加引號的字符串時,將字符串中的各個單詞做爲字符串輸出,各字符串之間用一個空格分割。


    11 、數據庫備份
            tar   fdisk
  • 一、利用Mysqldump+二進制日誌實現備份 二、利用LVM快照+二進制日誌實現備份 三、使用Xtrabackup備份

    一:實驗環境介紹:

    系統介紹:CentOS6.4_X64 數據庫版本:mysql-5.5.33

    二:基於Mysqldump命令實現備份恢復

    2.一、思路概念

    Mysqldump是一個邏輯備份命令;意思就是將數據庫中的數據備份成一個文本文件;也能夠說是將表的結構和數據存儲在文本文件中。

    Mysqldump命令的工做原理很簡單,它先查出須要備份的表的結構,再在文本文件中生成一個CREATE語句。而後,將表中的全部記錄轉換爲一條INSTERT語句。這些CREATE語句和INSTERT語句都是還原時使用的。還原數據時就可使用其中的CREATE語句來建立表。使用其中的INSERT語句來還原數據。它能夠實現整個服務器備份,也能夠實現單個或部分數據庫、單個或部分表、表中的某些行、存儲過程、存儲函數、觸發器的備份;而且能自動記錄備份時刻的二進制日誌文件及相應的位置。對於InnoDB存儲引擎來說支持基於單事務模式實現熱備,對於MyISAM則最多支持溫備。

    2.二、備份策略

    Mysqldump全備+二進制日誌增備

    2.三、過程實現

    (1)Mysqldump全備 因爲Mysql數據庫默認的爲MyISAM存儲引擎因此只有使用溫備(備份同時僅支持讀請求)進行,因此咱們要爲全部數據庫添加讀鎖

    ?
    1
    2
    [root@stu18 ~]
    #mysqldump -uroot -pmypass --lock-all-tables --master-data=2 --events --routines--all-databases > /zhao/database_`date +%F`.sql

    解析:–lock-all-tables表示爲全部表施加讀鎖;–master-data=2表示在備份文件中記錄當前二進制日誌的位置;–events表示備份數據的同時備份時間調度器代碼;–routines表示備份數據的同時備份存儲過程和存儲函數;–all-databases表示備份全部庫。

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@stu18 zhao]
    # less database_2013-08-13.sql
    --  
    #表示註釋項
    -- Position to start replication or point- in - time recovery from
    --
    -- CHANGE MASTER TO MASTER_LOG_FILE= 'mysql-bin.000001' , MASTER_LOG_POS=14203;
    #這裏表示當前處於mysql-bin.000001這個二進制日誌中,事件爲14203這是經過--master-data=2產生的
    --
    -- Current Database: `hellodb`
    --
    CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */;

    (2)二進制全備

    方法一: 導出二進制日誌文件內容

    ?
    1
    2
    [root@stu18 data]
    # mysqlbinlog mysql-bin.000001 >/zhao/binlog_`date +%F`.sql

    方法二:滾動日誌複製文件

    ?
    1
    2
    3
    4
    mysql> flush logs;
    #滾動日誌
    [root@stu18 data]
    # cp mysql-bin.000001 /zhao/mysql-bin.000001 #複製導出二進制文件

    (3)二進制增備 首先添加數據信息

    ?
    1
    2
    mysql> use hellodb;
    mysql> INSERT INTO students(Name,Age,Gender,ClassID,TeacherID) values ( 'Yang kang' ,22, 'M' ,3,3);

    而後二進制增備

    ?
    1
    2
    [root@stu18 data]
    # mysqlbinlog --start-position=14203 --stop-position=14527 mysql-bin.000001 > /zhao/binlog_`date +%F_%H`.sql

    解析:–start-position=14203是上次全備以後的二進制事件位置;–stop-position=14527最近一天的二進制事件位置。

    2.四、模擬數據庫損壞,實現恢復工做

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    mysql> DROP DATABASE hellodb;   
    #刪除數據庫
    ############下面這些過程要在離線狀態下執行############
    mysql> SET sql_log_bin=0;    
    #先關閉二進制日誌
    mysql> flush logs;     
    #滾動日誌
    [root@stu18 ~]
    # mysql -uroot -pmypass < /zhao/database_2013-08-13.sql #導入數據庫備份文件
    [root@stu18 ~]
    # mysql -uroot -pmypass < /zhao/binlog_2013-08-13_19.sql #導入增量備份文件
    [root@stu18 ~]
    # mysql -uroot –pmypass #登陸查看,恢復完成
    mysql> SET sql_log_bin=1;

    這種備份方式恢復簡單,可是恢復還原以後索引會出現錯誤須要重建,並且備份結果會佔據很大的空間,請酌情使用。

    PS:mysqldump經常使用命令小結 備份MySQL數據庫的命令

    ?
    1
    mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

    備份MySQL數據庫爲帶刪除表的格式

    備份MySQL數據庫爲帶刪除表的格式,可以讓該備份覆蓋已有數據庫而不須要手動刪除原有數據庫。

    ?
    1
    mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

    直接將MySQL數據庫壓縮備份

    ?
    1
    mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

    備份MySQL數據庫某個(些)表

    ?
    1
    mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

    同時備份多個MySQL數據庫

    ?
    1
    mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

    僅僅備份數據庫結構

    ?
    1
    mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

    備份服務器上全部數據庫

    ?
    1
    mysqldump –all-databases > allbackupfile.sql

    還原MySQL數據庫的命令

    ?
    1
    mysql -hhostname -uusername -ppassword databasename < backupfile.sql

    還原壓縮的MySQL數據庫

    ?
    1
    gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

    將數據庫轉移到新服務器

    ?
    1
    mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

    3、基於LVM快照實現備份恢復

    3.一、思路明細

    (1)LVM這種備份方式要求Mysql的數據保存在邏輯捲上 (2)須要給Mysql服務器施加讀鎖(mysql>FLUSH TABLES WITH READLOCK;),這裏不可直接退出服務器 (3)另起終端爲數據所在的卷建立快照(lvcreate),保證事務日誌和數據文件必須在同一捲上(分別建立可能會致使數據文件和事務日誌不一致,從而可能致使沒法正常恢復)

    3.二、備份策略

    LVM快照全備+二進制日誌增備(對於即時點恢復還要恢復至後續的二進制位置)

    3.三、前提條件

    (1)建立邏輯卷及掛載邏輯卷,此過程在此就不作演示了

    (2)初始化mysql將其數據目錄指向/mydata/data

    ?
    1
    2
    3
    4
    [root@stu18 ~]
    # cd /usr/local/mysql/
    [root@stu18 mysql]
    # scripts/mysql_install_db --user=mysql --datadir=/mydata/data

    (3)編輯查看配置文件,重啓服務

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    [root@stu18 mysql]
    # vim /etc/my.cnf
    datadir = /mydata/data
    #查看此項是否認義數據目錄位置
    sync_binlog=1
    #添加此項,每一個事務提交時候,把事務日誌從緩存區寫到日誌文件中,而且刷新日誌文件的數據到磁盤上;
    [root@stu18 mysql]
    # service mysqld start

    3.四、過程展現

    (1)確保事務日誌和數據文件必須在同一捲上

    ?
    1
    2
    3
    4
    5
    6
    [root@stu18 ~]
    # ls /mydata/data/
    hellodb  myclass   mysql-bin.000003 stu18.magedu.com.err
    ibdata1  mysql    mysql-bin.000004 stu18.magedu.com.pid
    ib_logfile0 mysql-bin.000001 mysql-bin.index  student
    ib_logfile1 mysql-bin.000002 performance_schema test

    解析:其中ib_logfile0與ib_logfile1是日誌文件 (2)施加全局鎖並滾動日誌

    ?
    1
    2
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> FLUSH LOGS;

    (3)查看並保存當前正在使用的二進制日誌及當前執行二進制日誌位置(很是重要)

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    mysql> SHOW MASTER STATUS;
    + ------------------+----------+--------------+------------------+
    | File    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    + ------------------+----------+--------------+------------------+
    | mysql-bin.000004 |  187 |    |     |
    + ------------------+----------+--------------+------------------+
    [root@stu18 zhao]
    # mysql -uroot -pmypass -e 'SHOW MASTER STATUS;' >/zhao/lvmback-2013-08-14/binlog.txt

    (4)建立快照卷

    ?
    1
    2
    [root@stu18 zhao]
    # lvcreate -L 100M -s -p r -n mydata-lvm /dev/vg1/mydata

    (5)當即切換終端釋放鎖

    ?
    1
    mysql> UNLOCK TABLES;

    (6)備份數據

    ?
    1
    2
    [root@stu18 data]
    # cp -a * /zhao/lvmback-2013-08-14/

    (7)二進制實現增量備份

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mysql> use hellodb;  
    #指定默認數據庫
    Database changed
    mysql> CREATE TABLE testtb (id int , name CHAR (10)); 
    #建立表
    Query OK, 0 rows affected (0.35 sec)
    mysql> INSERT INTO testtb VALUES (1, 'tom' );  
    #添加數據
    Query OK, 1 row affected (0.09 sec)
    [root@stu18 data]
    # mysqlbinlog --start-position=187 mysql-bin.000004 > /zhao/lvmlogbin_2013-08-14/binlog.sql   #日誌實現增量備份

    (8)模擬數據庫崩潰

    ?
    1
    2
    3
    4
    5
    6
    [root@stu18 ~]
    # service mysqld stop
    [root@stu18 ~]
    # cd /mydata/data/
    [root@stu18 data]
    # rm -rf *

    (9)恢復數據

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@stu18 ~]
    # cp /zhao/lvmback-2013-08-14/* /mydata/data/ -a   #徹底備份恢復
    [root@stu18 ~]
    # cd /mydata/data/    #查看恢復數據內容
    [root@stu18 data]
    # chown -R mysql.mysql * #更改屬主屬組
    [root@stu18 data]
    # service mysqld start  #啓動服務
    [root@stu18 data]
    # mysql -uroot –pmypass #登陸測試
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    mysql> SHOW DATABASES; 
    #查看數據完整性,無測試表testtd使用二進制恢復
    mysql> SET sql_log_bin=0
    #關閉二進制日誌
    mysql> source /zhao/lvmlogbin_2013-08-14/binlog.sql;
    #二進制恢復
    mysql> SHOW TABLES;  
    #查看恢復結果
    + -------------------+
    | Tables_in_hellodb |
    + -------------------+
    | classes   |
    | coc    |
    | courses   |
    | scores   |
    | students   |
    | teachers   |
    | testtb   |
    | toc    |
    + -------------------+
    mysql> SET sql_log_bin=1;
    #開啓二進制日誌

    此工具是接近於熱備的方式實現的,而且用此方法來備份恢復數據速度是很是快的。


    12 、遠程  scp  遠程安裝

    將遠程服務器上的文件複製到本機

    #scp remote@www.abc.com:/usr/local/sin.sh /home/administrator

    remote                       經過remote用戶登陸到遠程服務器(也可使用其餘擁有同等權限的用戶) www.abc.com              遠程服務器的域名(固然也可使用該服務器ip地址) /usr/local/sin.sh           欲複製到本機的位於遠程服務器上的文件 /home/administrator  將遠程文件複製到本地的絕對路徑

    注意兩點: 1.若是遠程服務器防火牆有特殊限制,scp便要走特殊端口,具體用什麼端口視狀況而定,命令格式以下: #scp -p 4588 remote@www.abc.com:/usr/local/sin.sh

    將本機文件複製到遠程服務器上

    #scp /home/administrator/news.txt root@192.168.6.129:/etc/squid

    /home/administrator/      本地文件的絕對路徑 news.txt                          要複製到服務器上的本地文件 root                                 經過root用戶登陸到遠程服務器(也可使用其餘擁有同等權限的用戶) 192.168.6.129                遠程服務器的ip地址(也可使用域名或機器名) /etc/squid                       將本地文件複製到位於遠程服務器上的路徑

相關文章
相關標籤/搜索