使用Linux部署java、tomcat和遷移數據庫

Linux

## 什麼是Linux

1. Linux 是一款類Unix的操作系統。
2. Linux 使用非常廣泛,從 Android 到 雲計算無所不在。

## Linux 命令

1. 適合遠程管理服務器
2. 資源佔用低

## Linux命令語法

    命令  -選項  參數1 參數2 參數3  

### 列文件夾的內容

    ls -al /
    
    -a 顯示全部內容
    -l 顯示長格式

    / 參數,目標文件夾

### 如何查詢命令的幫助

    man 命令, 使用q按鍵退出手冊
    命令 --help

### Linux 的文件系統

    /   根目錄
    |- etc  <-
    |- usr    
    |- home
    |   |- soft01   用戶的主目錄
    |- root   root用戶的主目錄
    |- var
    ...    
當前工作目錄

    pwd  顯示當前的工作目錄
    cd 目標文件夾  改變當前工作目錄

### 文件操作管理命令

1. 創建文件夾

    cd    返回用戶的主目錄
    mkdir 文件夾名  在當前文件夾中創建文件夾
    mkdir 絕對路徑名 在指定位置創建文件夾

    cd
    mkdir demo
    mkdir /home/soft01/abc

2.  創建文件 

    touch 文件名

3. 修改時間

    touch 已經存在文件名/文件夾
    ls -l

4. 複製文件/文件夾命令

    cp 源文件/文件夾 目標文件/文件夾
    
    源文件/文件夾必須存在! 不存在就會報錯誤.
    目標文件/文件夾不存在就是創建新的文件/文件夾
    如果目標文件/文件夾是存在, 文件則覆蓋,文件夾
    就是複製到文件夾中.

    cp /etc/passwd  passwd.bak   改名複製
    cp /etc/passwd  test  不改名複製
    cp /etc/passwd  test/pwd  改名複製
    cp /etc/passwd  .   複製到當前目錄
    
    複製文件夾必須使用 -r 進行遞歸複製
    cp -r test abc  abc不存在,將test複製爲abc
    mkdir demo
    cp -r test demo 將文件夾複製到demo文件夾中

### 改名或者移動

    mv 源 目標

    源:必須存在
    目標:如果不存在,就是改名 目標如果存在就是移動

### 刪除命令

    rm -rf 文件 文件夾 文件夾....
    
    rm -rf passwd.bak passws t

## sftp

- ftp 佔用21端口, 文件傳輸協議, 用於在客戶端和服務器之間傳輸文件, 採用明碼傳輸文件數據, 不安全.
- sftp 是 SSH 協議提供的功能, 與SSH佔用一樣的22端口, 也可以在客戶端和服務器之間傳輸文件, 採用加密傳輸, 安全可靠.

sftp 命令

    lls 查看本地目錄內容
    lcd 切換本地文件夾
    lpwd 查看本地文件夾位置
    ls  查看遠程目錄內容
    cd  切換遠程目錄
    pwd 查看遠程文件夾位置
    put 上載文件到遠程文件夾
    get 下載文件到本地文件夾

## 打包命令

打包:
    
    tar -czvf 文件.tar.gz 文件 文件夾 ...

    -c 創建包
    -z 將包進行gzip壓縮, 建議文件名 .tar.gz
    -v 查看打包過程
    -f 指定打包以後的文件名: .tar 結尾 

釋放:

    tar -xzvf 文件.tar.gz
    
    -x 釋放, x和c不能共存
    -z 在.gz爲結尾時候使用


## vi 可視化編輯器

- 基於終端窗口的可視化編輯器
    - 不能鼠標
- vi 的作者是Java創始人之一
- 開源的vim克隆了vi

## 利用wget下載

語法:

    wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz

## 配置Java環境變量

    export JAVA_HOME=/usr/local/java/jdk1.8.0_144
    export PATH=/usr/local/java/jdk1.8.0_144/bin:$PATH
    export CLASSPATH=.

    cd
    javac -version
    javac HelloWorld.java
    java HelloWorld

### PATH

