Linux基礎入門(詳細版)

 

一、Linux入門概述

1.1 概述

Linux內核最初只是由芬蘭人林納斯·託瓦茲(Linus Torvalds)在赫爾辛基大學上學時出於個人愛好而編寫的。

Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。Linux能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡爲核心的設計思想,是一個性能穩定的多用戶網絡操作系統。

目前市面上較知名的發行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE

1.2 下載地址

centos下載地址:

網易鏡像:http://mirrors.163.com/centos/6/isos/

搜狐鏡像:http://mirrors.sohu.com/centos/6/isos/

1.3 Linux特點

Linux裏面一切皆是文件

Linux裏面沒有後綴名這一說

1.4 Linux和Windows區別

目前國內Linux更多的是應用與服務器上,而桌面操作系統更多使用的是window。主要區別如下。

比較

Window

Linux

界面

界面統一,外殼程序固定所有Windows程序菜單幾乎一致,快捷鍵也幾乎相同

圓形界面風格依發佈版本不同而不同,可能互不兼容。GNU/Linux的終端機是從UNIX傳承下來,基本命令和操作方法也幾乎一致。

驅動程序

驅動程序豐富,版本更新頻繁。默認安裝程序裏面一般包含有該版本發佈時流行的硬件驅動程序,之後所出的新硬件驅動依賴於硬件廠商提供。對於一些老硬件,如果沒有了原配的驅動有時候很難支持。另外,有時硬件廠商未提供所需版本的Windows下的驅動,也會比較頭痛。

由志願者開發,由Linux核心開發小組發佈,很多硬件廠商基於版本考慮並未提供驅動程序,儘管多數無需手動安裝,但是涉及安裝則相對複雜,使得新用戶面對驅動程序問題會一籌莫展。但是在開源開發模式下,許多老硬件儘管在Windows下很難支持的也容易找到驅動。HP、Intel、AMD等硬件廠商逐步不同程序支持開源驅動,問題正在得到緩解。

使用

使用比較簡單,容易入門。圓形化界面對沒有計算機背景知識的用戶使用十分有利。

圓形界面使用簡單,容易入門。文字界面,需要學習才能掌握。

學習

系統構造複雜、變化頻繁、且知識、技能淘汰快,深入學習困難

系統構造簡單、穩定,且知識、技能傳承性好,深入學習相對容易

軟件

每一種特定功能可能都需要商業軟件的支持,需要購買相應的授權

大部分軟件都可以自由獲取,同樣功能的軟件選擇較少。

二、VM安裝相關

2.1 安裝VMWare虛擬機

 

 

 

 

 

 

 

 

 

2.2 安裝CentOS

2.3 安裝VMTool具

1)什麼是VMtools

VM tools顧名思義就是Vmware的一組工具。主要用於虛擬主機顯示優化與調整,另外還可以方便虛擬主機與本機的交互,如允許共享文件夾,甚至可以直接從本機向虛擬主機拖放文件、鼠標無縫切換、顯示分辨率調整等,十分實用。

2)先啓動CentOS併成功登錄如下圖,發現底部提示且窗口中等大小,準備安裝

3)選擇虛擬機菜單欄--安裝VMware tools

 

4)光驅自動掛載VMTools

 

5)右鍵解壓VMwaretools-9.6.2-1688356.tar.gz

進入文件夾並確認看到vmware-install.pl文件

 

6)運行vmware-install.pl文件

 

最後用“./vmware-install.pl”命令來運行該安裝程序,然後根據屏幕提示一路回車。到此整個安裝過程算是完成了。

7)直接按到/dev/hdc...停止爲止,安裝完成

8)重啓CentOS, 這時候屏幕變成全屏了

 

9)設置共享文件夾,實現Windows ß--------àCentOS文件共享

 

 

 

2.4 虛擬機屏幕保護設置

 

 

2.5 IVT虛擬化支持

1)異常情況

 

 

 

2)宿主機BIOS設置中的硬件虛擬化被禁用了

需要打開筆記本BIOS中的IVT對虛擬化的支持

三、Linux目錄結構

3.1 概覽

 

3.2 樹狀目錄結構

 

/bin:是Binary的縮寫,這個目錄存放着系統必備執行命令

/boot:這裏存放的是啓動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件,自己的安裝別放這裏

/dev:Device(設備)的縮寫,該目錄下存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。

/etc所有的系統管理所需要的配置文件和子目錄。

/home存放普通用戶的主目錄,在Linux中每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的。

/lib:系統開機所需要最基本的動態連接共享庫,其作用類似於Windows裏的DLL文件。幾乎所有的應用程序都需要用到這些共享庫。

/lost+found:這個目錄一般情況下是空的,當系統非法關機後,這裏就存放了一些文件。

/media:linux系統會自動識別一些設備,例如U盤、光驅等等,當識別後,linux會把識別的設備掛載到這個目錄下。

/misc: 該目錄可以用來存放雜項文件或目錄,即那些用途或含義不明確的文件或目錄可以存放在該目錄下。

/mnt系統提供該目錄是爲了讓用戶臨時掛載別的文件系統的,我們可以將光驅掛載在/mnt/上,然後進入該目錄就可以查看光驅裏的內容了。

/net  存放着和網絡相關的一些文件.

/opt這是給主機額外安裝軟件所擺放的目錄。比如你安裝一個ORACLE數據庫則就可以放到這個目錄下。默認是空的。

/proc:這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。

/root該目錄爲系統管理員,也稱作超級權限者的用戶主目錄。

/sbin:s就是Super User的意思,這裏存放的是系統管理員使用的系統管理程序。

/selinux:這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,類似於windows的防火牆

/srv:service縮寫,該目錄存放一些服務啓動之後需要提取的數據。

/sys: 這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統 sysfs 。

/tmp這個目錄是用來存放一些臨時文件的。

/usr 這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似與windows下的program files目錄。

/var這個目錄中存放着在不斷擴充着的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌文件。

四、VI/VIM編輯器

4.1 概述

所有的 Unix Like 系統都會內建 vi 文書編輯器,其他的文書編輯器則不一定會存在。但是目前我們使用比較多的是 vim 編輯器。

Vim 具有程序編輯的能力,可以主動的以字體顏色辨別語法的正確性,方便程序設計。Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。

簡單的來說vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。vim 則可以說是程序開發者的一項很好用的工具。連vim 的官方網站 (http://www.vim.org) 自己也說 vim 是一個程序開發工具而不是文字處理軟件。

4.2 測試數據準備

 

4.3 一般模式

以 vi 打開一個檔案就直接進入一般模式了(這是默認的模式)。在這個模式中, 你可以使用『上下左右』按鍵來移動光標,你可以使用『刪除字符』或『刪除整行』來處理檔案內容, 也可以使用『複製、貼上』來處理你的文件數據。

常用語法

1)yy            (功能描述:複製光標當前一行)

   y數字y     (功能描述:複製一段(從第幾行到第幾行))

2)p              (功能描述:箭頭移動到目的行粘貼)

3)u              (功能描述:撤銷上一步)

4)dd            (功能描述:刪除光標當前行)

d數字d     (功能描述:刪除光標(含)後多少行)

5)x              (功能描述:刪除一個字母,相當於del)

   X             (功能描述:刪除一個字母,相當於Backspace)

 

6)yw           (功能描述:複製一個詞)

7)dw           (功能描述:刪除一個詞)

8)shift+^      (功能描述:移動到行頭)

9)shift+$     (功能描述:移動到行尾)

10)1+shift+g               (功能描述:移動到頁頭,數字)

11)shift+g                  (功能描述:移動到頁尾)

12)數字N+shift+g      (功能描述:移動到目標行)

4.4 編輯模式

在一般模式中可以進行刪除、複製、貼上等等的動作,但是卻無法編輯文件內容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一個字母之後纔會進入編輯模式。

注意了!通常在 Linux 中,按下這些按鍵時,在畫面的左下方會出現『INSERT 或 REPLACE 』的字樣,此時纔可以進行編輯。而如果要回到一般模式時, 則必須要按下『Esc』這個按鍵即可退出編輯模式。

常用語法

1)進入編輯模式

1i    當前光標前

(2)a    當前光標後

(3)o    當前光標行的下一行

2)退出編輯模式

按『Esc』鍵

4.5 指令模式

在一般模式當中,輸入『 : / ?』3箇中的任何一個按鈕,就可以將光標移動到最底下那一行。

在這個模式當中, 可以提供你『搜尋資料』的動作,而讀取、存盤、大量取代字符、離開 vi 、顯示行號等動作是在此模式中達成的!

常用語法

1)基本語法

1: 選項

       選項:

  w    保存

  q     退出

  !  感嘆號強制執行

