Linux內核最初只是由芬蘭人林納斯·託瓦茲(Linus Torvalds)在赫爾辛基大學上學時出於我的愛好而編寫的。
Linux是一套無償使用和自由傳播的類Unix操做系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操做系統。Linux能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡爲核心的設計思想,是一個性能穩定的多用戶網絡操做系統。
目前市面上較知名的發行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSEhtml
centos下載地址:
網易鏡像:http://mirrors.163.com/centos/6/isos/
搜狐鏡像:http://mirrors.sohu.com/centos/6/isos/前端
Linux裏面一切皆是文件
Linux裏面沒有後綴名這一說java
目前國內Linux更多的是應用與服務器上,而桌面操做系統更多使用的是window。主要區別以下。node
比較 | Window | Linux |
---|---|---|
界面 | 界面統一,外殼程序固定全部Windows程序菜單幾乎一致,快捷鍵也幾乎相同 | 圓形界面風格依發佈版本不一樣而不一樣,可能互不兼容。GNU/Linux的終端機是從UNIX傳承下來,基本命令和操做方法也幾乎一致。 |
驅動程序 | 驅動程序豐富,版本更新頻繁。默認安裝程序裏面通常包含有該版本發佈時流行的硬件驅動程序,以後所出的新硬件驅動依賴於硬件廠商提供。對於一些老硬件,若是沒有了原配的驅動有時候很難支持。另外,有時硬件廠商未提供所需版本的Windows下的驅動,也會比較頭痛。 | 由志願者開發,由Linux核心開發小組發佈,不少硬件廠商基於版本考慮並未提供驅動程序,儘管多數無需手動安裝,可是涉及安裝則相對複雜,使得新用戶面對驅動程序問題會束手無策。可是在開源開發模式下,許多老硬件儘管在Windows下很難支持的也容易找到驅動。HP、Intel、AMD等硬件廠商逐步不一樣程序支持開源驅動,問題正在獲得緩解。 |
使用 | 使用比較簡單,容易入門。圓形化界面對沒有計算機背景知識的用戶使用十分有利。 | 圓形界面使用簡單,容易入門。文字界面,須要學習才能掌握。 |
學習 | 系統構造複雜、變化頻繁、且知識、技能淘汰快,深刻學習困難 | 系統構造簡單、穩定,且知識、技能傳承性好,深刻學習相對容易 |
軟件 | 每一種特定功能可能都須要商業軟件的支持,須要購買相應的受權 | 大部分軟件均可以自由獲取,一樣功能的軟件選擇較少。 |
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文件mysql
最後用「./vmware-install.pl」命令來運行該安裝程序,而後根據屏幕提示一路回車。到此整個安裝過程算是完成了。
7)直接按到/dev/hdc…中止爲止,安裝完成
8)重啓CentOS, 這時候屏幕變成全屏了
9)設置共享文件夾,實現Windows --------CentOS文件共享
linux
1)異常狀況
2)宿主機BIOS設置中的硬件虛擬化被禁用了
須要打開筆記本BIOS中的IVT對虛擬化的支持
程序員
/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:這個目錄中存放着在不斷擴充着的東西,咱們習慣將那些常常被修改的目錄放在這個目錄下。包括各類日誌文件。web
全部的 Unix Like 系統都會內建 vi 文書編輯器,其餘的文書編輯器則不必定會存在。可是目前咱們使用比較多的是 vim 編輯器。
Vim 具備程序編輯的能力,能夠主動的以字體顏色辨別語法的正確性,方便程序設計。Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。
簡單的來講vi 是老式的字處理器,不過功能已經很齊全了,可是仍是有能夠進步的地方。vim 則能夠說是程序開發者的一項很好用的工具。連vim 的官方網站 (http://www.vim.org) 本身也說 vim 是一個程序開發工具而不是文字處理軟件。sql
以 vi 打開一個檔案就直接進入通常模式了(這是默認的模式)。在這個模式中, 你可使用『上下左右』按鍵來移動光標,你可使用『刪除字符』或『刪除整行』來處理檔案內容, 也可使用『複製、貼上』來處理你的文件數據。
經常使用語法
1)yy (功能描述:複製光標當前一行)
y數字y (功能描述:複製一段(從第幾行到第幾行))
2)p (功能描述:箭頭移動到目的行粘貼)
3)u (功能描述:撤銷上一步)
4)dd (功能描述:刪除光標當前行)
d數字d (功能描述:刪除光標(含)後多少行)
5)x (功能描述:刪除一個字母,至關於del)
X (功能描述:刪除一個字母,至關於Backspace)shell
6)yw (功能描述:複製一個詞)
7)dw (功能描述:刪除一個詞)
8)shift+^ (功能描述:移動到行頭)
9)shift+$ (功能描述:移動到行尾)
10)1+shift+g (功能描述:移動到頁頭,數字)
11)shift+g (功能描述:移動到頁尾)
12)數字N+shift+g (功能描述:移動到目標行)
在通常模式中能夠進行刪除、複製、貼上等等的動做,可是卻沒法編輯文件內容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一個字母以後纔會進入編輯模式。
注意了!一般在 Linux 中,按下這些按鍵時,在畫面的左下方會出現『INSERT 或 REPLACE 』的字樣,此時才能夠進行編輯。而若是要回到通常模式時, 則必需要按下『Esc』這個按鍵便可退出編輯模式。
經常使用語法
1)進入編輯模式
(1)i 當前光標前
(2)a 當前光標後
(3)o 當前光標行的下一行
2)退出編輯模式
按『Esc』鍵
在通常模式當中,輸入『 : / ?』3箇中的任何一個按鈕,就能夠將光標移動到最底下那一行。
在這個模式當中, 能夠提供你『搜尋資料』的動做,而讀取、存盤、大量取代字符、離開 vi 、顯示行號等動做是在此模式中達成的!
經常使用語法
1)基本語法
(1): 選項
選項:
w 保存
q 退出
! 感嘆號強制執行
(2)/ 查找,/被查找詞,n是查找下一個,shift+n是往上查找
(3)? 查找,?被查找詞,n是查找上一個,shift+n是往下查找
2)案例
:wq! 強制保存退出
1)查看虛擬網絡編輯器
2)修改ip地址
WMnet0:連得無線的網
WMnet1:僅主機模式,在專用網絡內鏈接的虛擬主機
WMnet8:NAT模式,與虛擬主機共享主機的ip地址
打開windows的設置中,控制面板==》更改適配器設置,就會多出兩個WMnet0(無線)、WMnet8(NAT),右擊屬性中點擊TCP/IPv4能夠設置ip地址,子網掩碼等,儘可能將WMnet8設置成xx:xx:1:xx,這樣後期能夠設置聯網,要否則連不上網
通常是1.1後者1.2
3)查看網關
設置成手動的靜態ip,由於未來配置集羣的時候弄成自動的,次日ip變了,寫的程序都運行不起來了
若是是動態的,經過ifconfig是看不到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)修改前
ONBOOT修改成yes
BOOTPEROTO默認是dhcp(動態),修改成static(靜態的手動配置)
IPADDR修改成本身想要的ip
GATEWAY修改成本身的網關(上面有配置),10.x或者1.x均可以
DNS1=192.168.1.2(dns服務器)
(2)修改後
:wq 保存退出
3)執行service network restart 重啓網卡
4)若是報錯,reboot,重啓虛擬機
5)經過ifconfig查看ip地址
6)而後就能夠聯網了
查看windows的ip ipconfig==>查看VMnet1(無線網)的ip==>在虛擬機中ping xx:xx:xx:xx(windows的無線網ip),發現可以ping通
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(配置的好處:加入有十萬個文件須要配置這個ip,若是ip變了,豈不是要一個一個修改,若是在這裏配置了,只須要在這裏進行配置就好了)
(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
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:系統未使用,保留
運行級別5:X11控制檯,登錄後進入圖形GUI模式
運行級別6:系統正常關閉並重啓,默認運行級別不能設爲6,不然不能正常啓動,關了又開開了又關,永不停歇。
在linux領域內大多用在服務器上,不多遇到關機的操做。畢竟服務器上跑一個服務是永無止境的,除非特殊狀況下,不得已纔會關機 。
正確的關機流程爲:sync > shutdown > reboot > halt
1)基本語法:
(1)sync (功能描述:將數據由內存同步到硬盤中)執行完看不到任何反應,可是已經作了相關的功能。
(2)shutdown [選項] 時間 (功能描述。定時的關機重啓)
選項:
-h:關機
-r:重啓
例如:shutdown -r 1 」1 minute reboot「 1是1分鐘以後重啓,後面引號中的內容是註釋
也能夠shutdown -r now
(3)halt (功能描述:關閉系統,就是關機,等同於shutdown –h now 和 poweroff)
(4)reboot (功能描述:就是重啓,等同於 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命令,把內存中的數據寫到磁盤中。
從新安裝系統嗎?固然不用!進入單用戶模式更改一下root密碼便可。
1)重啓Linux,見到下圖,在3秒鐘以內按下回車
2)三秒以內要按一下回車,出現以下界面
3)按下e鍵就能夠進入下圖
4)移動到下一行,再次按e鍵
5)移動到下一行,進行修改
修改完成後回車鍵,而後按b鍵進行從新啓動進入系統
6)移動到下一行,進行修改
最終修改完密碼,reboot一下便可。
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解決
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
1)基本語法:
help 命令 (功能描述:得到shell內置命令的幫助信息)
2)案例:
[root@hadoop101 bin]# help cd
1)ctrl + c:中止進程
2)ctrl+l:清屏
3)ctrl + q:退出
4)善於用tab鍵
5)上下鍵:查找執行過的命令
6)ctrl +alt:linux和Windows之間切換
1)基本語法:
pwd (功能描述:顯示當前工做目錄的絕對路徑)
2)案例
[root@hadoop106 home]# pwd
/home
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
1)基本語法:
mkdir [-p] 要建立的目錄
選項:
-p:建立多層目錄
2)案例
[root@hadoop106 opt]# mkdir test
[root@hadoop106 opt]# mkdir -p user/atguigu
1)基本語法:
rmdir 要刪除的空目錄
2)案例
[root@hadoop106 opt]# mkdir test
[root@hadoop106 opt]# rmdir test
1)基本語法:
touch 文件名稱
2)案例
[root@hadoop106 opt]# touch test.java
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 …
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
1)基本語法
(1)rmdir deleteEmptyFolder (功能描述:刪除空目錄)
(2)rm -rf deleteFile (功能描述:遞歸刪除目錄中全部內容)
2)案例
1)刪除空目錄
[root@hadoop106 opt]# rmdir test
2)遞歸刪除目錄中全部內容
[root@hadoop106 opt]# rm -rf test1
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
查看文件內容,從第一行開始顯示。
1)基本語法
cat [選項] 要查看的文件
選項:
-A :至關於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
-b :列出行號,僅針對非空白行作行號顯示,空白行不標行號!
-E :將結尾的斷行字節 $ 顯示出來;
-n :列出行號,連同空白行也會有行號,與 -b 的選項不一樣;
-T :將 [tab] 按鍵以 ^I 顯示出來;
-v :列出一些看不出來的特殊字符
重點 -A -n
2)案例
[atguigu@hadoop101 ~]$ cat -A test.txt
hellda $
dasadf ^I$
daII^I$
das$
cat -A -n
查看文件內容,從最後一行開始顯示,能夠看出 tac 是 cat 的倒著寫。
1)基本語法:
tac [選項參數] 要查看的文件
2)案例
[root@hadoop106 test1]# cat test1.java
hello
atguigu
atguigu1
[root@hadoop106 test1]# tac test1.java
atguigu1
atguigu
hello
查看文件內容,一頁一頁的顯示文件內容。
1)基本語法:
more 要查看的文件
2)功能使用說明
空白鍵 (space):表明向下翻一頁;
Enter:表明向下翻『一行』;
q:表明馬上離開 more ,再也不顯示該文件內容。
Ctrl+F 向下滾動一屏
Ctrl+B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
3)案例
[root@hadoop106 test1]# more test1.java
less 的做用與 more 十分類似,均可以用來瀏覽文字檔案的內容,不一樣的是 less 容許使用[pageup] [pagedown]往回滾動。
1)基本語法:
less 要查看的文件
2)功能使用說明
空白鍵 :向下翻動一頁;
[pagedown]:向下翻動一頁;
[pageup] :向上翻動一頁;
/字串 :向下搜尋『字串』的功能;n:向下查找;N:向上查找;
?字串 :向上搜尋『字串』的功能;n:向上查找;N:向下查找;
q :離開 less 這個程序;
3)案例
[root@hadoop106 test1]# less test1.java
查看文件內容,只看頭幾行。
1)基本語法
head -n 10 文件 (功能描述:查看文件頭10行內容,10能夠是任意行數)
2)案例
[root@hadoop106 test1]# head -n 2 test1.java
hello
atguigu
查看文件內容,只看尾巴幾行。
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
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
1)基本語法:
(1)echo 要顯示的內容 >> 存儲內容的的文件 (功能描述:將要顯示的內容,存儲到文件中)
(2)echo 變量 (功能描述:顯示變量的值)
2)案例
[root@hadoop106 test1]# echo $JAVA_HOME
/opt/module/jdk1.7.0_79
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
1)基本語法:
history
2)案例
[root@hadoop106 test1]# history
1)基本語法
date [OPTION]… [+FORMAT]
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
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
1)基本語法:
date -s 字符串時間
2)案例
[root@hadoop106 /]# date -s 「2017-06-19 20:52:18」
1)基本語法:
cal [選項] (功能描述:不加選項,顯示本月日曆)
選項:
-3 ,顯示系統前一個月,當前月,下一個月的日曆
具體某一年,顯示這一年的日曆。
2)案例:
[root@hadoop106 /]# cal
[root@hadoop106 /]# cal -3
[root@hadoop106 /]# cal 2016
1)基本語法:
useradd 用戶名 (功能描述:添加新用戶)
2)案例:
[root@hadoop101 opt]# user atguigu
1)基本語法:
passwd 用戶名 (功能描述:設置用戶密碼)
2)案例
[root@hadoop101 opt]# passwd atguigu
1)基本語法:
id 用戶名
2)案例:
[root@hadoop101 opt]#id atguigu
1)基本語法:
su 用戶名稱 (功能描述:切換用戶)
2)案例
[root@hadoop101 opt]#su atguigu
普通用戶切換到root目錄須要輸入密碼,root用戶切換到普通目錄不須要輸入密碼
1)基本語法:
(1)userdel 用戶名 (功能描述:刪除用戶但保存用戶主目錄(/home文件下面還有這個用戶的目錄))
(2)userdel -r 用戶名 (功能描述:用戶和用戶主目錄,都刪除(/home文件下面的用戶目錄也沒有了))
2)案例:
(1)刪除用戶但保存用戶主目錄
[root@hadoop101 opt]#userdel atguigu (須要切換到root才能刪除,本身不能刪除本身,可是若是從atguigu用戶su root 到root也是不能刪除的,會提示,當前的atguigu用戶正在被使用,須要執行exit退出到atguigu用戶,再執行exit退出到root用戶,才能刪除)
(2)刪除用戶和用戶主目錄,都刪除
[root@hadoop101 opt]#userdel –r atguigu
1)基本語法
(1)whoami (功能描述:顯示自身用戶名稱)
(2)who am i (功能描述:顯示登陸用戶的用戶名)
(3)who (功能描述:看當前有哪些用戶登陸到了本臺機器上)
2)案例
[root@hadoop101 opt]# whoami
[root@hadoop101 opt]# who am i
[root@hadoop101 opt]# who
假如目前是atguigu用戶,在/opt目錄下面想要建立a目錄會發現麼有權限
1)修改配置文件
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,以下所示:
## Allow root to run any commands anywhere root ALL=(ALL) ALL atguigu ALL=(ALL) ALL
修改完畢,如今能夠用atguigu賬號登陸,而後用命令 su - ,便可得到root權限進行操做。
2)案例
添加完上面的配置文件,就能夠經過下面的命令進行建立文件了(不須要經過atguigu登陸,上面只是說能夠,沒有說必須),仍是沒有權限就在命令前面加上sudo
[atguigu@hadoop101 opt]$ sudo mkdir module
[root@hadoop101 opt]# chown atguigu:atguigu module/
cat /etc/passwd
1)基本語法:
usermod -g 用戶組 用戶名
2)案例:
將用戶atguigu加入dev用戶組
[root@hadoop101 opt]#usermod –g dev atguigu
每一個用戶都有一個用戶組,系統能夠對一個用戶組中的全部用戶進行集中管理。不一樣Linux 系統對用戶組的規定有所不一樣,
如Linux下的用戶屬於與它同名的用戶組,這個用戶組在建立用戶時同時建立。
用戶組的管理涉及用戶組的添加、刪除和修改。組的增長、刪除和修改實際上就是對/etc/group文件的更新。
1)基本語法
groupadd 組名
2)案例:
添加一個atguigu組
[root@hadoop101 opt]#groupadd atguigu
1)基本語法:
groupdel 組名
2)案例
[root@hadoop101 opt]# groupdel atguigu
1)基本語法:
groupmod -n 新組名 老組名
2)案例
修改atguigu組名稱爲atguigu1
[root@hadoop101 atguigu]# groupmod –n atguigu1 atguigu
cat /etc/group
[root@hadoop101 atguigu]# groupadd dev
[root@hadoop101 atguigu]# groupmod -n device dev
//把atguigu分給device組中
[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
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
(5)第11位,連接數
連接數理解:
-rw-r–r-- 1 root root 762 07-29 18:19 exit
若是一個文件不是目錄,此時這一字段表示這個文件所具備的硬連接數,
第2字段的值爲1,說明這個文件只有exit這一個文件名。即只有一個指向該連接的硬連接。。
若是使用ln,作一個指向該文件的硬連接再查看該文件,該文件的第2字段就會變成2
各個字段詳細理解:https://blog.csdn.net/sjzs5590/article/details/8254527
(6)第12位,文件擁有者,即誰建立的
(7)第13位,用戶組
(8)第14位,文件大小
(9)第15位,建立時間
(10)第16位,文件名稱
文件類型 | 屬主權限 | 屬組權限 | 其餘用戶權限 |
---|---|---|---|
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
1)基本語法:
chmod [{ugoa}{±=}{rwx}] [文件或目錄] [mode=421 ] [文件或目錄]
2)功能描述
改變文件或者目錄權限
文件: r-查看;w-修改;x-執行文件
目錄: r-列出目錄內容;w-在目錄中建立和刪除;x-進入目錄
刪除一個文件的前提條件:該文件所在的目錄有寫權限,你才能刪除該文件。
3)案例
[root@hadoop106 test1]# chmod u+x test1.java 用戶權限u 添加x權限
[root@hadoop106 test1]# chmod u-x test1.java 用戶權限u 取出x權限
[root@hadoop106 test1]# chmod g+x test1.java 組權限g
[root@hadoop106 test1]# chmod o+x test1.java other權限o
[root@hadoop106 test1]# chmod a+x test1.java 所有權限a
111 111 111 1是有權限0是沒有權限,經過777表示三個權限
[root@hadoop106 test1]# chmod 777 test1.java
[root@hadoop106 test1]#chmod -R 777 testdir
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
1)基本語法:
chown [最終用戶] [文件或目錄] (功能描述:改變文件或者目錄的全部者)
2)案例
[root@hadoop106 test1]# chown atguigu test1.java 注意只有root(超級用戶)有權限
[root@hadoop106 test1]# ls –al
-rwxr-xr-x. 1 atguigu atguigu 551 5月 23 13:02 test1.java
chown atguigu:atguigu xxxxx 同時修改用戶和用戶組。
1)基本語法:
su –username (功能描述:切換用戶)
2)案例
[root@hadoop101 atguigu]# su atguigu
[atguigu@hadoop101 ~]$
[atguigu@hadoop101 ~]$ su root
密碼:
[root@hadoop101 atguigu]#
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
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
對於Linux用戶來說,不論有幾個分區,分別分給哪個目錄使用,它總歸就是一個根目錄、一個獨立且惟一的文件結構
Linux中每一個分區都是用來組成整個文件系統的一部分,她在用一種叫作「掛載」的處理方法,它整個文件系統中包含了一整套的文件和目錄,並將一個分區和一個目錄聯繫起來,要載入的那個分區將使它的存儲空間在這個目錄下得到。
關於掛載的解釋,一個不錯的文章:https://blog.csdn.net/qq_39521554/article/details/79501714
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)案例
剛纔若是安裝了光盤的話,在/media目錄下會出現剛纔的iso
(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
添加紅框中內容,保存退出。
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
1)基本語法
grep+參數+查找內容+源文件
參數:
-c:只輸出匹配行的計數。
-I:不區分大小寫(只適用於單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的全部行。
2)案例
[root@hadoop106 opt]# ls | grep -n test
4:test1
5:test2
1)基本語法:
which 命令 (功能描述:搜索命令所在目錄及別名信息)
2)案例
[root@hadoop101 opt]# which ls
/bin/ls
進程是正在執行的一個程序或命令,每個進程都是一個運行的實體,都有本身的地址空間,並佔用必定的系統資源。
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
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天 |
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對查詢出的進程結果進行排序。
1)基本語法:
pstree [選項]
選項
-p: 顯示進程的PID
-u: 顯示進程的所屬用戶
2)案例:
[root@hadoop102 datas]# pstree -u
[root@hadoop102 datas]# pstree -p
1)基本語法:
kill -9 pid進程號
選項
-9 表示強迫進程當即中止
2)案例:
啓動mysql程序
切換到root用戶執行
[root@hadoop102 桌面]# kill -9 5102
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
端口號 進程號
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
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
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
1)service network status 查看指定服務的狀態
2)service network stop 中止指定服務
3)service network start 啓動指定服務
4)service network restart 重啓指定服務
5)service --status-all 查看系統中全部的後臺服務
1)chkconfig 查看全部服務器自啓配置
2)chkconfig iptables off 關掉指定服務的自動啓動
3)chkconfig iptables on 開啓指定服務的自動啓動
[root@localhost ~]# service crond restart (從新啓動服務)
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)案例:
condtab -e
*/1 * * * * /bin/echo 」11」 >> /tmp/test.txt
tailf test.txt等待一分鐘會輸入進去
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包
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
1)基本語法:
(1)rpm -e RPM軟件包
或者(2) rpm -e --nodeps 軟件包
–nodeps 若是該RPM包的安裝依賴其它包,即便其它包沒裝,也強迫安裝。
2)案例
[root@hadoop100 Packages]# rpm -e firefox
首先須要掛載安裝的iso光盤,上面又講有關掛載的操做
例如CentOS-6.8-x86_64-bin-DVD1.iso(具體的從網上下載)
cd /mnt
mount -t iso9960 -o rw /dev/cdrom /mnt/cdrom/
cd /mnt/cdrom
ll
cd Packages
ll (發現有不少包)
ll | grep fire (找到fire相關的包,獲得rpm全名,而後就能夠安裝了)
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是一個命令行解釋器,它爲用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶能夠用Shell來啓動、掛起、中止甚至是編寫一些程序。
Shell仍是一個功能至關強大的編程語言,易編寫、易調試、靈活性強。Shell是解釋執行的腳本語言,在Shell中能夠調用Linux系統命令。
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
[atguigu@hadoop102 sbin]$ echo ’\a‘
注意:必須有單引號或者雙引號
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
1)Linux Shell中的變量分爲「系統變量」和「用戶自定義變量」,能夠經過set命令查看系統變量。
2)系統變量:
PWD、
USER等等($表示變量)
$HOME(當前用戶的家)
$PWD(當前的目錄)
$SHELL(/bin/bash)
$USER(登陸的用戶)
3)顯示當前shell中全部變量:set
1)基本語法:
變量=值
2)變量定義規則
(1)變量名稱能夠由字母、數字和下劃線組成,可是不能以數字開頭。
(2) 等號兩側不能有空格
(3)變量名稱通常習慣爲大寫
(4)雙引號和單引號有區別,雙引號僅將空格脫意,單引號會將全部特殊字符脫意
也就是說若是是雙引號,\t就會翻譯成空格,單引號就會直接輸出\t
若是但願單引號仍是可以輸出空格之類的,不脫意的話,就須要
echo -e ‘a\tb’
a b
3)案例
(1)定義變量A
A=8
(2)撤銷變量A
unset A
(3)聲明靜態的變量B=2,不能unset,不能修改
readonly B=2
(4)可把變量提高爲全局環境變量,可供其餘shell程序使用
export 變量名
A=`ls -la` 反引號,運行裏面的命令,並把結果返回給變量A A=$(ls -la) 等價於反引號
1)基本語法:
(1)export 變量名=變量值 (功能描述:設置環境變量的值)
(2)echo $變量名 (功能描述:查詢環境變量的值)
(3)source 配置文件 (功能描述:讓修改後的配置信息當即生效)
2)案例:
(1)在/etc/profile文件中定義JAVA_HOME環境變量
export JAVA_HOME=/opt/module/jdk1.7.0_79
export PATH=
JAVA_HOME/bin
(2)查看環境變量JAVA_HOME的值
[atguigu@hadoop102 datas]$ echo $JAVA_HOME
/opt/module/jdk1.7.0_79
1)基本語法
$n (功能描述:n爲數字,$0表明命令自己, $1-$9表明第一到第九個參數,十以上的參數,十以上的參數須要用大括號包含,如${10}) $* (功能描述:這個變量表明命令行中全部的參數,$*把全部的參數當作一個總體) $@ (功能描述:這個變量也表明命令行中全部的參數,不過$@把每一個參數區分對待) $# (功能描述:這個變量表明命令行中全部參數的個數)
2)案例
(1)計算輸入的參數1和參數2的兩個數的和,並輸出到控制檯
#!/bin/bash
num1=$1
num2=
(( $num1 + $num2))
#變量sum的和是num1加num2
echo $sum
#打印變量sum的值
(2)打印輸入的參數總數、全部參數
#!/bin/bash
echo "A total of KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ parameters" #…#表明全部參數的個數
echo "The parameters is: KaTeX parse error: Expected 'EOF', got '#' at position 5: *" #̲使用*表明全部的參數
echo "The parameters is: KaTeX parse error: Expected 'EOF', got '#' at position 5: @" #̲使用@也表明全部參數
(3)
@的區別
#!/bin/bash
for i in "KaTeX parse error: Expected 'EOF', got '#' at position 5: *" #̲*中的全部參數當作是一個總體,因此這個for循環只會循環一次
do
echo 「The parameters is:
@」
#
@」中有幾個參數,就會循環幾回
do
echo "The parameter$x is:
((
和$@都表示傳遞給函數或腳本的全部參數,不被雙引號「」包含時,都以$1
n的形式輸出全部參數
b)當它們被雙引號「」包含時,「$」會將全部的參數做爲一個總體,以「$1
n」的形式輸出全部參數;「$@」會將各個參數分開,以「$1」 「
n」的形式輸出全部參數
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 「$?」
注意這裏的$$ $! $?等都須要用」「包住
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`
1)基本語法:
[ condition ](注意condition先後要有空格)
#非空返回true,可以使用$?驗證(0爲true,>1爲false)
2)案例:
[atguigu] 返回true
[] 返回false
[condition] && echo OK || echo notok 條件知足,執行後面的語句
1)兩個整數之間比較
= 字符串比較
-lt 小於
-le 小於等於
-eq 等於
-gt 大於
-ge 大於等於
-ne 不等於
2)按照文件權限進行判斷
-r 有讀的權限
-w 有寫的權限
-x 有執行的權限
3)按照文件類型進行判斷
-f 文件存在而且是一個常規的文件
-e 文件存在
-d 文件存在並是一個目錄
4)案例
(1)23是否大於等於22
[root@localhost ~]# [ 23 -ge 22 ]
(2)student.txt是否具備寫權限
[root@localhost ~]# [ -w student.txt ]
(3)/root/install.log目錄中的文件是否存在
[root@localhost ~]# [ -e /root/install.log ]
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
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
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
經過這個案例也正好看到了$* 和 $@的區別,前者是一次性所有賦值給了i,後者是一個一個賦值給了i
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"
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"
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
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
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(全稱爲 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟件包,無須繁瑣地一次次下載、安裝。
在Linux上使用源碼的方式安裝軟件很是滿分,使用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
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
CentOS-Base.rep是默認的,將默認的備份一下,而後將剛剛下載的重命名爲默認的名字
3)安裝命令
(1)[root@hadoop101 yum.repos.d]#yum clean all
(2)[root@hadoop101 yum.repos.d]#yum makecache
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:///mnt/cdrom #將原來的下載源(centos官網)修改成本地的掛載地址 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.1.101:80(若是訪問不通,檢查防火牆是否開啓了80端口或關閉防火牆)
[root@hadoop101 yum.repos.d]#service httpd start
轉折點:將本地做爲yum源供其餘人用
能夠先克隆一個新的機器
而後配置新機器的ip : vi /etc/udev/rules.d/70-persistent-net.rules
將第一個方框的中內容刪除,將第二個中的name修改成eth0,而且複製ATTR[address],關係到密碼
vi /etc/sysconfig/network-scripts/ifconfig-0
將剛纔複製的內容粘貼過來
vi /etc/sysconfig/network
修改個名字
service network restart,若是失敗了就重啓
ping ww.baidu.com 成功便可
而後按照上面的進行掛載
啓動httpd
service httpd start
(10)將YUM源配置到httpd(Apache Server)中,其餘的服務器便可經過網絡訪問這個內網中的YUM源了
就是把掛載點裏面的東西,放到了httpd(/mnt/cdrom/ /var/www/html/CentOS目錄)中
[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.1.101/CentOS/
這裏的ip就是咱們剛剛將掛在元放到了httpd中這個操做的機器ip
(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
添加上面內容保存退出
主要就是修改 baseurl=http://192.168.11.101/CentOS 便可 就至關於經過網絡訪問的。這裏辦成了本地其餘主機的ip,使得本地可以訪問。 (14)在這臺新的服務器上執行YUM的命令 [root@hadoop102 yum.repos.d]# yum clean all [root@hadoop102 yum.repos.d]# yum repolist