操作系統可執行命令的搜索路徑, 操作系統在執行命令時候, 會將用命令名依次搜索PATH變量中的系列路徑, 如果搜索到相同名字的程序(命令)就執行這個命令, 否則沒有搜索到則報錯誤: 命名沒有找到!!    

## profile

Linux 操作系統初始化腳本 profile 

初始化順序:

查看profile 
    
    ls /etc|grep profile
    cat /etc/profile   //查看文本文件內容
    more /etc/profile  //分頁查看文本文件內容

修改

    $su   //切換用戶身份, 如果不加參數則切換到管理員 需要輸入密碼
    #cd /etc
    #cp profile profile.2018.4.28
    #vim profile

修改內容:

    export PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

    export JAVA_HOME=/usr/local/java/jdk1.8.0_144
    export PATH=/usr/local/java/jdk1.8.0_144/bin:$PATH
    export CLASSPATH=.

測試:

    cat profile
    source profile
    javac -version
    which javac
    which java
    which tar
    echo $PATH 

重新啓動服務器

    reboot

## 安裝Tomcat

### yum安裝

1. 安裝

        yum -y install tomcat

2. 啓動
        
        systemctl start tomcat.service

3. 關閉 

        systemctl stop tomcat.service

4. 重新啓動

        systemctl restart tomcat.service

5. 設置開機自動啓動

        systemctl enable tomcat.service

6. 下載Tomcat將ROOT複製到 /usr/share/tomcat/webapps

    > 下載地址從 Tomcat 網站獲得
    
        wget http://tomcat.apache.org....apache-tomcat-7.0.67.zip
        yum -y install unzip
        unzip apache-tomcat-7.0.67.zip
        cd apache-tomcat-7.0.67/webapps
        cp -r ROOT /usr/share/tomcat/webapps
        

## 下載安裝Tomcat

1. 下載Tomcat將ROOT複製到 /usr/share/tomcat/webapps

    > 下載地址從 Tomcat 網站獲得
    
        wget http://doc.tedu.cn/tomcat/apache-tomcat-7.0.67.zip
        unzip apache-tomcat-7.0.67.zip
        mv apache-tomcat-7.0.67 /usr/local

2. 啓動tomcat
    
        cd /usr/local/apache-tomcat-7.0.67/bin
        chmod +x *.sh   //爲所有.sh文件增加執行權限
        ./startup.sh    //啓動tomcat

3. 檢查tomcat
        
        ps -A|grep java

4. 關閉tomcat

        ./shutdown.sh

5. 配置環境變量(可選):

        export CATALINA_HOME=/usr/local/apache-tomcat-7.0.67
        export PATH=$CATALINA_HOME/bin:$PATH

6. 開放防火牆端口

        firewall-cmd --permanent --add-port=8080/tcp
        firewall-cmd --reload

7. 客戶端測試:

        http://192.168.17.70:8080
 

## 遠程登錄
    

## 開啓阿里雲的端口

1. 進入服務器安全管理界面

        管理控制檯 -> 雲服務器 ECS -> 實例 -> 管理 -> 本實例安全組 -> 配置規則

 

2. 添加規則

## 安裝MySQL

MySQL 分支爲兩個軟件:

1. Oralce MySQL
2. MariaDB 

簡單理解 MariaDB 就是MySQL

### yum 安裝

1. 安裝 

        yum -y install mariadb-server mariadb

2. 啓動
    
        systemctl start mariadb.service

3. 檢查
    
        ps -A|grep mysql

4. 關閉與重啓

        systemctl stop mariadb.service
        systemctl restart mariadb.service

## MySQL 編碼設置

1. 檢查
    
        show variables like 'char%';
        
        +--------------------------+----------------------------+
        | Variable_name            | Value                      |
        +--------------------------+----------------------------+
        | character_set_client     | utf8                       |
        | character_set_connection | utf8                       |
        | character_set_database   | latin1                     |
        | character_set_filesystem | binary                     |
        | character_set_results    | utf8                       |
        | character_set_server     | latin1                     |
        | character_set_system     | utf8                       |
        | character_sets_dir       | /usr/share/mysql/charsets/ |
        +--------------------------+----------------------------+