2/  查找,/被查找詞,n是查找下一個,shift+n是往上查找

3查找,?被查找詞,n是查找上一個,shift+n是往下查找

2)案例

:wq!        強制保存退出

 

五、系統管理操作

5.1 查看網絡IP和網關

1)查看虛擬網絡編輯器

 

2)修改ip地址

 

3)查看網關

 

5.2 配置網絡ip地址

0)查看當前ip基本語法:

[root@hadoop102 /]# ifconfig

1)在終端命令窗口中輸入

[root@hadoop102 /]#vim /etc/udev/rules.d/70-persistent-net.rules

進入如下頁面,刪除eth0該行;將eth1修改爲eth0,同時複製物理ip地址

 

2)修改IP地址

[root@hadoop102 /]#vim /etc/sysconfig/network-scripts/ifcfg-eth0

需要修改的內容有5項:

IPADDR=192.168.11.106

GATEWAY=192.168.11.2

ONBOOT=yes

BOOTPROTO=static

DNS1=8.8.8.8

1)修改前

 

       (2)修改後

 

:wq  保存退出

3)執行service network restart

 

4)如果報錯,reboot,重啓虛擬機

5.3 配置主機名

0)查看主機名基本語法:

       [root@hadoop102 /]#hostname

1)修改linux的hosts文件

1)進入Linux系統查看本機的主機名。通過hostname命令查看

[root@hadoop ~]# hostname

hadoop1.atguigu.com

2)如果感覺此主機名不合適,我們可以進行修改。通過編輯/etc/sysconfig/network文件

[root@hadoop102 /]# vi /etc/sysconfig/network

 

文件中內容

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME= hadoop102

注意:主機名稱不要有“_”下劃線

3)打開此文件後,可以看到主機名。修改此主機名爲我們想要修改的主機名hadoop102

4)保存退出。

5)打開/etc/hosts

[root@hadoop102 /]# vim /etc/hosts

添加如下內容

192.168.11.102 hadoop102

6)並重啓設備,重啓後,查看主機名,已經修改成功

2)修改window7的hosts文件

       (1)進入C:\Windows\System32\drivers\etc路徑

       (2)打開hosts文件並添加如下內容

     192.168.11.101 hadoop101

192.168.11.102 hadoop102

192.168.11.103 hadoop103

192.168.11.104 hadoop104

192.168.11.105 hadoop105

192.168.11.106 hadoop106

192.168.11.107 hadoop107

192.168.11.108 hadoop108

5.4 防火牆

1)基本語法:

service iptables status     (功能描述:查看防火牆狀態

chkconfig iptables –list   (功能描述:查看防火牆開機啓動狀態)(雙橫線)

service iptables stop (功能描述:臨時關閉防火牆

chkconfig iptables off      (功能描述:關閉防火牆開機啓動

chkconfig iptables on      (功能描述:開啓防火牆開機啓動

2)擴展

Linux系統有7個運行級別(runlevel)

運行級別0:系統停機狀態,系統默認運行級別不能設爲0,否則不能正常啓動

運行級別1:單用戶工作狀態,root權限,用於系統維護,禁止遠程登陸

運行級別2:多用戶狀態(沒有NFS)

運行級別3:完全的多用戶狀態(NFS),登陸後進入控制檯命令行模式

運行級別4:系統未使用,保留

運行級別5X11控制檯,登陸後進入圖形GUI模式

運行級別6:系統正常關閉並重啓,默認運行級別不能設爲6,否則不能正常啓動

5.5 關機重啓

在linux領域內大多用在服務器上,很少遇到關機的操作。畢竟服務器上跑一個服務是永無止境的,除非特殊情況下,不得已纔會關機 。

正確的關機流程爲:sync > shutdown > reboot > halt

1)基本語法:

       (1)sync                   (功能描述:將數據由內存同步到硬盤中)

       2shutdown [選項] 時間

                     選項:

                     -h:關機

                     -r:重啓

3halt                    (功能描述:關閉系統,等同於shutdown –h now poweroff

4reboot                 (功能描述:就是重啓,等同於 shutdown –r now

2)案例

(1)將數據由內存同步到硬盤中

[root@hadoop102 /]#sync  

(2)計算機將在10分鐘後關機,並且會顯示在登錄用戶的當前屏幕中

[root@hadoop102 /]#shutdown –h 10 ‘This server will shutdown after 10 mins’

(3)立馬關機

[root@hadoop102 /]# shutdown –h now

(4)系統立馬重啓

[root@hadoop102 /]# shutdown –r now

       (5)重啓(等同於 shutdown –r now)

[root@hadoop102 /]# reboot

(6)關機(等同於shutdown –h now 和 poweroff)

[root@hadoop102 /]#halt

注意:不管是重啓系統還是關閉系統,首先要運行sync命令,把內存中的數據寫到磁盤中。

5.6 找回root密碼

重新安裝系統嗎?當然不用!進入單用戶模式更改一下root密碼即可。

 1)重啓Linux,見到下圖,在3秒鐘之內按下回車

 

2)三秒之內要按一下回車,出現如下界面

 

3)按下e鍵就可以進入下圖

 

4)移動到下一行,再次按e鍵

 

5)移動到下一行,進行修改

修改完成後回車鍵,然後按b鍵進行重新啓動進入系統

6)移動到下一行,進行修改

 

 

 

最終修改完密碼,reboot一下即可。

六、遠程登錄

6.1 安裝SecureCRT

Linux遠程登錄及相關工具介紹

Linux一般作爲服務器使用,而服務器一般放在機房,你不可能在機房操作你的Linux服務器。這時我們就需要遠程登錄到Linux服務器來管理維護系統。

Linux系統中是通過SSH服務實現的遠程登錄功能,默認ssh服務端口號爲 22。Window系統上 Linux 遠程登錄客戶端有SecureCRT, Putty, SSH Secure Shell,XShell等

1)安裝步驟

 

2)操作

(1)鼠標選中即爲複製

(2)鼠標右鍵即爲粘貼

     

6.2 SecureCRT中文亂碼解決方法

1)重新查看會話,是否中文顯示正常

2)依然無法正常顯示中文,可能是由於Linux系統中默認的字符編碼非UTF8所致

用root用戶登錄。輸入cat /etc/sysconfig/i18n

如果安裝系統爲中文系統,則修改【LANG=“zh_CN.UTF-8”】

如果安裝系統爲英文系統,則修改【LANG=“en_US.UTF-8”】

保存文件。 斷開SSH,重新登錄。就正常了

下面是修改後的查看

[root@hadoop100 ~]# cat /etc/sysconfig/i18n

LANG="zh_CN.UTF-8"

3)調整設置CRT解決

 

七、常用基本命令

7.1 幫助命令

7.1.1 man 獲得幫助信息

1)基本語法:

       man [命令或配置文件]        (功能描述:獲得幫助信息)

       (1)顯示說明

 

NAME  命令的名稱和單行描述

SYNOPSIS 怎樣使用命令

DESCRIPTION 命令功能的深入討論

EXAMPLES  怎樣使用命令的例子

SEE ALSO  相關主題(通常是手冊頁)

       (2)數字說明q

1.用戶在shell環境中可以操作的命令或是可執行的文件

2.系統內核(kernel)可以調用的函數

3.常用的函數or函數庫

4.設備配置文件

5.配置文件的格式

6.遊戲相關

7.linux網絡協議和文件系統

8.系統管理員可以用的命令

9.跟內核有關係的文件

2)案例

[root@hadoop106 home]# man ls

7.1.2 help 獲得shell內置命令的幫助信息

1)基本語法:

       help 命令      (功能描述:獲得shell內置命令的幫助信息)

2)案例:

       [root@hadoop101 bin]# help cd

7.1.3 常用快捷鍵

1ctrl + c:停止進程

2ctrl+l:清屏

3ctrl + q:退出

4)善於用tab

5)上下鍵:查找執行過的命令

6ctrl +altlinuxWindows之間切換

7.2 文件目錄類

7.2.1 pwd 顯示當前工作目錄的絕對路徑

1)基本語法:

       pwd        (功能描述:顯示當前工作目錄的絕對路徑)

       2)案例

[root@hadoop106 home]# pwd

/home

7.2.2 ls 列出目錄的內容

1)基本語法:

ls [選項] [目錄或是文件]

選項:

-a :全部的文件,連同隱藏檔( 開頭爲 . 的文件) 一起列出來(常用)

-l :長數據串列出,包含文件的屬性與權限等等數據;(常用)

 每行列出的信息依次是: 文件類型與權限 鏈接數 文件屬主 文件屬組 文件大小用byte來表示 建立或最近修改的時間 名字 

2)案例

[atguigu@hadoop101 ~]$ ls -al

總用量 44

drwx------. 5 atguigu atguigu 4096 5  27 15:15 .

drwxr-xr-x. 3 root    root    4096 5  27 14:03 ..

drwxrwxrwx. 2 root    root    4096 5  27 14:14 hello

-rwxrw-r--. 1 atguigu atguigu   34 5  27 14:20 test.txt

7.2.3 mkdir 創建一個新的目錄

1)基本語法:

       mkdir [-p] 要創建的目錄

       選項:

-p:創建多層目錄

2)案例

[root@hadoop106 opt]# mkdir test

[root@hadoop106 opt]# mkdir -p user/atguigu

7.2.4 rmdir 刪除一個空的目錄

1)基本語法:

       rmdir 要刪除的空目錄

2)案例

[root@hadoop106 opt]# mkdir test

[root@hadoop106 opt]# rmdir test

7.2.5 touch 創建空文件

1)基本語法:

       touch 文件名稱

2)案例

[root@hadoop106 opt]# touch test.java

7.2.6 cd 切換目錄

1)基本語法:

       (1)cd 絕對路徑

       (2)cd 相對路徑

       (3)cd ~或者cd         (功能描述:回到自己的家目錄)

       (4)cd -                     (功能描述:回到上一次所在目錄)

       (5)cd ..                    (功能描述:回到當前目錄的上一級目錄)

       (6)cd -P                  (功能描述:跳轉到實際物理路徑,而非快捷方式路徑)

2)案例

(1)使用 mkdir 命令創建atguigu目錄

[root@www ~]# mkdir atguigu

(2)使用絕對路徑切換到atguigu目錄

[root@www ~]# cd /root/atguigu/

(3)使用相對路徑切換到atguigu目錄

[root@www ~]# cd ./atguigu/

(4)表示回到自己的家目錄,亦即是 /root 這個目錄

[root@www atguigu]# cd ~

(5)cd- 回到上一次所在目錄

[root@www atguigu]# cd -

(6)表示回到當前目錄的上一級目錄,亦即是 /root 的上一級目錄的意思;

[root@www ~]# cd ..

7.2.7 cp 複製文件或目錄

1)基本語法:

(1)cp source dest                           (功能描述:複製source文件到dest)

(2)cp -r sourceFolder targetFolder   (功能描述:遞歸複製整個文件夾)

2)案例

(1)複製文件

 [root@hadoop106 opt]# cp test.java test

(2)遞歸複製整個文件夾

 [root@hadoop106 opt]# cp -r test test1

7.2.8 rm 移除文件或目錄

1)基本語法

       (1)rmdir deleteEmptyFolder    (功能描述:刪除空目錄)

(2)rm -rf deleteFile                 (功能描述:遞歸刪除目錄中所有內容)

2)案例

       1)刪除空目錄

 [root@hadoop106 opt]# rmdir test

2)遞歸刪除目錄中所有內容

 [root@hadoop106 opt]# rm -rf test1

7.2.9 mv 移動文件與目錄或重命名

1)基本語法:

       (1)mv oldNameFile newNameFile   (功能描述:重命名)

       (2)mv /temp/movefile /targetFolder (功能描述:移動文件)

2)案例:

       1)重命名

 [root@hadoop106 opt]# mv test.java  test1.java

2)移動文件

[root@hadoop106 opt]# mv test1.java  test1

7.2.10 cat 查看文件內容

查看文件內容,從第一行開始顯示。

1)基本語法

       cat  [選項] 要查看的文件

選項:

-A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;

-b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!

-E :將結尾的斷行字節 $ 顯示出來;

-n :列出行號,連同空白行也會有行號,與 -b 的選項不同;

-T :將 [tab] 按鍵以 ^I 顯示出來;

-v :列出一些看不出來的特殊字符

2)案例

[atguigu@hadoop101 ~]$ cat -A test.txt

hellda  $

dasadf ^I$

da^I^I^I$

das$

7.2.11 tac查看文件內容

查看文件內容,從最後一行開始顯示,可以看出 tac cat 的倒著寫。

1)基本語法:

       tac  [選項參數] 要查看的文件

2)案例

[root@hadoop106 test1]# cat test1.java

hello

atguigu

atguigu1

 

[root@hadoop106 test1]# tac test1.java

atguigu1

atguigu

hello

7.2.12 more 查看文件內容

查看文件內容,一頁一頁的顯示文件內容。

1)基本語法:

       more 要查看的文件

2)功能使用說明

空白鍵 (space):代表向下翻一頁;

Enter:代表向下翻『一行』;

q:代表立刻離開 more ,不再顯示該文件內容。

Ctrl+F 向下滾動一屏

Ctrl+B 返回上一屏

= 輸出當前行的行號

:f 輸出文件名和當前行的行號

3)案例

[root@hadoop106 test1]# more test1.java

7.2.13 less 查看文件內容

less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內容,不同的是 less 允許使用[pageup] [pagedown]往回滾動。

1)基本語法:

       less 要查看的文件

2)功能使用說明

空白鍵   :向下翻動一頁;

[pagedown]:向下翻動一頁;

[pageup] :向上翻動一頁;

/字串    :向下搜尋『字串』的功能;n:向下查找;N:向上查找;

?字串    :向上搜尋『字串』的功能;n:向上查找;N:向下查找;

q        :離開 less 這個程序;

3)案例

[root@hadoop106 test1]# less test1.java

7.2.14 head查看文件內容

查看文件內容,只看頭幾行。

1)基本語法

head -n 10 文件      (功能描述:查看文件頭10行內容,10可以是任意行數)

2)案例

[root@hadoop106 test1]# head -n 2 test1.java

hello

atguigu

7.2.15 tail 查看文件內容

查看文件內容,只看尾巴幾行。

1)基本語法

(1)tail  -n 10 文件        (功能描述:查看文件頭10行內容,10可以是任意行數)

(2)tail  –f  文件            (功能描述:實時追蹤該文檔的所有更新)

2)案例

(1)查看文件頭1行內容

[root@hadoop106 test1]# tail -n 1 test1.java

Atguigu

(2)實時追蹤該檔的所有更新

[root@hadoop106 test1]# tail -f test1.java

hello

atguigu

atguigu

7.2.16 重定向命令

1)基本語法:

(1)ls –l >文件          (功能描述:列表的內容寫入文件a.txt中(覆蓋寫))

(2)ls –al >>文件       (功能描述:列表的內容追加到文件aa.txt的末尾)

2)案例

       (1)[root@hadoop101 opt]# ls -l>t.txt

(2)[root@hadoop101 opt]# ls -l>>t.txt

(3)[root@hadoop106 test1]# echo hello>>test1.java

7.2.17 echo

1)基本語法:

(1)echo 要顯示的內容 >> 存儲內容的的文件   (功能描述:將要顯示的內容,存儲到文件中)

       (2)echo 變量           (功能描述:顯示變量的值)

2)案例

[root@hadoop106 test1]# echo $JAVA_HOME

/opt/module/jdk1.7.0_79

7.2.18 ln軟鏈接

1)基本語法:

ln –s [原文件] [目標文件]           (功能描述:給原文件創建一個軟鏈接,軟鏈接存放在目標文件目錄)

2)案例:

[root@hadoop101 module]# ln -s /opt/module/test.txt /opt/t.txt

[root@hadoop101 opt]# ll

lrwxrwxrwx. 1 root    root      20 6月  17 12:56 t.txt -> /opt/module/test.txt

 

創建一個軟鏈接

[atguigu@hadoop103 opt]$ ln -s /opt/module/hadoop-2.7.2/ /opt/software/hadoop

cd不加參數進入是軟鏈接的地址

[atguigu@hadoop103 software]$ cd hadoop

[atguigu@hadoop103 hadoop]$ pwd

/opt/software/hadoop

 

cd加參數進入是實際的物理地址

[atguigu@hadoop103 software]$ cd -P hadoop

[atguigu@hadoop103 hadoop-2.7.2]$ pwd

/opt/module/hadoop-2.7.2

7.2.19 history查看所敲命令歷史

1)基本語法:

       history   

2)案例

[root@hadoop106 test1]# history

7.3 時間日期類

1)基本語法

date [OPTION]... [+FORMAT]

7.3.1 date顯示當前時間

1)基本語法:

       (1)date                                                       (功能描述:顯示當前時間)

       (2)date +%Y                                               (功能描述:顯示當前年份)

(3)date +%m                                               (功能描述:顯示當前月份)

(4)date +%d                                                (功能描述:顯示當前是哪一天)

(5)date +%Y%m%d   date +%Y/%m/%d … (功能描述:顯示當前年月日各種格式 )

       (6)date "+%Y-%m-%d %H:%M:%S"            (功能描述:顯示年月日時分秒)