2. 修改配置文件, 設置數據庫的默認編碼

    vim /etc/my.cnf

    文件中添加:

    [mysqld]
    character-ser-server=utf8

    [mysql]
    default-character-set=utf8

3. 重啓MySQL(mariadb)


        systemctl restart mariadb.service

4. 檢查

        show variables like 'char%';
        
        +--------------------------+----------------------------+
        | Variable_name            | Value                      |
        +--------------------------+----------------------------+
        | character_set_client     | utf8                       |
        | character_set_connection | utf8                       |
        | character_set_database   | utf8                      |
        | character_set_filesystem | binary                     |
        | character_set_results    | utf8                       |
        | character_set_server     | utf8                      |
        | character_set_system     | utf8                       |
        | character_sets_dir       | /usr/share/mysql/charsets/ |
        +--------------------------+----------------------------+

## 部署Web項目到服務器

原理:

            
### 1. 遷移數據庫

1. 源服務器上導出現有數據庫到SQL

        mysqldump -uroot -p tedu_store > tedu_store.sql

    > `>` 符號是"輸出重定向", 其目的是將第一個mysqldump命令的結果送到一個文件tedu_store.sql 中.

2. sftp 將tedu_store.sql 傳輸到目標數據庫服務器

    > windows版本的putty軟件帶來了 psftp, 可向服務器傳輸數據 

3. 在目標服務器的MySQL控制檯執行

        create database tedu_store;
        use tedu_store    
        source tedu_store.sql 

### 2. 部署Java Web 應用到目標Tomcat服務器

1. 利用開發工具將項目導出war文件
    - 導出前將數據庫的配置信息改寫目標的數據庫配置信息
2. 利用sftp將war文件傳輸到目標服務器
3. 在目標服務器上利用cp命令將war文件部署到Tomcat中

        cp TeduStore.war /usr/local/apach-tomcat-7.0.67/webapps

4. 重寫啓動Tomcat服務器
5. 如果有錯誤請查看日誌文件

        cat /usr/local/apach-tomcat-7.0.67/logs/catalina.out

6. 測試

        http://生產環境ip:8080/TeduStore/user/showLogin.jsp

### 檢查技巧

1. 檢查MySQL, 確認數據庫已經成功遷移, 要檢查:數據庫\表\數據.
2. 檢查Tomcat, 確認db.properties是否正確配置了數據庫參數
3. 檢查Tomcat是否成功啓動.
    - ps -A|grep java
4. 檢查Tomcat日誌:
    - /usr/local/apache-tomcat-7.0.67/logs
5. 在防火牆上開啓 8080 端口

### 遠程訪問MySQL

連接原理爲:

數據庫服務器端

1. 創建一個用戶專門用於遠程訪問 

        //創建用戶並且授權的命令
        GRANT ALL ON 數據庫名.* TO 用戶名@客戶端的ip/域名 
        IDENTIFIED BY "密碼";

        例如:
        GRANT ALL ON tedu_store.* TO [email protected] 
        IDENTIFIED BY "tedu123";
    
    > 客戶端的ip是 192.168.17.12, 用戶名是tedu 密碼是tedu123

2. 服務器防火牆開放 3306 端口(如果需要的話)

        firewall-cmd --permanent --add-port=3306/tcp 
        firewall-cmd --reload

客戶端

1. 利用mysql 客戶端連接到服務器端檢查是否能夠連接

        mysql -h192.168.17.70 -utedu -ptedu123

    > MySQL 服務器的IP是192.168.17.70

2. 更新 Tomcat中的應用程序參數db.properties 連接到遠程的數據庫:

        url=jdbc:mysql://47.105.48.39:3306/tedu_store?useUnicode=true&characterEncoding=utf8
        driver=com.mysql.jdbc.Driver
        user=tedu
        password=tedu123

3. 測試...

## 文件權限 

Linux 限定用戶可以讀寫那些文件.

查看文件的權限:

    ls -l   以長格式顯示文件列表, 包含權限信息
    ll      CentOS Linux提供的簡寫命令

文件權限:

利用chmod設置文件的權限:

### 文件的執行權限

Linux中的可執行文件(命令), 必須滿足兩個條件纔行:

1. 這個文件本身是可以執行的文件
    - 一種是2進制的程序文件
    - shell腳本文件(.sh), 是一種文本文件, 每行都是可以執行命令
2. 這個文件必須有執行權限

滿足如上兩個條件才能執行.

### shell 腳本

shell腳本文件(.sh), 是一種文本文件, 每行都是可以執行命令

shell用於批量執行操作系統命令, 可以實現運維自動化

案例: 自動備份MySQL數據庫, 並且傳輸到遠程的服務器

## 輸出重定向


## Nginx

tar grep find ssh sed awk vim diff sort export
args ls pwd cd gzip bzip2 unzip shutdown ftp crontab
service ps free top df kill rm cp mv cat
mount chmod chown passwd mkdir ifconfig uname whereis whatis locate
man tail less su mysql yum rpm ping date wget

1. tar

創建一個新的tar文件

$ tar cvf archive_name.tar dirname/

解壓tar文件

$ tar xvf archive_name.tar

查看tar文件

$ tar tvf archive_name.tar

2. grep

在文件中查找字符串(不區分大小寫)

$ grep -i "the" demo_file

輸出成功匹配的行,以及該行之後的三行

$ grep -A 3 -i "example" demo_text

在一個文件夾中遞歸查詢包含指定字符串的文件

$ grep -r "ramesh" *

3. find

查找指定文件名的文件(不區分大小寫)

$ find -iname "MyProgram.c"

對找到的文件執行某個命令

$ find -iname "MyProgram.c" -exec md5sum {} \;

查找home目錄下的所有空文件

$ find ~ -empty

4. ssh

登錄到遠程主機

$ ssh -l jsmith remotehost.example.com

調試ssh客戶端

$ ssh -v -l jsmith remotehost.example.com

顯示ssh客戶端版本

$ ssh -V

5. sed

當你將Dos系統中的文件複製到Unix/Linux後,這個文件每行都會以\r\n結尾,sed可以輕易將其轉換爲Unix格式的文件,使用\n結尾的文件

$ sed 's/.$//' filename

反轉文件內容並輸出

$ sed -n '1!G; h; p' filename

爲非空行添加行號

$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

6. awk

刪除重複行

$ awk '!($0 in array) { array[$0]; print}' temp

打印/etc/passwd中所有包含同樣的uid和gid的行

$ awk -F ':' '$3=$4' /etc/passwd

打印文件中的指定部分的字段

$ awk '{print $2,$5;}' employee.txt

7. vim

打開文件並跳到第10行

$ vim +10 filename.txt

打開文件跳到第一個匹配的行

$ vim +/search-term filename.txt

以只讀模式打開文件

$ vim -R /etc/passwd

8. diff

比較的時候忽略空白符

$ diff -w name_list.txt name_list_new.txt

9. sort

以升序對文件內容排序

$ sort names.txt

以降序對文件內容排序

$ sort -r names.txt

以第三個字段對/etc/passwd的內容排序

$ sort -t: -k 3n /etc/passwd | more

10. export

輸出跟字符串oracle匹配的環境變量

$ export | grep ORCALE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"

設置全局環境變量

$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0

11. xargs

將所有圖片文件拷貝到外部驅動器

$ ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

將系統中所有jpd文件壓縮打包

$ find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

下載文件中列出的所有url對應的頁面

$ cat url-list.txt | xargs wget –c

12. ls

以易讀的方式顯示文件大小(顯示爲MB,GB...)

$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz

以最後修改時間升序列出文件

$ ls -ltr

在文件名後面顯示文件類型

$ ls -F

13. pwd

輸出當前工作目錄

14. cd

cd -可以在最近工作的兩個目錄間切換

使用shopt -s cdspell可以設置自動對cd命令進行拼寫檢查

15. gzip

創建一個*.gz的壓縮文件

$ gzip test.txt

解壓*.gz文件

$ gzip -d test.txt.gz

顯示壓縮的比率

$ gzip -l *.gz
     compressed        uncompressed  ratio uncompressed_name
          23709               97975  75.8% asp-patch-rpms.txt