2)案例

[root@hadoop106 /]# date

2017年 06月 19日 星期一 20:53:30 CST

[root@hadoop106 /]# date +%Y%m%d

20170619

[root@hadoop106 /]# date "+%Y-%m-%d %H:%M:%S"

2017-06-19 20:54:58

7.3.2 date顯示非當前時間

1)基本語法:

(1)date -d '1 days ago'                    (功能描述:顯示前一天日期)

(2)date -d yesterday +%Y%m%d    (同上)

(3)date -d next-day +%Y%m%d     (功能描述:顯示明天日期)

(4)date -d 'next monday'                 (功能描述:顯示下週一時間)

2)案例:

[root@hadoop106 /]# date -d '1 days ago'

2017年 06月 18日 星期日 21:07:22 CST

[root@hadoop106 /]# date -d next-day +%Y%m%d

20170620

[root@hadoop106 /]# date -d 'next monday'

2017年 06月 26日 星期一 00:00:00 CST

7.3.3 date設置系統時間

1)基本語法:

       date -s 字符串時間

2)案例

       [root@hadoop106 /]# date -s "2017-06-19 20:52:18"

7.3.4 cal查看日曆

1)基本語法:

cal [選項]                    (功能描述:不加選項,顯示本月日曆)

選項:

-3 ,顯示系統前一個月,當前月,下一個月的日曆

具體某一年,顯示這一年的日曆。

2)案例:

[root@hadoop106 /]# cal

[root@hadoop106 /]# cal -3

       [root@hadoop106 /]# cal 2016

7.4 用戶管理命令

7.4.1 useradd 添加新用戶

1)基本語法:

       useradd 用戶名            (功能描述:添加新用戶)

2)案例:

       [root@hadoop101 opt]# user atguigu

7.4.2 passwd 設置用戶密碼

1)基本語法:

       passwd 用戶名     (功能描述:設置用戶密碼)

2)案例

       [root@hadoop101 opt]# passwd atguigu

7.4.3 id 判斷用戶是否存在

1)基本語法:

       id 用戶名

2)案例:

       [root@hadoop101 opt]#id atguigu

7.4.4 su 切換用戶

1)基本語法:

su 用戶名稱                          (功能描述:切換用戶)

2)案例

[root@hadoop101 opt]#su atguigu

7.4.5 userdel 刪除用戶

1)基本語法:

       1userdel  用戶名         (功能描述:刪除用戶但保存用戶主目錄)

2userdel -r 用戶名        (功能描述:用戶和用戶主目錄,都刪除)

2)案例:

(1)刪除用戶但保存用戶主目錄

       [root@hadoop101 opt]#userdel atguigu

(2)刪除用戶和用戶主目錄,都刪除

       [root@hadoop101 opt]#userdel –r atguigu

7.4.6 who 查看登錄用戶信息

1)基本語法

       (1)whoami               (功能描述:顯示自身用戶名稱)

2who am i             (功能描述:顯示登錄用戶的用戶名)

3who                    (功能描述:看當前有哪些用戶登錄到了本臺機器上)

2)案例

[root@hadoop101 opt]# whoami

[root@hadoop101 opt]# who am i

       [root@hadoop101 opt]# who

7.4.7 設置atguigu普通用戶具有root權限

1)修改配置文件

修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

## Allow root to run any commands anywhere

root    ALL=(ALL)     ALL

atguigu   ALL=(ALL)     ALL

修改完畢,現在可以用atguigu帳號登錄,然後用命令 su - ,即可獲得root權限進行操作。

2)案例

[atguigu@hadoop101 opt]$ sudo mkdir module

[root@hadoop101 opt]# chown atguigu:atguigu module/

7.4.8 cat  /etc/passwd 查看創建了哪些組

cat  /etc/passwd

7.4.9 usermod修改用戶

1)基本語法:

usermod -g 用戶組 用戶名

2)案例:

將用戶atguigu加入dev用戶組

       [root@hadoop101 opt]#usermod –g dev atguigu

7.5 用戶組管理命令

每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,

如Linux下的用戶屬於與它同名的用戶組,這個用戶組在創建用戶時同時創建。

用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。

7.5.1 groupadd 新增組

1)基本語法

groupadd 組名

2)案例:

       添加一個atguigu組

[root@hadoop101 opt]#groupadd atguigu

7.5.2 groupdel刪除組

1)基本語法:

groupdel 組名

2)案例

[root@hadoop101 opt]# groupdel atguigu

7.5.3 groupmod修改組

1)基本語法:

groupmod -n 新組名 老組名

2)案例

       修改atguigu組名稱爲atguigu1

[root@hadoop101 atguigu]# groupmod –n atguigu1 atguigu

7.5.4 cat  /etc/group 查看創建了哪些組

cat  /etc/group

7.5.5 綜合案例

[root@hadoop101 atguigu]# groupadd dev

[root@hadoop101 atguigu]# groupmod -n device dev

[root@hadoop101 atguigu]# usermod -g device atguigu

[root@hadoop101 atguigu]# su atguigu

[atguigu@hadoop101 ~]$ mkdir atguigu

[atguigu@hadoop101 ~]$ ls -l

drwxr-xr-x. 2 atguigu device  4096 5  27 16:31 atguigu

[root@hadoop101 atguigu]# usermod -g atguigu atguigu

7.6 文件權限類

7.6.1 文件屬性

Linux系統是一種典型的多用戶系統,不同的用戶處於不同的地位,擁有不同的權限。爲了保護系統的安全性,Linux系統對不同的用戶訪問同一文件(包括目錄文件)的權限做了不同的規定。在Linux中我們可以使用ll或者ls –l命令來顯示一個文件的屬性以及文件所屬的用戶和組。

1)從左到右的10個字符表示:

如果沒有權限,就會出現減號[ - ]而已。從左至右用0-9這些數字來表示:

(1)0首位表示類型

在Linux中第一個字符代表這個文件是目錄、文件或鏈接文件等等

- 代表文件

 d 代表目錄

 c 字符流,裝置文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)

 s socket

 p 管道

 l 鏈接文檔(link file)

 b 設備文件,裝置文件裏面的可供儲存的接口設備(可隨機存取裝置)

(2)第1-3位確定屬主(該文件的所有者)擁有該文件的權限。---User

(3)第4-6位確定屬組(所有者的同組用戶)擁有該文件的權限,---Group

(4)第7-9位確定其他用戶擁有該文件的權限 ---Other

文件類型

屬主權限

屬組權限

其他用戶權限

0

1    2   3

4   5   6

7   8   9

d

R   w   x

R   -   x

R   -   x

目錄文件

讀  寫  執行

讀  寫  執行

讀  寫  執行

2)rxw作用文件和目錄的不同解釋

(1)作用到文件:

[ r ]代表可讀(read): 可以讀取,查看

[ w ]代表可寫(write): 可以修改,但是不代表可以刪除該文件,刪除一個文件的前提條件是對該文件所在的目錄有寫權限,才能刪除該文件.

[ x ]代表可執行(execute):可以被系統執行

(2)作用到目錄:

[ r ]代表可讀(read): 可以讀取,ls查看目錄內容

[ w ]代表可寫(write): 可以修改,目錄內創建+刪除+重命名目錄

[ x ]代表可執行(execute):可以進入該目錄

3)案例

[atguigu@hadoop101 ~]$ ls -l

總用量 8

drwxrwxr-x. 2 atguigu atguigu 4096 5  27 14:14 hello

-rw-rw-r--. 1 atguigu atguigu   34 5  27 14:20 test.txt

 

7.6.2 chmod改變權限

1)基本語法:

       chmod  [{ugoa}{+-=}{rwx}] [文件或目錄] [mode=421 ]  [文件或目錄]

2)功能描述

改變文件或者目錄權限

文件: r-查看;w-修改;x-執行文件

目錄: r-列出目錄內容;w-在目錄中創建和刪除;x-進入目錄

刪除一個文件的前提條件:該文件所在的目錄有寫權限,你才能刪除該文件。

3)案例

[root@hadoop106 test1]# chmod u+x test1.java

[root@hadoop106 test1]# chmod g+x test1.java

[root@hadoop106 test1]# chmod o+x test1.java

[root@hadoop106 test1]# chmod 777 test1.java

[root@hadoop106 test1]#chmod  -R 777  testdir

7.6.4 chown改變所有者

1)基本語法:

chown [最終用戶] [文件或目錄]        (功能描述:改變文件或者目錄的所有者)

2)案例

[root@hadoop106 test1]# chown atguigu test1.java

[root@hadoop106 test1]# ls –al

-rwxr-xr-x. 1 atguigu atguigu  551 5  23 13:02 test1.java