16. bzip2

創建*.bz2壓縮文件

$ bzip2 test.txt

解壓*.bz2文件

bzip2 -d test.txt.bz2

17. uzip

解壓*.zip文件

$ unzip test.zip

查看*.zip文件的內容

$ unzip -l jasper.zip
Archive:  jasper.zip
Length     Date   Time    Name
--------    ----   ----    ----
40995  11-30-98 23:50   META-INF/MANIFEST.MF
32169  08-25-98 21:07   classes_
15964  08-25-98 21:07   classes_names
10542  08-25-98 21:07   classes_ncomp

18. shutdown

關閉系統並立即關機

$ shutdown -h now

10分鐘後關機

$ shutdown -h +10

重啓

$ shutdown -r now

重啓期間強制進行系統檢查

$ shutdown -Fr now

19. ftp

ftp命令和sftp命令的用法基本相似連接ftp服務器並下載多個文件

$ ftp IP/hostname
ftp> mget *.html

顯示遠程主機上文件列表

ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html

20. crontab

查看某個用戶的crontab入口

$ crontab -u john -l

設置一個每十分鐘執行一次的計劃任務

*/10 * * * * /home/ramesh/check-disk-space

21. service

service命令用於運行System V init腳本,這些腳本一般位於/etc/init.d文件下,這個命令可以直接運行這個文件夾裏面的腳本,而不用加上路徑

查看服務狀態

$ service ssh status

查看所有服務狀態

$ service --status-all

重啓服務

$ service ssh restart

22. ps

ps命令用於顯示正在運行中的進程的信息,ps命令有很多選項,這裏只列出了幾個

查看當前正在運行的所有進程

$ ps -ef | more

以樹狀結構顯示當前正在運行的進程,H選項表示顯示進程的層次結構

$ ps -efH | more

23. free

這個命令用於顯示系統當前內存的使用情況,包括已用內存、可用內存和交換內存的情況

默認情況下free會以字節爲單位輸出內存的使用量

$ free
             total       used       free     shared    buffers     cached
Mem:       3566408    1580220    1986188          0     203988     902960
-/+ buffers/cache:     473272    3093136
Swap:      4000176          0    4000176

如果你想以其他單位輸出內存的使用量,需要加一個選項,-g爲GB,-m爲MB,-k爲KB,-b爲字節

$ free -g
             total       used       free     shared    buffers     cached
Mem:             3          1          1          0          0          0
-/+ buffers/cache:          0          2
Swap:            3          0          3

如果你想查看所有內存的彙總,請使用-t選項,使用這個選項會在輸出中加一個彙總行

ramesh@ramesh-laptop:~$ free -t
             total       used       free     shared    buffers     cached
Mem:       3566408    1592148    1974260          0     204260     912556
-/+ buffers/cache:     475332    3091076
Swap:      4000176          0    4000176
Total:     7566584    1592148    5974436

24. top

top命令會顯示當前系統中佔用資源最多的一些進程(默認以CPU佔用率排序)如果你想改變排序方式,可以在結果列表中點擊O(大寫字母O)會顯示所有可用於排序的列,這個時候你就可以選擇你想排序的列

Current Sort Field:  P  for window 1:Def
Select sort field via field letter, type any other key to return

  a: PID        = Process Id              v: nDRT       = Dirty Pages count
  d: UID        = User Id                 y: WCHAN      = Sleeping in Function
  e: USER       = User Name               z: Flags      = Task Flags
  ........

如果只想顯示某個特定用戶的進程,可以使用-u選項

$ top -u oracle

25. df

顯示文件系統的磁盤使用情況,默認情況下df -k 將以字節爲單位輸出磁盤的使用量

$ df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             29530400   3233104  24797232  12% /
/dev/sda2            120367992  50171596  64082060  44% /home

使用-h選項可以以更符合閱讀習慣的方式顯示磁盤使用量

$ df -h
Filesystem                  Size   Used  Avail Capacity  iused      ifree %iused  Mounted on
/dev/disk0s2               232Gi   84Gi  148Gi    37% 21998562   38864868   36%   /
devfs                      187Ki  187Ki    0Bi   100%      648          0  100%   /dev
map -hosts                   0Bi    0Bi    0Bi   100%        0          0  100%   /net
map auto_home                0Bi    0Bi    0Bi   100%        0          0  100%   /home
/dev/disk0s4               466Gi   45Gi  421Gi    10%   112774  440997174    0%   /Volumes/BOOTCAMP
//[email protected]/public  2.7Ti  1.3Ti  1.4Ti    48%        0 18446744073709551615    0%   /Volumes/public

使用-T選項顯示文件系統類型

$ df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1     ext4    29530400   3233120  24797216  12% /
/dev/sda2     ext4   120367992  50171596  64082060  44% /home

26. kill

kill用於終止一個進程。一般我們會先用ps -ef查找某個進程得到它的進程號,然後再使用kill -9 進程號終止該進程。你還可以使用killall、pkill、xkill來終止進程

$ ps -ef | grep vim
ramesh    7243  7222  9 22:43 pts/2    00:00:00 vim

$ kill -9 7243

27. rm

刪除文件前先確認

$ rm -i filename.txt

在文件名中使用shell的元字符會非常有用。刪除文件前先打印文件名並進行確認

$ rm -i file*

遞歸刪除文件夾下所有文件,並刪除該文件夾

$ rm -r example

28. cp

拷貝文件1到文件2,並保持文件的權限、屬主和時間戳

$ cp -p file1 file2

拷貝file1到file2,如果file2存在會提示是否覆蓋

$ cp -i file1 file2

29. mv

將文件名file1重命名爲file2,如果file2存在則提示是否覆蓋

$ mv -i file1 file2

注意如果使用-f選項則不會進行提示

-v會輸出重命名的過程,當文件名中包含通配符時,這個選項會非常方便

$ mv -v file1 file2

30. cat

你可以一次查看多個文件的內容,下面的命令會先打印file1的內容,然後打印file2的內容

$ cat file1 file2

-n命令可以在每行的前面加上行號

$ cat -n /etc/logrotate.conf
    1	/var/log/btmp {
    2	    missingok
    3	    monthly
    4	    create 0660 root utmp
    5	    rotate 1
    6	}

31. mount

如果要掛載一個文件系統,需要先創建一個目錄,然後將這個文件系統掛載到這個目錄上

# mkdir /u01

# mount /dev/sdb1 /u01

也可以把它添加到fstab中進行自動掛載,這樣任何時候系統重啓的時候,文件系統都會被加載

/dev/sdb1 /u01 ext2 defaults 0 2

32. chmod

chmod用於改變文件和目錄的權限

給指定文件的屬主和屬組所有權限(包括讀、寫、執行)

$ chmod ug+rwx file.txt

刪除指定文件的屬組的所有權限

$ chmod g-rwx file.txt

修改目錄的權限,以及遞歸修改目錄下面所有文件和子目錄的權限

$ chmod -R ug+rwx file.txt

33. chown

chown用於改變文件屬主和屬組

同時將某個文件的屬主改爲oracle,屬組改爲db

$ chown oracle:dba dbora.sh

使用-R選項對目錄和目錄下的文件進行遞歸修改

$ chown -R oracle:dba /home/oracle

34. passwd

passwd用於在命令行修改密碼,使用這個命令會要求你先輸入舊密碼,然後輸入新密碼

$ passwd

超級用戶可以用這個命令修改其他用戶的密碼,這個時候不需要輸入用戶的密碼

# passwd USERNAME

passwd還可以刪除某個用戶的密碼,這個命令只有root用戶才能操作,刪除密碼後,這個用戶不需要輸入密碼就可以登錄到系統

# passwd -d USERNAME

35. mkdir

在home目錄下創建一個名爲temp的目錄

$ mkdir ~/temp

使用-p選項可以創建一個路徑上所有不存在的目錄

$ mkdir -p dir1/dir2/dir3/dir4/

36. ifconfig

ifconfig用於查看和配置Linux系統的網絡接口

查看所有網絡接口及其狀態

$ ifconfig -a

使用up和down命令啓動或停止某個接口

$ ifconfig eth0 up