7.6.3 chgrp改變所屬組

1)基本語法:

       chgrp [最終用戶組] [文件或目錄]      (功能描述:改變文件或者目錄的所屬組)

2)案例

[root@hadoop106 test1]# chgrp atguigu test1.java

 

[root@hadoop106 test1]# ls -al

-rwxr-xr-x. 1 root atguigu  551 5  23 13:02 test1.java

7.6.5 su 切換用戶

1)基本語法:

su –username               (功能描述:切換用戶)

2)案例

[root@hadoop101 atguigu]# su atguigu

[atguigu@hadoop101 ~]$

 

[atguigu@hadoop101 ~]$ su root

密碼:

[root@hadoop101 atguigu]#

7.7 磁盤分區類

7.7.1 fdisk查看分區

1)基本語法:

       fdisk –l                 (功能描述:查看磁盤分區詳情)

       注意:在root用戶下才能使用

2)功能說明:

       (1)Linux分區

這個硬盤是20G的,有255個磁面;63個扇區;2610個磁柱;每個 cylinder(磁柱)的容量是 8225280 bytes=8225.280 K(約爲)=8.225280M(約爲);

Device

Boot

Start

End

Blocks

Id

System

分區序列

引導

從X磁柱開始

到Y磁柱結束

容量

分區類型ID

分區類型

(2)Win7分區

3)案例

[root@hadoop101 /]# fdisk -l

 

Disk /dev/sda: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0005e654

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          26      204800   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              26        1332    10485760   83  Linux

/dev/sda3            1332        1593     2097152   82  Linux swap / Solaris

7.7.2 df查看硬盤

1)基本語法:

       df  參數        (功能描述:列出文件系統的整體磁盤使用量,檢查文件系統的磁盤空間佔用情況)

參數:

-a :列出所有的文件系統,包括系統特有的 /proc 等文件系統;

-k :以 KBytes 的容量顯示各文件系統;

-m :以 MBytes 的容量顯示各文件系統;

-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;

-H :以 M=1000K 取代 M=1024K 的進位方式;

-T :顯示文件系統類型,連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;

-i :不用硬盤容量,而以 inode 的數量來顯示

2)案例

[root@hadoop106 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2        15G  3.5G   11G  26% /

tmpfs           939M  224K  939M   1% /dev/shm

/dev/sda1       190M   39M  142M  22% /boot

7.7.3 mount/umount掛載/卸載

對於Linux用戶來講,不論有幾個分區,分別分給哪一個目錄使用,它總歸就是一個根目錄、一個獨立且唯一的文件結構

Linux中每個分區都是用來組成整個文件系統的一部分,她在用一種叫做“掛載”的處理方法,它整個文件系統中包含了一整套的文件和目錄,並將一個分區和一個目錄聯繫起來,要載入的那個分區將使它的存儲空間在這個目錄下獲得。

0)掛載前準備(必須要有光盤或者已經連接鏡像文件)

 

1)掛載光盤語法:

mount [-t vfstype] [-o options] device dir

(1)-t vfstype 指定文件系統的類型,通常不必指定。mount 會自動選擇正確的類型。

常用類型有:

光盤或光盤鏡像:iso9660

DOS fat16文件系統:msdos

Windows 9x fat32文件系統:vfat

Windows NT ntfs文件系統:ntfs

Mount Windows文件網絡共享:smbfs

UNIX(LINUX) 文件網絡共享:nfs

(2)-o options 主要用來描述設備或檔案的掛接方式。常用的參數有:

loop:用來把一個文件當成硬盤分區掛接上系統

  ro:採用只讀方式掛接設備

  rw:採用讀寫方式掛接設備

  iocharset:指定訪問文件系統所用字符集

(3)device 要掛接(mount)的設備

(4)dir設備在系統上的掛接點(mount point)

2)案例

(1)光盤鏡像文件的掛載

        [root@localhost ~]# mkdir /mnt/cdrom/                                        建立掛載點

        [root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/        設備/dev/cdrom掛載到 掛載點 :  /mnt/cdrom中

[root@hadoop101 ~]# ll /mnt/cdrom/

3)卸載光盤語法:

[root@localhost ~]# umount 設備文件名或掛載點

4)案例

[root@localhost ~]# umount /mnt/cdrom

5)開機自動掛載語法:

[root@hadoop101 ~]# vi /etc/fstab

添加紅框中內容,保存退出。

7.8 搜索查找類

7.8.1 find 查找文件或者目錄

1)基本語法:

       find [搜索範圍] [匹配條件]

2)案例

(1)按文件名:根據名稱查找/目錄下的filename.txt文件。

[root@hadoop106 ~]# find /opt/ -name *.txt

(2)按擁有者:查找/opt目錄下,用戶名稱爲-user的文件

[root@hadoop106 ~]# find /opt/ -user atguigu

       3)按文件大小:在/home目錄下查找大於200m的文件(+n 大於  -n小於   n等於)

[root@hadoop106 ~]find /home –size +204800

7.8.2 grep 在文件內搜索字符串匹配的行並輸出

1)基本語法

grep+參數+查找內容+源文件

參數:

-c:只輸出匹配行的計數。

-I:不區分大小寫(只適用於單字符)。

-h:查詢多文件時不顯示文件名。

-l:查詢多文件時只輸出包含匹配字符的文件名。

n:顯示匹配行及行號。

-s:不顯示不存在或無匹配文本的錯誤信息。

-v:顯示不包含匹配文本的所有行。

2)案例

[root@hadoop106 opt]# ls | grep -n test

4:test1

5:test2

7.8.3 which 文件搜索命令

1)基本語法:

       which 命令          (功能描述:搜索命令所在目錄及別名信息)

2)案例

       [root@hadoop101 opt]# which ls

       /bin/ls

7.9 進程線程類

進程是正在執行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,並佔用一定的系統資源。

7.9.1 ps查看系統中所有進程

1)基本語法:

       ps –aux          (功能描述:查看系統中所有進程)

2)功能說明

       USER:該進程是由哪個用戶產生的

       PID:進程的ID號

%CPU:該進程佔用CPU資源的百分比,佔用越高,進程越耗費資源;

%MEM:該進程佔用物理內存的百分比,佔用越高,進程越耗費資源;

VSZ:該進程佔用虛擬內存的大小,單位KB;

RSS:該進程佔用實際物理內存的大小,單位KB;

TTY:該進程是在哪個終端中運行的。其中tty1-tty7代表本地控制檯終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0-255代表虛擬終端。

STAT:進程狀態。常見的狀態有:R:運行、S:睡眠、T:停止狀態、s:包含子進程、+:位於後臺

START:該進程的啓動時間

TIME:該進程佔用CPU的運算時間,注意不是系統時間

COMMAND:產生此進程的命令名

3)案例

       [root@hadoop102 datas]# ps –aux

 

7.9.2 top查看系統健康狀態

1)基本命令

       top [選項]     

       (1)選項:

              -d 秒數:指定top命令每隔幾秒更新。默認是3秒在top命令的交互模式當中可以執行的命令:

-i:使top不顯示任何閒置或者僵死進程。

-p:通過指定監控進程ID來僅僅監控某個進程的狀態。

-s  使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。

       (2)操作選項:

P:        以CPU使用率排序,默認就是此項

M:        以內存的使用率排序

N:        以PID排序

q:         退出top

       (3)查詢結果字段解釋

第一行信息爲任務隊列信息

內容

說明

12:26:46

系統當前時間

up 1 day, 13:32

系統的運行時間,本機已經運行1天

13小時32分鐘

2 users

當前登錄了兩個用戶

load  average:  0.00, 0.00, 0.00

系統在之前1分鐘,5分鐘,15分鐘的平均負載。一般認爲小於1時,負載較小。如果大於1,系統已經超出負荷。

第二行爲進程信息

Tasks:  95 total

系統中的進程總數

1 running

正在運行的進程數

94 sleeping

睡眠的進程

0 stopped

正在停止的進程

0 zombie

殭屍進程。如果不是0,需要手工檢

查殭屍進程

第三行爲CPU信息

Cpu(s):  0.1%us

用戶模式佔用的CPU百分比

0.1%sy

系統模式佔用的CPU百分比

0.0%ni

改變過優先級的用戶進程佔用的CPU百分比

99.7%id

空閒CPU的CPU百分比

0.1%wa

等待輸入/輸出的進程的佔用CPU百分比

0.0%hi

硬中斷請求服務佔用的CPU百分比

0.1%si

軟中斷請求服務佔用的CPU百分比

0.0%st

st(Steal  time)虛擬時間百分比。就是當有虛擬機時,虛擬CPU等待實際CPU的時間百分比。

第四行爲物理內存信息

Mem:    625344k total

物理內存的總量,單位KB

571504k used

已經使用的物理內存數量

53840k free

空閒的物理內存數量,我們使用的是虛擬機,總共只分配了628MB內存,所以只有53MB的空閒內存了

65800k buffers

作爲緩衝的內存數量

第五行爲交換分區(swap)信息

Swap:   524280k total

交換分區(虛擬內存)的總大小

0k used

已經使用的交互分區的大小

524280k free

空閒交換分區的大小

409280k cached

作爲緩存的交互分區的大小

2)案例

      [root@hadoop101 atguigu]# top –d 1

[root@hadoop101 atguigu]# top -i

[root@hadoop101 atguigu]# top –p 2575

[root@hadoop101 atguigu]# top –s

 

執行上述命令後,可以按P、M、N對查詢出的進程結果進行排序。

7.9.3 pstree查看進程樹

1)基本語法:

       pstree [選項]

       選項

  -p:  顯示進程的PID

  -u:  顯示進程的所屬用戶

2)案例:

       [root@hadoop102 datas]# pstree -u

[root@hadoop102 datas]# pstree -p

7.9.4 kill終止進程

1)基本語法:

       kill -9 pid進程號

       選項

-9 表示強迫進程立即停止

2)案例:

       啓動mysql程序

       切換到root用戶執行

       [root@hadoop102 桌面]# kill -9 5102

7.9.5 netstat顯示網絡統計信息

1)基本語法:

       netstat –anp           (功能描述:此命令用來顯示整個系統目前的網絡情況。例如目前的連接、數據包傳遞數據、或是路由表內容)

       選項:

       -an 按一定順序排列輸出

       -p  表示顯示哪個進程在調用

       -nltp 查看tcp協議進程端口號

2)案例

查看端口50070的使用情況

[root@hadoop106 hadoop-2.7.2]# netstat -anp | grep 50070

tcp     0   0 0.0.0.0:50070    0.0.0.0:*          LISTEN      6816/java 

                                      端口號                                                        進程號

7.10 壓縮和解壓類

7.10.1 gzip/gunzip壓縮

1)基本語法:

gzip+文件             (功能描述:壓縮文件,只能將文件壓縮爲*.gz文件)

gunzip+文件.gz     (功能描述:解壓縮文件命令)

2)特點:

(1)只能壓縮文件不能壓縮目錄

(2)不保留原來的文件

3)案例

(1)gzip壓縮

[root@hadoop106 opt]# ls

test.java

[root@hadoop106 opt]# gzip test.java

[root@hadoop106 opt]# ls

test.java.gz

(2)gunzip解壓縮文件

[root@hadoop106 opt]# gunzip test.java.gz

[root@hadoop106 opt]# ls

test.java

7.10.2 zip/unzip壓縮

1)基本語法:

zip + 參數 + XXX.zip + 將要壓縮的內容 (功能描述:壓縮文件和目錄的命令,window/linux通用且可以壓縮目錄且保留源文件)

參數:

-r 壓縮目錄

2)案例:

(1)壓縮 1.txt 和2.txt,壓縮後的名稱爲mypackage.zip

[root@hadoop106 opt]# zip test.zip test1.java  test.java

adding: test1.java (stored 0%)

adding: test.java (stored 0%)

 

[root@hadoop106 opt]# ls

test1.java  test.java  test.zip

(2)解壓 mypackage.zip

[root@hadoop106 opt]# unzip test.zip

Archive:  test.zip

 extracting: test1.java             

 extracting: test.java       

      

[root@hadoop106 opt]# ls

test1.java  test.java  test.zip

7.10.3 tar打包

1)基本語法:

tar + 參數 + XXX.tar.gz + 將要打包進去的內容           (功能描述:打包目錄,壓縮後的文件格式.tar.gz

參數:

-c 產生.tar打包文件

-v 顯示詳細信息

-f 指定壓縮後的文件名

-z 打包同時壓縮

-x 解包.tar文件

2)案例

(1)壓縮:tar -zcvf  XXX.tar.gz   n1.txt    n2.txt

       壓縮多個文件

[root@hadoop106 opt]# tar -zcvf test.tar.gz test1.java test.java

test1.java

test.java

[root@hadoop106 opt]# ls

test1.java  test.java  test.tar.gz

壓縮目錄

[root@hadoop106 opt]# tar -zcvf test.java.tar.gz test1

test1/

test1/hello

test1/test1.java

test1/test/

test1/test/test.java

[root@hadoop106 opt]# ls

test1 test.java.tar.gz

(2)解壓:tar -zxvf  XXX.tar.gz

       解壓到當前目錄

[root@hadoop106 opt]# tar -zxvf test.tar.gz

解壓到/opt目錄

[root@hadoop106 opt]# tar -zxvf test.tar.gz –C /opt

7.11 後臺服務管理類

7.11.1 service後臺服務管理

1)service network status   查看指定服務的狀態

2)service network stop    停止指定服務

3)service network start    啓動指定服務

4)service network restart   重啓指定服務

5)service --status-all      查看系統中所有的後臺服務

7.11.2 chkconfig設置後臺服務的自啓配置

1)chkconfig                     查看所有服務器自啓配置

2)chkconfig iptables off   關掉指定服務的自動啓動

3)chkconfig iptables on   開啓指定服務的自動啓動

7.12 crond系統定時任務

7.12.1 crond服務管理

[root@localhost ~]# service crond restart                   (重新啓動服務)

7.12.2 crontab定時任務設置

1)基本語法

crontab [選項]

選項:

  -e:    編輯crontab定時任務

  -l:    查詢crontab任務

  -r:    刪除當前用戶所有的crontab任務

2)參數說明

       [root@localhost ~]# crontab -e

(1)進入crontab編輯界面。會打開vim編輯你的工作。

* * * * * 執行的任務

項目 

含義 

範圍

第一個“*”

一小時當中的第幾分鐘

0-59

第二個“*”

一天當中的第幾小時

0-23

第三個“*”

一個月當中的第幾天

1-31

第四個“*”

一年當中的第幾月

1-12

第五個“*”

一週當中的星期幾

0-7(0和7都代表星期日)

(2)特殊符號

特殊符號

含義

*

代表任何時間。比如第一個“*”就代表一小時中每分鐘都執行一次的意思。

代表不連續的時間。比如“0 8,12,16 * * * 命令”,就代表在每天的8點0分,12點0分,16點0分都執行一次命令

-

代表連續的時間範圍。比如“0 5  *  *  1-6命令”,代表在週一到週六的凌晨5點0分執行命令

*/n

代表每隔多久執行一次。比如“*/10  *  *  *  *  命令”,代表每隔10分鐘就執行一遍命令

(3)特定時間執行命令

時間 

含義

45 22 * * * 命令

在22點45分執行命令

0 17 * * 1 命令

每週1 的17點0分執行命令

0 5 1,15 * * 命令

每月1號和15號的凌晨5點0分執行命令

40 4 * * 1-5 命令

每週一到週五的凌晨4點40分執行命令

*/10 4 * * * 命令

每天的凌晨4點,每隔10分鐘執行一次命令

0 0 1,15 * 1 命令

每月1號和15號,每週1的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,因爲他們定義的都是天。非常容易讓管理員混亂。

3)案例:

*/5 * * * * /bin/echo ”11” >> /tmp/test

八、rpm

8.1 概述

RPM(RedHat Package Manager),Rethat軟件包管理工具,類似windows裏面的setup.exe

 是Linux這系列操作系統裏面的打包安裝工具,它雖然是RedHat的標誌,但理念是通用的。

RPM包的名稱格式

Apache-1.3.23-11.i386.rpm

  • “apache” 軟件名稱
  • “1.3.23-11”軟件的版本號,主版本和此版本
  • “i386”是軟件所運行的硬件平臺
  • “rpm”文件擴展名,代表RPM包

8.2 常用命令

8.2.1 查詢

1)基本語法:

rpm –qa                       (功能描述:查詢所安裝的所有rpm軟件包)

過濾

rpm –qa | grep rpm軟件包

2)案例

       [root@hadoop100 Packages]# rpm -qa |grep firefox

firefox-45.0.1-1.el6.centos.x86_64

8.2.2 卸載

1)基本語法:

(1)rpm -e RPM軟件包   

或者(2) rpm -e --nodeps 軟件包  

--nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。

2)案例

[root@hadoop100 Packages]# rpm -e firefox

8.2.3 安裝

1)基本語法:

       rpm –ivh RPM包全名

              -i=install,安裝

              -v=verbose,顯示詳細信息

              -h=hash,進度條

                  --nodeps,不檢測依賴進度

2)案例

[root@hadoop100 Packages]# pwd

/media/CentOS_6.8_Final/Packages

 