$ ifconfig eth0 down

37. uname

uname可以顯示一些重要的系統信息,例如內核名稱、主機名、內核版本號、處理器類型之類的信息

$ uname -a
Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux

38. whereis

當你不知道某個命令的位置時可以使用whereis命令,下面使用whereis查找ls的位置

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

當你想查找某個可執行程序的位置,但這個程序又不在whereis的默認目錄下,你可以使用-B選項,並指定目錄作爲這個選項的參數。下面的命令在/tmp目錄下查找lsmk命令

$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk

39. whatis

wathis顯示某個命令的描述信息

$ whatis ls
ls		(1)  - list directory contents

$ whatis ifconfig
ifconfig (8)         - configure a network interface

40. locate

locate命名可以顯示某個指定文件(或一組文件)的路徑,它會使用由updatedb創建的數據庫

下面的命令會顯示系統中所有包含crontab字符串的文件

$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim

41. man

顯示某個命令的man頁面

$ man crontab

有些命令可能會有多個man頁面,每個man頁面對應一種命令類型

$ man SECTION-NUMBER commandname

man頁面一般可以分爲8種命令類型

  1. 用戶命令
  2. 系統調用
  3. c庫函數
  4. 設備與網絡接口
  5. 文件格式
  6. 遊戲與屏保
  7. 環境、表、宏
  8. 系統管理員命令和後臺運行命令

例如,我們執行whatis crontab,你可以看到crontab有兩個命令類型1和5,所以我們可以通過下面的命令查看命令類型5的man頁面

$ whatis crontab
crontab (1)          - maintain crontab files for individual users (V3)
crontab (5)          - tables for driving cron

$ man 5 crontab

42. tail

tail命令默認顯示文件最後的10行文本

$ tail filename.txt

你可以使用-n選項指定要顯示的行數

$ tail -n N filename.txt

你也可以使用-f選項進行實時查看,這個命令執行後會等待,如果有新行添加到文件尾部,它會繼續輸出新的行,在查看日誌時這個選項會非常有用。你可以通過CTRL-C終止命令的執行

$ tail -f log-file

43. less

這個命名可以在不加載整個文件的前提下顯示文件內容,在查看大型日誌文件的時候這個命令會非常有用

$ less huge-log-file.log

當你用less命令打開某個文件時,下面兩個按鍵會給你帶來很多幫助,他們用於向前和向後滾屏

CTRL+F – forward one window
CTRL+B – backward one window

44. su

su命令用於切換用戶賬號,超級用戶使用這個命令可以切換到任何其他用戶而不用輸入密碼

$ su - USERNAME

用另外一個用戶名執行一個命令下面的示例中用戶john使用raj用戶名執行ls命令,執行完後返回john的賬號

[john@dev-server]$ su - raj -c 'ls'

[john@dev-server]$

用指定用戶登錄,並且使用指定的shell程序,而不用默認的

$ su -s 'SHELLNAME' USERNAME

45. mysql

mysql可能是Linux上使用最廣泛的數據庫,即使你沒有在你的服務器上安裝mysql,你也可以使用mysql客戶端連接到遠程的mysql服務器

連接一個遠程數據庫,需要輸入密碼

$ mysql -u root -p -h 192.168.1.2

連接本地數據庫

$ mysql -u root -p

你也可以在命令行中輸入數據庫密碼,只需要在-p後面加上密碼作爲參數,可以直接寫在p後面而不用加空格

46. yum

使用yum安裝apache

$ yum install httpd

更新apache

$ yum update httpd

卸載/刪除apache

$ yum remove httpd

47. rpm

使用rpm安裝apache

# rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm

更新apache

# rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm

卸載/刪除apache

# rpm -ev httpd

48. ping

ping一個遠程主機,只發5個數據包

$ ping -c 5 gmail.com

49. date

設置系統日期

# date -s "01/31/2010 23:59:53"

當你修改了系統時間,你需要同步硬件時間和系統時間

# hwclock –systohc

# hwclock --systohc –utc

50. wget

使用wget從網上下載軟件、音樂、視頻

$ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

下載文件並以指定的文件名保存文件

$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

 

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