[root@hadoop100 Packages]# rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm

warning: firefox-45.0.1-1.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

Preparing...                ########################################### [100%]

   1:firefox                ########################################### [100%]

九、shell編程

9.1 概述

Shell是一個命令行解釋器,它爲用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶可以用Shell來啓動、掛起、停止甚至是編寫一些程序。

Shell還是一個功能相當強大的編程語言,易編寫、易調試、靈活性強。Shell是解釋執行的腳本語言,在Shell中可以調用Linux系統命令。

9.2 shell腳本的執行方式

1)echo輸出命令

       (1)基本語法:

              echo [選項] [輸出內容]

選項:

  -e:  支持反斜線控制的字符轉換

控制字符 

作        用

\\ 

輸出\本身

\a 

輸出警告音

\b 

退格鍵,也就是向左刪除鍵

\c 

取消輸出行末的換行符。和“-n”選項一致

\e 

ESCAPE鍵

\f  

換頁符

\n 

換行符

\r 

回車鍵

\t 

製表符,也就是Tab鍵

\v 

垂直製表符

\0nnn

按照八進制ASCII碼錶輸出字符。其中0爲數字零,nnn是三位八進制數

\xhh

按照十六進制ASCII碼錶輸出字符。其中hh是兩位十六進制數

       2)案例

              [atguigu@hadoop102 sbin]$ echo "helloworld"

helloworld

2)第一個Shell腳本

(1)需求:創建一個Shell腳本,輸出helloworld

(2)實操:

[atguigu@hadoop102 datas]$ touch helloworld.sh

[atguigu@hadoop102 datas]$ vi helloworld.sh

 

在helloworld.sh中輸入如下內容

#!/bin/bash  

echo "helloworld"

3)腳本的常用執行方式

第一種:輸入腳本的絕對路徑或相對路徑

(1)首先要賦予helloworld.sh 腳本的+x權限

[atguigu@hadoop102 datas]$ chmod 777 helloworld.sh

(2)執行腳本

       /root/helloWorld.sh

       ./helloWorld.sh

第二種:bash或sh+腳本(不用賦予腳本+x權限)

       sh /root/helloWorld.sh

       sh helloWorld.sh

9.3 shell中的變量

1)Linux Shell中的變量分爲“系統變量”和“用戶自定義變量”,可以通過set命令查看系統變量。

2)系統變量:$HOME、$PWD、$SHELL、$USER等等

3)顯示當前shell中所有變量:set

9.3.1 定義變量

1)基本語法:

       變量=值

2)變量定義規則

       (1)變量名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。

       (2)等號兩側不能有空格

       (3)變量名稱一般習慣爲大寫

       (4)雙引號和單引號有區別,雙引號僅將空格脫意,單引號會將所有特殊字符脫意

3)案例

       (1)定義變量A

A=8              

       (2)撤銷變量A

unset A      

       (3)聲明靜態的變量B=2,不能unset

readonly B=2 

       (4)可把變量提升爲全局環境變量,可供其他shell程序使用

export 變量名  

9.3.2 將命令的返回值賦給變量

       A=`ls -la` 反引號,運行裏面的命令,並把結果返回給變量A

       A=$(ls -la) 等價於反引號

9.3.3 設置環境變量

1)基本語法:

       (1)export 變量名=變量值      (功能描述:設置環境變量的值)

(2)echo $變量名                    (功能描述:查詢環境變量的值)

(3)source 配置文件               (功能描述:讓修改後的配置信息立即生效)

2)案例:

       (1)在/etc/profile文件中定義JAVA_HOME環境變量

       export JAVA_HOME=/opt/module/jdk1.7.0_79

export PATH=$PATH:$JAVA_HOME/bin

 

(2)查看環境變量JAVA_HOME的值

       [atguigu@hadoop102 datas]$ echo $JAVA_HOME

/opt/module/jdk1.7.0_79

9.3.4 位置參數變量

1)基本語法

       $n   (功能描述:n爲數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數,十以上的參數需要用大括號包含,如${10})

       $*   (功能描述:這個變量代表命令行中所有的參數,$*把所有的參數看成一個整體)

       $@  (功能描述:這個變量也代表命令行中所有的參數,不過$@把每個參數區分對待)

       $#   (功能描述:這個變量代表命令行中所有參數的個數)

2)案例

       (1)計算輸入的參數1和參數2的兩個數的和,並輸出到控制檯

#!/bin/bash

num1=$1

num2=$2

sum=$(( $num1 + $num2))

#變量sum的和是num1加num2

echo $sum

#打印變量sum的值

       (2)打印輸入的參數總數、所有參數

#!/bin/bash

echo "A total of $# parameters"

#使用$#代表所有參數的個數

echo "The parameters is: $*"

#使用$*代表所有的參數

echo "The parameters is: $@"

#使用$@也代表所有參數

       (3)$*與$@的區別

#!/bin/bash

for i in "$*"

#$*中的所有參數看成是一個整體,所以這個for循環只會循環一次

        do

                echo "The parameters is: $i"

        done

x=1

for y in "$@"

#$@中的每個參數都看成是獨立的,所以“$@”中有幾個參數,就會循環幾次

        do

                echo "The parameter$x is: $y"

                x=$(( $x +1 ))

        done

a)$*和$@都表示傳遞給函數或腳本的所有參數,不被雙引號“”包含時,都以$1 $2 …$n的形式輸出所有參數

b)當它們被雙引號“”包含時,“$*”會將所有的參數作爲一個整體,以“$1 $2 …$n”的形式輸出所有參數;“$@”會將各個參數分開,以“$1” “$2”…”$n”的形式輸出所有參數

9.3.5 預定義變量

1)基本語法:

       $?         (功能描述:最後一次執行的命令的返回狀態。如果這個變量的值爲0,證明上一個命令正確執行;如果這個變量的值爲非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。)

$$          (功能描述:當前進程的進程號(PID))

$!           (功能描述:後臺運行的最後一個進程的進程號(PID))

2)案例

#!/bin/bash

#輸出當前進程的PID,這個PID就是當前這個腳本執行時,生成的進程的PID

echo "The current process is $$"

 

#使用find命令在root目錄下查找hello.sh文件,符號&的意思是把命令放入後臺執行

find /root -name hello.sh &

 

echo "The last one Daemon process is $!"

 

echo "$?"

9.4 運算符

1)基本語法:

(1)“$((運算式))”或“$[運算式]”

(2)expr m + n

注意expr運算符間要有空格

2)案例:計算(2+3)X4的值

       (1)採用$[運算式]方式

       [root@hadoop102 datas]# S=$[(2+3)*4]

[root@hadoop102 datas]# echo $S

       (2)expr分佈計算

              S=`expr 2 + 3`

              expr $S \* 4

       (3)expr一步完成計算

              expr `expr 2 + 3` \* 4

              echo `expr \`expr 2 + 3\`\*4`

9.5 條件判斷

9.5.1 判斷語句

1)基本語法:

[ condition ](注意condition前後要有空格

#非空返回true,可使用$?驗證(0爲true,>1爲false)

2)案例:

[atguigu]       返回true

[]                  返回false

[condition] && echo OK || echo notok               條件滿足,執行後面的語句

9.5.2 常用判斷條件

1)兩個整數之間比較

= 字符串比較

-lt 小於

-le 小於等於

-eq 等於

-gt 大於

-ge 大於等於

-ne 不等於

2)按照文件權限進行判斷

-r 有讀的權限

-w 有寫的權限

-x 有執行的權限

3)按照文件類型進行判斷

-f 文件存在並且是一個常規的文件

-e 文件存在

-d 文件存在並是一個目錄

4)案例

       (1)23是否大於等於22

[root@localhost ~]# [ 23 -ge 22 ]

       2student.txt是否具有寫權限

[root@localhost ~]# [ -w student.txt ]

       3/root/install.log目錄中的文件是否存在

[root@localhost ~]# [ -e /root/install.log ]

9.6 流程控制

9.6.1 if判斷

1)基本語法:

if [ 條件判斷式 ];then

  程序

fi

或者

if [ 條件判斷式 ]

  then

    程序

fi

       注意事項:(1)[ 條件判斷式 ],中括號和條件判斷式之間必須有空格

2)案例

#!/bin/bash

read –p “please input your name:” NAME

#printf ‘%s\n’ $NAME

if[ $NAME = root ]

then

    echo “hello ${NAME}, welcome !”

elif [ $NAME = atguigu]

    then

        echo “hello ${NAME}, welcome !”

else

    echo “sorry ”

fi

9.6.2 case語句

1)基本語法:

case $變量名 in

  "值1")

    如果變量的值等於值1,則執行程序1

    ;;

  "值2")

    如果變量的值等於值2,則執行程序2

    ;;

  …省略其他分支…

  *)

    如果變量的值都不是以上的值,則執行此程序

    ;;

esac

2)案例

case $1 in

start)

       echo “starting”

       ;;

stop)

       echo “stoping”

       ;;

*)

       echo “Usage:{start|stop}”

esac

9.6.3 for循環

1)基本語法1:

for 變量 in 值1 值2 值3…

  do

    程序

  done

2)案例:

       (1)打印時間

#!/bin/bash

#打印時間

 

for time in morning noon afternoon evening

    do

      echo "This time is $time!"

    done

3)基本語法2:

       for (( 初始值;循環控制條件;變量變化 ))

  do

    程序

  done

4)案例

(1)從1加到100

#!/bin/bash

#從1加到100

 

s=0

for (( i=1;i<=100;i=i+1 ))

        do

                s=$(( $s+$i ))

        done

echo "The sum is : $s"

9.6.4 while循環

1)基本語法:

while [ 條件判斷式 ]

  do

    程序

  done

2)案例

       (1)從1加到100

#!/bin/bash

#從1加到100

 

i=1

s=0

while [ $i -le 100 ]

#如果變量i的值小於等於100,則執行循環

    do

        s=$(( $s+$i ))

        i=$(( $i+1 ))

    done

echo "The sum is: $s"

9.7 read讀取控制檯輸入

1)基本語法:

       read(選項)(參數)

       選項:

-p:指定讀取值時的提示符;

-t:指定讀取值時等待的時間(秒)。

參數      

       變量:指定讀取值的變量名

2)案例

       讀取控制檯輸入的名稱

[atguigu@hadoop101 etc]$ read -p "please input your name:" NAME

please input your name:lilei

[atguigu@hadoop101 etc]$ echo $NAME

lilei

9.8 函數

9.8.1 系統函數

1)basename基本語法

basename [pathname] [suffix]       

basename [string] [suffix]    (功能描述:basename命令會刪掉所有的前綴包括最後一個(‘/’)字符,然後將字符串顯示出來。

選項:

suffix爲後綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。

2)案例

[atguigu@hadoop102 opt]$ basename /opt/test.txt

test.txt

[atguigu@hadoop102 opt]$ basename /opt/test.txt .txt

test

3)dirname基本語法

       dirname 文件絕對路徑        (功能描述:從給定的包含絕對路徑的文件名中去除文件名(非目錄的部分),然後返回剩下的路徑(目錄的部分))

4)案例

       [atguigu@hadoop102 opt]$ dirname /opt/test.txt

/opt

9.8.2 自定義函數

1)基本語法:

       [ function ] funname[()]

       {

              Action;

              [return int;]

       }

      

       function start() / function start / start()

注意:

       (1)必須在調用函數地方之前,先聲明函數,shell腳本是逐行運行。不會像其它語言一樣先編譯。

       (2)函數返回值,只能通過$?系統變量獲得,可以顯示加:return返回,如果不加,將以最後一條命令運行結果,作爲返回值。return後跟數值n(0-255)

2)案例

       (1)打印出比你輸入小的所有數(單參)

#!/bin/bash  

function LoopPrint()   

{   

    count=0;   

    while [ $count -lt $1 ] ;   

    do   

              echo $count;       

              expr ++count; 

              sleep 1;   

    done   

    return 0;   

read -p "Please input the number: " n;   

LoopPrint $n; 

       (2)多參

#!/bin/bash  

function LoopPrint()   

{   

    echo $2 

    count=0;   

    while  [ $count -lt $1 ];   

    do   

              echo $count;   

              expr ++count;   

              sleep 1;   

    done   

    return 0;   

read -p "Please input the num1: " n;   

read -p "Please input the num2: " m; 

LoopPrint $n $m;

十、yum倉庫配置

10.1 概述

YUM(全稱爲 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。

在Linux上使用源碼的方式安裝軟件非常滿分,使用yum可以簡化安裝的過程

10.2 yum的常用命令

1)基本語法:

yum install -y httpd               (功能描述:安裝httpd並確認安裝

yum list                              (功能描述:列出所有可用的package和package組

yum clean all                       (功能描述:清除所有緩衝數據)

yum deplist httpd                 (功能描述:列出一個包所有依賴的包)

yum remove httpd                (功能描述:刪除httpd

2)案例實操

       yum install -y tree

10.3 關聯網絡yum源

1)前期文件準備

(1)前提條件linux系統必須可以聯網

(2)在Linux環境環境中訪問該網絡地址:http://mirrors.163.com/.help/centos.html,在使用說明中點擊CentOS6->再點擊保存

 

(3)查看文件保存的位置

 

在打開的終端中輸入如下命令,就可以找到文件的保存位置。

[atguigu@hadoop101 下載]$ pwd

/home/atguigu/下載

2)替換本地yum文件

       (1)把下載的文件移動到/etc/yum.repos.d/目錄

[root@hadoop101 下載]# mv CentOS6-Base-163.repo /etc/yum.repos.d/

    (2)進入到/etc/yum.repos.d/目錄

[root@hadoop101 yum.repos.d]# pwd

/etc/yum.repos.d

    (3)用CentOS6-Base-163.repo替換CentOS-Base.rep

[root@hadoop101 yum.repos.d]# mv CentOS6-Base-163.repo  CentOS-Base.rep

3)安裝命令

       (1)[root@hadoop101 yum.repos.d]#yum clean all

    (2)[root@hadoop101 yum.repos.d]#yum makecache

10.4 製作本地yum源

1)爲什麼要製作本地YUM源

YUM源雖然可以簡化我們在Linux上安裝軟件的過程,但是生成環境通常無法上網,不能連接外網的YUM源,說以接就無法使用yum命令安裝軟件了。爲了在內網中也可以使用yum安裝相關的軟件,就要配置yum源。

YUM源其實就是一個保存了多個RPM包的服務器,可以通過http的方式來檢索、下載並安裝相關的RPM包

 

2)製作本地YUM源

(1)準備一臺Linux服務器,版本CentOS-6.8-x86_64-bin-DVD1.iso

(2)配置好這臺服務器的IP地址

(3)將CentOS-6.8-x86_64-bin-DVD1.iso鏡像掛載到/mnt/cdrom目錄

[root@hadoop101 /]# mkdir /mnt/cdrom

 [root@hadoop101 /]# mount -t iso9660 /dev/cdrom /mnt/cdrom

(4)修改本機上的YUM源配置文件,將源指向自己

備份原有的YUM源的配置文件

[root@hadoop101 /]# cd /etc/yum.repos.d/

[root@hadoop101 yum.repos.d]# cp CentOS-Base.repo  CentOS-Base.repo.bak

              編輯CentOS-Base.repo文件

[root@hadoop101 yum.repos.d]# vi CentOS-Base.repo

[base]

name=CentOS-Local

baseurl=file:///var/iso

gpgcheck=1

enabled=1   #增加改行,使能

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

添加上面內容保存退出

(6)清除YUM緩衝

[root@hadoop101 yum.repos.d]# yum clean all

(7)列出可用的YUM源

[root@hadoop101 yum.repos.d]# yum repolist

(8)安裝相應的軟件

[root@hadoop101 yum.repos.d]#yum install -y httpd

(9)開啓httpd使用瀏覽器訪問http://192.168.11.101:80(如果訪問不通,檢查防火牆是否開啓了80端口或關閉防火牆)

[root@hadoop101 yum.repos.d]#service httpd start

(10)將YUM源配置到httpd(Apache Server)中,其他的服務器即可通過網絡訪問這個內網中的YUM源了

[root@hadoop101 yum.repos.d]#cp -r /mnt/cdrom/ /var/www/html/CentOS

(11)取消先前掛載的鏡像

[root@hadoop101 yum.repos.d]#umount /mnt/cdrom

(12)在瀏覽器中訪問http://192.168.11.101/CentOS/

 

(13)讓其他需要安裝RPM包的服務器指向這個YUM源,準備一臺新的服務器,備份或刪除原有的YUM源配置文件

備份原有的YUM源的配置文件

[root@hadoop102 /]#cd /etc/yum.repos.d/

[root@hadoop102 yum.repos.d]# cp CentOS-Base.repo  CentOS-Base.repo.bak

              編輯CentOS-Base.repo文件

[root@hadoop102 yum.repos.d]# vi CentOS-Base.repo

[base]

name=CentOS-hadoop101

baseurl=http://192.168.11.101/CentOS

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

添加上面內容保存退出

(14)在這臺新的服務器上執行YUM的命令

[root@hadoop102 yum.repos.d]# yum clean all

[root@hadoop102 yum.repos.d]# yum repolist

 

 

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