大数据学习笔记之Linux基础(一):Linux初窥
文章目錄
- 一、Linux入門概述
- 1.1 概述
- 1.2 下載地址
- 1.3 Linux特點
- 1.4 Linux和Windows區(qū)別
- 二、VM安裝相關
- 2.1 安裝VMWare虛擬機
- 2.2 安裝CentOS
- 2.3 安裝VMTools工具
- 2.4 虛擬機屏幕保護設置
- 2.5 IVT虛擬化支持
- 三、Linux目錄結構
- 3.1 概覽
- 3.2 樹狀目錄結構
- 四、VI/VIM編輯器
- 4.1 概述
- 4.2 測試數(shù)據(jù)準備
- 4.3 一般模式
- 4.4 編輯模式
- 4.5 指令模式
- 五、系統(tǒng)管理操作
- 5.1 查看網(wǎng)絡IP和網(wǎng)關
- 5.2 配置網(wǎng)絡ip地址
- 5.3 配置主機名
- 5.4 防火墻
- 5.5 關機重啟
- 5.6 找回root密碼
- 六、遠程登錄
- 6.1 安裝SecureCRT
- 七、常用基本命令
- 7.1 幫助命令
- 7.1.1 man 獲得幫助信息
- 7.1.2 help 獲得shell內(nèi)置命令的幫助信息
- 7.1.3 常用快捷鍵
- 7.2 文件目錄類
- 7.2.1 pwd 顯示當前工作目錄的絕對路徑
- 7.2.2 ls 列出目錄的內(nèi)容
- 7.2.3 mkdir 創(chuàng)建一個新的目錄
- 7.2.4 rmdir 刪除一個空的目錄
- 7.2.5 touch 創(chuàng)建空文件
- 7.2.6 cd 切換目錄
- 7.2.7 cp 復制文件或目錄
- 7.2.8 rm 移除文件或目錄
- 7.2.9 mv 移動文件與目錄或重命名
- 7.2.10 cat 查看文件內(nèi)容
- 7.2.11 tac查看文件內(nèi)容
- 7.2.12 more 查看文件內(nèi)容
- 7.2.13 less 查看文件內(nèi)容
- 7.2.14 head查看文件內(nèi)容
- 7.2.15 tail 查看文件內(nèi)容
- 7.2.16 重定向命令
- 7.2.17 echo
- 7.2.18 ln軟鏈接
- 7.2.19 history查看所敲命令歷史
- 7.3 時間日期類
- 7.3.1 date顯示當前時間
- 7.3.2 date顯示非當前時間
- 7.3.3 date設置系統(tǒng)時間
- 7.3.4 cal查看日歷
- 7.4 用戶管理命令
- 7.4.1 useradd 添加新用戶
- 7.4.2 passwd 設置用戶密碼
- 7.4.3 id 判斷用戶是否存在
- 7.4.4 su 切換用戶
- 7.4.5 userdel 刪除用戶
- 7.4.6 who 查看登錄用戶信息
- 7.4.7 設置atguigu普通用戶具有root權限
- 7.4.8 cat /etc/passwd 查看創(chuàng)建了哪些組
- 7.4.9 usermod修改用戶
- 7.5 用戶組管理命令
- 7.5.1 groupadd 新增組
- 7.5.2 groupdel刪除組
- 7.5.3 groupmod修改組
- 7.5.4 cat /etc/group 查看創(chuàng)建了哪些組
- 7.5.5 綜合案例
- 7.6 文件權限類
- 7.6.1 文件屬性
- 7.6.2 chmod改變權限
- 7.6.3 chgrp改變所屬組
- 7.6.4 chown改變所有者
- 7.6.5 su 切換用戶
- 7.7 磁盤分區(qū)類
- 7.7.1 fdisk查看分區(qū)
- 7.7.2 df查看硬盤
- 7.7.3 mount/umount掛載/卸載
- 7.8 搜索查找類
- 7.8.1 find 查找文件或者目錄
- 7.8.2 grep 在文件內(nèi)搜索字符串匹配的行并輸出
- 7.8.3 which 文件搜索命令
- 7.9 進程線程類
- 7.9.1 ps查看系統(tǒng)中所有進程
- 7.9.2 top查看系統(tǒng)健康狀態(tài)
- 7.9.3 pstree查看進程樹
- 7.9.4 kill終止進程
- 7.9.5 netstat顯示網(wǎng)絡統(tǒng)計信息
- 7.10 壓縮和解壓類
- 7.10.1 gzip/gunzip壓縮
- 7.10.2 zip/unzip壓縮
- 7.10.3 tar打包
- 7.11 后臺服務管理類
- 7.11.1 service后臺服務管理
- 7.11.2 chkconfig設置后臺服務的自啟配置
- 7.12 crond系統(tǒng)定時任務
- 7.12.1 crond服務管理
- 7.12.2 crontab定時任務設置
- 7.1 幫助命令
- 八、rpm(了解即可,比較麻煩)
- 8.1 概述
- 8.2 常用命令
- 8.2.1 查詢
- 8.2.2 卸載
- 8.2.3 安裝
- 九、shell編程
- 9.1 概述
- 9.2 shell腳本的執(zhí)行方式
- 9.3 shell中的變量
- 9.3.1 定義變量
- 9.3.2 將命令的返回值賦給變量
- 9.3.3 設置環(huán)境變量
- 9.3.4 位置參數(shù)變量
- 9.3.5 預定義變量
- 9.4 運算符
- 9.5 條件判斷
- 9.5.1 判斷語句
- 9.5.2 常用判斷條件
- 9.6 流程控制
- 9.6.1 if判斷
- 9.6.2 case語句
- 9.6.3 for循環(huán)
- 9.6.4 while循環(huán)
- 9.7 read讀取控制臺輸入
- 9.8 函數(shù)
- 9.8.1 系統(tǒng)函數(shù)
- 9.8.2 自定義函數(shù)
- 十、yum倉庫配置(重要)
- 10.1 概述
- 10.2 yum的常用命令
- 10.3 關聯(lián)網(wǎng)絡yum源
- 10.4 制作本地yum源
一、Linux入門概述
1.1 概述
Linux內(nèi)核最初只是由芬蘭人林納斯·托瓦茲(Linus Torvalds)在赫爾辛基大學上學時出于個人愛好而編寫的。
Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。Linux能運行主要的UNIX工具軟件、應用程序和網(wǎng)絡協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡為核心的設計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡操作系統(tǒng)。
目前市面上較知名的發(fā)行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE
1.2 下載地址
centos下載地址:
網(wǎng)易鏡像:http://mirrors.163.com/centos/6/isos/
搜狐鏡像:http://mirrors.sohu.com/centos/6/isos/
1.3 Linux特點
Linux里面一切皆是文件
Linux里面沒有后綴名這一說
1.4 Linux和Windows區(qū)別
目前國內(nèi)Linux更多的是應用與服務器上,而桌面操作系統(tǒng)更多使用的是window。主要區(qū)別如下。
| 界面 | 界面統(tǒng)一,外殼程序固定所有Windows程序菜單幾乎一致,快捷鍵也幾乎相同 | 圓形界面風格依發(fā)布版本不同而不同,可能互不兼容。GNU/Linux的終端機是從UNIX傳承下來,基本命令和操作方法也幾乎一致。 |
| 驅動程序 | 驅動程序豐富,版本更新頻繁。默認安裝程序里面一般包含有該版本發(fā)布時流行的硬件驅動程序,之后所出的新硬件驅動依賴于硬件廠商提供。對于一些老硬件,如果沒有了原配的驅動有時候很難支持。另外,有時硬件廠商未提供所需版本的Windows下的驅動,也會比較頭痛。 | 由志愿者開發(fā),由Linux核心開發(fā)小組發(fā)布,很多硬件廠商基于版本考慮并未提供驅動程序,盡管多數(shù)無需手動安裝,但是涉及安裝則相對復雜,使得新用戶面對驅動程序問題會一籌莫展。但是在開源開發(fā)模式下,許多老硬件盡管在Windows下很難支持的也容易找到驅動。HP、Intel、AMD等硬件廠商逐步不同程序支持開源驅動,問題正在得到緩解。 |
| 使用 | 使用比較簡單,容易入門。圓形化界面對沒有計算機背景知識的用戶使用十分有利。 | 圓形界面使用簡單,容易入門。文字界面,需要學習才能掌握。 |
| 學習 | 系統(tǒng)構造復雜、變化頻繁、且知識、技能淘汰快,深入學習困難 | 系統(tǒng)構造簡單、穩(wěn)定,且知識、技能傳承性好,深入學習相對容易 |
| 軟件 | 每一種特定功能可能都需要商業(yè)軟件的支持,需要購買相應的授權 | 大部分軟件都可以自由獲取,同樣功能的軟件選擇較少。 |
二、VM安裝相關
2.1 安裝VMWare虛擬機
??
2.2 安裝CentOS
2.3 安裝VMTools工具
1)什么是VMtools
VM tools顧名思義就是Vmware的一組工具。主要用于虛擬主機顯示優(yōu)化與調(diào)整,另外還可以方便虛擬主機與本機的交互,如允許共享文件夾,甚至可以直接從本機向虛擬主機拖放文件、鼠標無縫切換、顯示分辨率調(diào)整等,十分實用。
2)先啟動CentOS并成功登錄如下圖,發(fā)現(xiàn)底部提示且窗口中等大小,準備安裝
在這里插入圖片描述
3)選擇虛擬機菜單欄–安裝VMware tools
4)光驅自動掛載VMTools
5)右鍵解壓VMwaretools-9.6.2-1688356.tar.gz
進入文件夾并確認看到vmware-install.pl文件
6)運行vmware-install.pl文件
最后用“./vmware-install.pl”命令來運行該安裝程序,然后根據(jù)屏幕提示一路回車。到此整個安裝過程算是完成了。
7)直接按到/dev/hdc…停止為止,安裝完成
8)重啟CentOS, 這時候屏幕變成全屏了
9)設置共享文件夾,實現(xiàn)Windows --------CentOS文件共享
2.4 虛擬機屏幕保護設置
2.5 IVT虛擬化支持
1)異常情況
2)宿主機BIOS設置中的硬件虛擬化被禁用了
需要打開筆記本BIOS中的IVT對虛擬化的支持
三、Linux目錄結構
3.1 概覽
3.2 樹狀目錄結構
/bin:是Binary的縮寫,這個目錄存放著系統(tǒng)必備執(zhí)行命令
/boot:這里存放的是啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件,自己的安裝別放這里
/dev:Device(設備)的縮寫,該目錄下存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。
/etc:所有的系統(tǒng)管理所需要的配置文件和子目錄。
/home:存放普通用戶的主目錄,在Linux中每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的。
/lib:系統(tǒng)開機所需要最基本的動態(tài)連接共享庫,其作用類似于Windows里的DLL文件。幾乎所有的應用程序都需要用到這些共享庫。
/lost+found:這個目錄一般情況下是空的,當系統(tǒng)非法關機后,這里就存放了一些文件。
/media:linux系統(tǒng)會自動識別一些設備,例如U盤、光驅等等,當識別后,linux會把識別的設備掛載到這個目錄下。
/misc: 該目錄可以用來存放雜項文件或目錄,即那些用途或含義不明確的文件或目錄可以存放在該目錄下。
/mnt:系統(tǒng)提供該目錄是為了讓用戶臨時掛載別的文件系統(tǒng)的,我們可以將光驅掛載在/mnt/上,然后進入該目錄就可以查看光驅里的內(nèi)容了。
/net 存放著和網(wǎng)絡相關的一些文件.
/opt:這是給主機額外安裝軟件所擺放的目錄。比如你安裝一個ORACLE數(shù)據(jù)庫則就可以放到這個目錄下。默認是空的。
/proc:這個目錄是一個虛擬的目錄,它是系統(tǒng)內(nèi)存的映射,我們可以通過直接訪問這個目錄來獲取系統(tǒng)信息。
/root:該目錄為系統(tǒng)管理員,也稱作超級權限者的用戶主目錄。
/sbin:s就是Super User的意思,這里存放的是系統(tǒng)管理員使用的系統(tǒng)管理程序。
/selinux:這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,類似于windows的防火墻
/srv:service縮寫,該目錄存放一些服務啟動之后需要提取的數(shù)據(jù)。
/sys: 這是linux2.6內(nèi)核的一個很大的變化。該目錄下安裝了2.6內(nèi)核中新出現(xiàn)的一個文件系統(tǒng) sysfs 。
/tmp:這個目錄是用來存放一些臨時文件的。
/usr: 這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似與windows下的program files目錄。
/var:這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經(jīng)常被修改的目錄放在這個目錄下。包括各種日志文件。
四、VI/VIM編輯器
4.1 概述
所有的 Unix Like 系統(tǒng)都會內(nèi)建 vi 文書編輯器,其他的文書編輯器則不一定會存在。但是目前我們使用比較多的是 vim 編輯器。
Vim 具有程序編輯的能力,可以主動的以字體顏色辨別語法的正確性,方便程序設計。Vim是從 vi 發(fā)展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。
簡單的來說vi 是老式的字處理器,不過功能已經(jīng)很齊全了,但是還是有可以進步的地方。vim 則可以說是程序開發(fā)者的一項很好用的工具。連vim 的官方網(wǎng)站 (http://www.vim.org) 自己也說 vim 是一個程序開發(fā)工具而不是文字處理軟件。
4.2 測試數(shù)據(jù)準備
4.3 一般模式
以 vi 打開一個檔案就直接進入一般模式了(這是默認的模式)。在這個模式中, 你可以使用『上下左右』按鍵來移動光標,你可以使用『刪除字符』或『刪除整行』來處理檔案內(nèi)容, 也可以使用『復制、貼上』來處理你的文件數(shù)據(jù)。
常用語法
1)yy (功能描述:復制光標當前一行)
y數(shù)字y (功能描述:復制一段(從第幾行到第幾行))
2)p (功能描述:箭頭移動到目的行粘貼)
3)u (功能描述:撤銷上一步)
4)dd (功能描述:刪除光標當前行)
d數(shù)字d (功能描述:刪除光標(含)后多少行)
5)x (功能描述:刪除一個字母,相當于del)
X (功能描述:刪除一個字母,相當于Backspace)
6)yw (功能描述:復制一個詞)
7)dw (功能描述:刪除一個詞)
8)shift+^ (功能描述:移動到行頭)
9)shift+$ (功能描述:移動到行尾)
10)1+shift+g (功能描述:移動到頁頭,數(shù)字)
11)shift+g (功能描述:移動到頁尾)
12)數(shù)字N+shift+g (功能描述:移動到目標行)
4.4 編輯模式
在一般模式中可以進行刪除、復制、貼上等等的動作,但是卻無法編輯文件內(nèi)容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一個字母之后才會進入編輯模式。
注意了!通常在 Linux 中,按下這些按鍵時,在畫面的左下方會出現(xiàn)『INSERT 或 REPLACE 』的字樣,此時才可以進行編輯。而如果要回到一般模式時, 則必須要按下『Esc』這個按鍵即可退出編輯模式。
常用語法
1)進入編輯模式
(1)i 當前光標前
(2)a 當前光標后
(3)o 當前光標行的下一行
2)退出編輯模式
按『Esc』鍵
4.5 指令模式
在一般模式當中,輸入『 : / ?』3個中的任何一個按鈕,就可以將光標移動到最底下那一行。
在這個模式當中, 可以提供你『搜尋資料』的動作,而讀取、存盤、大量取代字符、離開 vi 、顯示行號等動作是在此模式中達成的!
常用語法
1)基本語法
(1): 選項
選項:
w 保存
q 退出
! 感嘆號強制執(zhí)行
(2)/ 查找,/被查找詞,n是查找下一個,shift+n是往上查找
(3)? 查找,?被查找詞,n是查找上一個,shift+n是往下查找
2)案例
:wq! 強制保存退出
五、系統(tǒng)管理操作
5.1 查看網(wǎng)絡IP和網(wǎng)關
1)查看虛擬網(wǎng)絡編輯器
2)修改ip地址
WMnet0:連得無線的網(wǎng)
WMnet1:僅主機模式,在專用網(wǎng)絡內(nèi)連接的虛擬主機
WMnet8:NAT模式,與虛擬主機共享主機的ip地址
打開windows的設置中,控制面板==》更改適配器設置,就會多出兩個WMnet0(無線)、WMnet8(NAT),右擊屬性中點擊TCP/IPv4可以設置ip地址,子網(wǎng)掩碼等,盡量將WMnet8設置成xx:xx:1:xx,這樣后期可以設置聯(lián)網(wǎng),要不然連不上網(wǎng)
一般是1.1后者1.2
3)查看網(wǎng)關
5.2 配置網(wǎng)絡ip地址
設置成手動的靜態(tài)ip,因為將來配置集群的時候弄成自動的,第二天ip變了,寫的程序都運行不起來了
如果是動態(tài)的,通過ifconfig是看不到ip地址的,因為是動態(tài)生成的
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
需要修改的內(nèi)容有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(動態(tài)),修改為static(靜態(tài)的手動配置)
IPADDR修改為自己想要的ip
GATEWAY修改為自己的網(wǎng)關(上面有配置),10.x或者1.x都可以
DNS1=192.168.1.2(dns服務器)
(2)修改后
:wq 保存退出
3)執(zhí)行service network restart 重啟網(wǎng)卡
4)如果報錯,reboot,重啟虛擬機
5)通過ifconfig查看ip地址
6)然后就可以聯(lián)網(wǎng)了
查看windows的ip ipconfig==>查看VMnet1(無線網(wǎng))的ip==>在虛擬機中ping xx:xx:xx:xx(windows的無線網(wǎng)ip),發(fā)現(xiàn)能夠ping通
5.3 配置主機名
0)查看主機名基本語法:
[root@hadoop102 /]#hostname
1)修改linux的hosts文件
(1)進入Linux系統(tǒng)查看本機的主機名。通過hostname命令查看
[root@hadoop ~]# hostname
hadoop1.atguigu.com
(2)如果感覺此主機名不合適,我們可以進行修改。通過編輯/etc/sysconfig/network文件
[root@hadoop102 /]# vi /etc/sysconfig/network
文件中內(nèi)容
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop102
注意:主機名稱不要有“_”下劃線
(3)打開此文件后,可以看到主機名。修改此主機名為我們想要修改的主機名hadoop102。
(4)保存退出。
(5)打開/etc/hosts
[root@hadoop102 /]# vim /etc/hosts
添加如下內(nèi)容
192.168.11.102 hadoop102(配置的好處:加入有十萬個文件需要配置這個ip,如果ip變了,豈不是要一個一個修改,如果在這里配置了,只需要在這里進行配置就行了)
(6)并重啟設備,重啟后,查看主機名,已經(jīng)修改成功
2)修改window7的hosts文件
(1)進入C:\Windows\System32\drivers\etc路徑
(2)打開hosts文件并添加如下內(nèi)容
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 (功能描述:查看防火墻狀態(tài))
chkconfig iptables --list (功能描述:查看防火墻開機啟動狀態(tài))(雙橫線)會出現(xiàn)其中運行級別的防火墻狀態(tài),七個運行級別下面有擴展
service iptables stop (功能描述:臨時關閉防火墻)
chkconfig iptables off (功能描述:關閉防火墻開機啟動)
chkconfig iptables on (功能描述:開啟防火墻開機啟動)
2)擴展
Linux系統(tǒng)有7個運行級別(runlevel)
運行級別0:系統(tǒng)停機狀態(tài),系統(tǒng)默認運行級別不能設為0,否則不能正常啟動
運行級別1:單用戶工作狀態(tài),root權限,用于系統(tǒng)維護,禁止遠程登陸
運行級別2:多用戶狀態(tài)(沒有NFS)
運行級別3:完全的多用戶狀態(tài)(有NFS),登陸后進入控制臺命令行模式,沒有桌面
運行級別4:系統(tǒng)未使用,保留
運行級別5:X11控制臺,登陸后進入圖形GUI模式
運行級別6:系統(tǒng)正常關閉并重啟,默認運行級別不能設為6,否則不能正常啟動,關了又開開了又關,永不停歇。
5.5 關機重啟
在linux領域內(nèi)大多用在服務器上,很少遇到關機的操作。畢竟服務器上跑一個服務是永無止境的,除非特殊情況下,不得已才會關機 。
正確的關機流程為:sync > shutdown > reboot > halt
1)基本語法:
(1)sync (功能描述:將數(shù)據(jù)由內(nèi)存同步到硬盤中)執(zhí)行完看不到任何反應,但是已經(jīng)做了相關的功能。
(2)shutdown [選項] 時間 (功能描述。定時的關機重啟)
選項:
-h:關機
-r:重啟
例如:shutdown -r 1 ”1 minute reboot“ 1是1分鐘之后重啟,后面引號中的內(nèi)容是注釋
也可以shutdown -r now
(3)halt (功能描述:關閉系統(tǒng),就是關機,等同于shutdown –h now 和 poweroff)
(4)reboot (功能描述:就是重啟,等同于 shutdown –r now)
2)案例
(1)將數(shù)據(jù)由內(nèi)存同步到硬盤中
[root@hadoop102 /]#sync
(2)計算機將在10分鐘后關機,并且會顯示在登錄用戶的當前屏幕中
[root@hadoop102 /]#shutdown –h 10 ‘This server will shutdown after 10 mins’
(3)立馬關機
[root@hadoop102 /]# shutdown –h now
(4)系統(tǒng)立馬重啟
[root@hadoop102 /]# shutdown –r now
(5)重啟(等同于 shutdown –r now)
[root@hadoop102 /]# reboot
(6)關機(等同于shutdown –h now 和 poweroff)
[root@hadoop102 /]#halt
注意:不管是重啟系統(tǒng)還是關閉系統(tǒng),首先要運行sync命令,把內(nèi)存中的數(shù)據(jù)寫到磁盤中。
5.6 找回root密碼
重新安裝系統(tǒng)嗎?當然不用!進入單用戶模式更改一下root密碼即可。
1)重啟Linux,見到下圖,在3秒鐘之內(nèi)按下回車
2)三秒之內(nèi)要按一下回車,出現(xiàn)如下界面
3)按下e鍵就可以進入下圖
4)移動到下一行,再次按e鍵
5)移動到下一行,進行修改
修改完成后回車鍵,然后按b鍵進行重新啟動進入系統(tǒng)
6)移動到下一行,進行修改
最終修改完密碼,reboot一下即可。
六、遠程登錄
6.1 安裝SecureCRT
Linux遠程登錄及相關工具介紹
Linux一般作為服務器使用,而服務器一般放在機房,你不可能在機房操作你的Linux服務器。這時我們就需要遠程登錄到Linux服務器來管理維護系統(tǒng)。
Linux系統(tǒng)中是通過SSH服務實現(xiàn)的遠程登錄功能,默認ssh服務端口號為 22。Window系統(tǒng)上 Linux 遠程登錄客戶端有SecureCRT, Putty, SSH Secure Shell,XShell等
1)安裝步驟
2)操作
(1)鼠標選中即為復制
(2)鼠標右鍵即為粘貼
## 6.2 SecureCRT中文亂碼解決方法
1)重新查看會話,是否中文顯示正常
2)依然無法正常顯示中文,可能是由于Linux系統(tǒng)中默認的字符編碼非UTF8所致
用root用戶登錄。輸入cat /etc/sysconfig/i18n
如果安裝系統(tǒng)為中文系統(tǒng),則修改【LANG=“zh_CN.UTF-8”】
如果安裝系統(tǒng)為英文系統(tǒng),則修改【LANG=“en_US.UTF-8”】
保存文件。 斷開SSH,重新登錄。就正常了
下面是修改后的查看
[root@hadoop100 ~]# cat /etc/sysconfig/i18n
LANG=“zh_CN.UTF-8”
3)調(diào)整設置CRT解決
七、常用基本命令
7.1 幫助命令
7.1.1 man 獲得幫助信息
1)基本語法:
man [命令或配置文件] (功能描述:獲得幫助信息)
(1)顯示說明
NAME 命令的名稱和單行描述
SYNOPSIS 怎樣使用命令
DESCRIPTION 命令功能的深入討論
EXAMPLES 怎樣使用命令的例子
SEE ALSO 相關主題(通常是手冊頁)
(2)數(shù)字說明q
1.用戶在shell環(huán)境中可以操作的命令或是可執(zhí)行的文件
2.系統(tǒng)內(nèi)核(kernel)可以調(diào)用的函數(shù)
3.常用的函數(shù)or函數(shù)庫
4.設備配置文件
5.配置文件的格式
6.游戲相關
7.linux網(wǎng)絡協(xié)議和文件系統(tǒng)
8.系統(tǒng)管理員可以用的命令
9.跟內(nèi)核有關系的文件
2)案例
[root@hadoop106 home]# man ls
7.1.2 help 獲得shell內(nèi)置命令的幫助信息
1)基本語法:
help 命令 (功能描述:獲得shell內(nèi)置命令的幫助信息)
2)案例:
[root@hadoop101 bin]# help cd
7.1.3 常用快捷鍵
1)ctrl + c:停止進程
2)ctrl+l:清屏
3)ctrl + q:退出
4)善于用tab鍵
5)上下鍵:查找執(zhí)行過的命令
6)ctrl +alt:linux和Windows之間切換
7.2 文件目錄類
7.2.1 pwd 顯示當前工作目錄的絕對路徑
1)基本語法:
pwd (功能描述:顯示當前工作目錄的絕對路徑)
2)案例
[root@hadoop106 home]# pwd
/home
7.2.2 ls 列出目錄的內(nèi)容
1)基本語法:
ls [選項] [目錄或是文件]
選項:
-a :全部的文件,連同隱藏檔( 開頭為 . 的文件) 一起列出來(常用)
-l :長數(shù)據(jù)串列出,包含文件的屬性與權限等等數(shù)據(jù);(常用)
每行列出的信息依次是: 文件類型與權限 鏈接數(shù) 文件屬主 文件屬組 文件大小用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 創(chuàng)建一個新的目錄
1)基本語法:
mkdir [-p] 要創(chuàng)建的目錄
選項:
-p:創(chuàng)建多層目錄
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 創(chuàng)建空文件
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 命令創(chuàng)建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 (功能描述:遞歸刪除目錄中所有內(nèi)容)
2)案例
1)刪除空目錄
[root@hadoop106 opt]# rmdir test
2)遞歸刪除目錄中所有內(nèi)容
[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 查看文件內(nèi)容
查看文件內(nèi)容,從第一行開始顯示。
1)基本語法
cat [選項] 要查看的文件
選項:
-A :相當于 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
-b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
-E :將結尾的斷行字節(jié) $ 顯示出來;
-n :列出行號,連同空白行也會有行號,與 -b 的選項不同;
-T :將 [tab] 按鍵以 ^I 顯示出來;
-v :列出一些看不出來的特殊字符
重點 -A -n
2)案例
[atguigu@hadoop101 ~]$ cat -A test.txt
hellda $
dasadf ^I$
daII^I$
das$
cat -A -n
7.2.11 tac查看文件內(nèi)容
查看文件內(nèi)容,從最后一行開始顯示,可以看出 tac 是 cat 的倒著寫。
1)基本語法:
tac [選項參數(shù)] 要查看的文件
2)案例
[root@hadoop106 test1]# cat test1.java
hello
atguigu
atguigu1
[root@hadoop106 test1]# tac test1.java
atguigu1
atguigu
hello
7.2.12 more 查看文件內(nèi)容
查看文件內(nèi)容,一頁一頁的顯示文件內(nèi)容。
1)基本語法:
more 要查看的文件
2)功能使用說明
空白鍵 (space):代表向下翻一頁;
Enter:代表向下翻『一行』;
q:代表立刻離開 more ,不再顯示該文件內(nèi)容。
Ctrl+F 向下滾動一屏
Ctrl+B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
3)案例
[root@hadoop106 test1]# more test1.java
7.2.13 less 查看文件內(nèi)容
less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內(nèi)容,不同的是 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查看文件內(nèi)容
查看文件內(nèi)容,只看頭幾行。
1)基本語法
head -n 10 文件 (功能描述:查看文件頭10行內(nèi)容,10可以是任意行數(shù))
2)案例
[root@hadoop106 test1]# head -n 2 test1.java
hello
atguigu
7.2.15 tail 查看文件內(nèi)容
查看文件內(nèi)容,只看尾巴幾行。
1)基本語法
(1)tail -n 10 文件 (功能描述:查看文件頭10行內(nèi)容,10可以是任意行數(shù))
(2)tail –f 文件 (功能描述:實時追蹤該文檔的所有更新)
2)案例
(1)查看文件頭1行內(nèi)容
[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 >文件 (功能描述:列表的內(nèi)容寫入文件a.txt中(覆蓋寫))
(2)ls –al >>文件 (功能描述:列表的內(nèi)容追加到文件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 要顯示的內(nèi)容 >> 存儲內(nèi)容的的文件 (功能描述:將要顯示的內(nèi)容,存儲到文件中)
(2)echo 變量 (功能描述:顯示變量的值)
2)案例
[root@hadoop106 test1]# echo $JAVA_HOME
/opt/module/jdk1.7.0_79
7.2.18 ln軟鏈接
1)基本語法:
ln –s [原文件] [目標文件] (功能描述:給原文件創(chuàng)建一個軟鏈接,軟鏈接存放在目標文件目錄)
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
創(chuàng)建一個軟鏈接
[atguigu@hadoop103 opt]$ ln -s /opt/module/hadoop-2.7.2/ /opt/software/hadoop
cd不加參數(shù)進入是軟鏈接的地址
[atguigu@hadoop103 software]$ cd hadoop
[atguigu@hadoop103 hadoop]$ pwd
/opt/software/hadoop
cd加參數(shù)進入是實際的物理地址
[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設置系統(tǒng)時間
1)基本語法:
date -s 字符串時間
2)案例
[root@hadoop106 /]# date -s “2017-06-19 20:52:18”
7.3.4 cal查看日歷
1)基本語法:
cal [選項] (功能描述:不加選項,顯示本月日歷)
選項:
-3 ,顯示系統(tǒng)前一個月,當前月,下一個月的日歷
具體某一年,顯示這一年的日歷。
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
普通用戶切換到root目錄需要輸入密碼,root用戶切換到普通目錄不需要輸入密碼
7.4.5 userdel 刪除用戶
1)基本語法:
(1)userdel 用戶名 (功能描述:刪除用戶但保存用戶主目錄(/home文件下面還有這個用戶的目錄))
(2)userdel -r 用戶名 (功能描述:用戶和用戶主目錄,都刪除(/home文件下面的用戶目錄也沒有了))
2)案例:
(1)刪除用戶但保存用戶主目錄
[root@hadoop101 opt]#userdel atguigu (需要切換到root才能刪除,自己不能刪除自己,但是如果從atguigu用戶su root 到root也是不能刪除的,會提示,當前的atguigu用戶正在被使用,需要執(zhí)行exit退出到atguigu用戶,再執(zhí)行exit退出到root用戶,才能刪除)
(2)刪除用戶和用戶主目錄,都刪除
[root@hadoop101 opt]#userdel –r atguigu
7.4.6 who 查看登錄用戶信息
1)基本語法
(1)whoami (功能描述:顯示自身用戶名稱)
(2)who am i (功能描述:顯示登錄用戶的用戶名)
(3)who (功能描述:看當前有哪些用戶登錄到了本臺機器上)
2)案例
[root@hadoop101 opt]# whoami
[root@hadoop101 opt]# who am i
[root@hadoop101 opt]# who
7.4.7 設置atguigu普通用戶具有root權限
假如目前是atguigu用戶,在/opt目錄下面想要創(chuàng)建a目錄會發(fā)現(xiàn)么有權限
1)修改配置文件
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
修改完畢,現(xiàn)在可以用atguigu帳號登錄,然后用命令 su - ,即可獲得root權限進行操作。
2)案例
添加完上面的配置文件,就可以通過下面的命令進行創(chuàng)建文件了(不需要通過atguigu登錄,上面只是說可以,沒有說必須),還是沒有權限就在命令前面加上sudo
[atguigu@hadoop101 opt]$ sudo mkdir module
[root@hadoop101 opt]# chown atguigu:atguigu module/
7.4.8 cat /etc/passwd 查看創(chuàng)建了哪些組
cat /etc/passwd
7.4.9 usermod修改用戶
1)基本語法:
usermod -g 用戶組 用戶名
2)案例:
將用戶atguigu加入dev用戶組
[root@hadoop101 opt]#usermod –g dev atguigu
7.5 用戶組管理命令
每個用戶都有一個用戶組,系統(tǒng)可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統(tǒng)對用戶組的規(guī)定有所不同,
如Linux下的用戶屬于與它同名的用戶組,這個用戶組在創(chuàng)建用戶時同時創(chuàng)建。
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/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 查看創(chuàng)建了哪些組
cat /etc/group
7.5.5 綜合案例
[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
7.6 文件權限類
7.6.1 文件屬性
Linux系統(tǒng)是一種典型的多用戶系統(tǒng),不同的用戶處于不同的地位,擁有不同的權限。為了保護系統(tǒng)的安全性,Linux系統(tǒng)對不同的用戶訪問同一文件(包括目錄文件)的權限做了不同的規(guī)定。在Linux中我們可以使用ll或者ls –l命令來顯示一個文件的屬性以及文件所屬的用戶和組。
1)從左到右的10個字符表示:
如果沒有權限,就會出現(xiàn)減號[ - ]而已。從左至右用0-9這些數(shù)字來表示:
(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位,鏈接數(shù)
鏈接數(shù)理解:
-rw-r–r-- 1 root root 762 07-29 18:19 exit
如果一個文件不是目錄,此時這一字段表示這個文件所具有的硬鏈接數(shù),
第2字段的值為1,說明這個文件只有exit這一個文件名。即只有一個指向該鏈接的硬鏈接。。
如果使用ln,做一個指向該文件的硬鏈接再查看該文件,該文件的第2字段就會變成2
各個字段詳細理解:https://blog.csdn.net/sjzs5590/article/details/8254527
(6)第12位,文件擁有者,即誰創(chuàng)建的
(7)第13位,用戶組
(8)第14位,文件大小
(9)第15位,創(chuàng)建時間
(10)第16位,文件名稱
| 0 | 1 2 3 | 4 5 6 | 7 8 9 |
| d | R w x | R - x | R - x |
| 目錄文件 | 讀 寫 執(zhí)行 | 讀 寫 執(zhí)行 | 讀 寫 執(zhí)行 |
2)rxw作用文件和目錄的不同解釋
(1)作用到文件:
[ r ]代表可讀(read): 可以讀取,查看
[ w ]代表可寫(write): 可以修改,但是不代表可以刪除該文件,刪除一個文件的前提條件是對該文件所在的目錄有寫權限,才能刪除該文件.
[ x ]代表可執(zhí)行(execute):可以被系統(tǒng)執(zhí)行
(2)作用到目錄:
[ r ]代表可讀(read): 可以讀取,ls查看目錄內(nèi)容
[ w ]代表可寫(write): 可以修改,目錄內(nèi)創(chuàng)建+刪除+重命名目錄
[ x ]代表可執(zhí)行(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-執(zhí)行文件
目錄: r-列出目錄內(nèi)容;w-在目錄中創(chuàng)建和刪除;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
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.4 chown改變所有者
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 同時修改用戶和用戶組。
7.6.5 su 切換用戶
1)基本語法:
su –username (功能描述:切換用戶)
2)案例
[root@hadoop101 atguigu]# su atguigu
[atguigu@hadoop101 ~]$
[atguigu@hadoop101 ~]$ su root
密碼:
[root@hadoop101 atguigu]#
7.7 磁盤分區(qū)類
7.7.1 fdisk查看分區(qū)
1)基本語法:
fdisk –l (功能描述:查看磁盤分區(qū)詳情)
注意:在root用戶下才能使用
2)功能說明:
(1)Linux分區(qū)
這個硬盤是20G的,有255個磁面;63個扇區(qū);2610個磁柱;每個 cylinder(磁柱)的容量是 8225280 bytes=8225.280 K(約為)=8.225280M(約為);
| 分區(qū)序列 | 引導 | 從X磁柱開始 | 到Y磁柱結束 | 容量 | 分區(qū)類型ID | 分區(qū)類型 |
(2)Win7分區(qū)
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 參數(shù) (功能描述:列出文件系統(tǒng)的整體磁盤使用量,檢查文件系統(tǒng)的磁盤空間占用情況)
參數(shù):
-a :列出所有的文件系統(tǒng),包括系統(tǒng)特有的 /proc 等文件系統(tǒng);
-k :以 KBytes 的容量顯示各文件系統(tǒng);
-m :以 MBytes 的容量顯示各文件系統(tǒng);
-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
-H :以 M=1000K 取代 M=1024K 的進位方式;
-T :顯示文件系統(tǒng)類型,連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
-i :不用硬盤容量,而以 inode 的數(shù)量來顯示
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用戶來講,不論有幾個分區(qū),分別分給哪一個目錄使用,它總歸就是一個根目錄、一個獨立且唯一的文件結構
Linux中每個分區(qū)都是用來組成整個文件系統(tǒng)的一部分,她在用一種叫做“掛載”的處理方法,它整個文件系統(tǒng)中包含了一整套的文件和目錄,并將一個分區(qū)和一個目錄聯(lián)系起來,要載入的那個分區(qū)將使它的存儲空間在這個目錄下獲得。
關于掛載的解釋,一個不錯的文章:https://blog.csdn.net/qq_39521554/article/details/79501714
0)掛載前準備(必須要有光盤或者已經(jīng)連接鏡像文件)
1)掛載光盤語法:
mount [-t vfstype] [-o options] device dir
(1)-t vfstype 指定文件系統(tǒng)的類型,通常不必指定。mount 會自動選擇正確的類型。
常用類型有:
光盤或光盤鏡像:iso9660
DOS fat16文件系統(tǒng):msdos
Windows 9x fat32文件系統(tǒng):vfat
Windows NT ntfs文件系統(tǒng):ntfs
Mount Windows文件網(wǎng)絡共享:smbfs
UNIX(LINUX) 文件網(wǎng)絡共享:nfs
(2)-o options 主要用來描述設備或檔案的掛接方式。常用的參數(shù)有:
loop:用來把一個文件當成硬盤分區(qū)掛接上系統(tǒng)
ro:采用只讀方式掛接設備
rw:采用讀寫方式掛接設備
iocharset:指定訪問文件系統(tǒng)所用字符集
(3)device 要掛接(mount)的設備
(4)dir設備在系統(tǒng)上的掛接點(mount point)
2)案例
剛才如果安裝了光盤的話,在/media目錄下會出現(xiàn)剛才的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
添加紅框中內(nèi)容,保存退出。
7.8 搜索查找類
7.8.1 find 查找文件或者目錄
1)基本語法:
find [搜索范圍] [匹配條件]
2)案例
(1)按文件名:根據(jù)名稱查找/目錄下的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 在文件內(nèi)搜索字符串匹配的行并輸出
1)基本語法
grep+參數(shù)+查找內(nèi)容+源文件
參數(shù):
-c:只輸出匹配行的計數(shù)。
-I:不區(qū)分大小寫(只適用于單字符)。
-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 進程線程類
進程是正在執(zhí)行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統(tǒng)資源。
7.9.1 ps查看系統(tǒng)中所有進程
1)基本語法:
ps –aux (功能描述:查看系統(tǒng)中所有進程)
2)功能說明
USER:該進程是由哪個用戶產(chǎn)生的
PID:進程的ID號
%CPU:該進程占用CPU資源的百分比,占用越高,進程越耗費資源;
%MEM:該進程占用物理內(nèi)存的百分比,占用越高,進程越耗費資源;
VSZ:該進程占用虛擬內(nèi)存的大小,單位KB;
RSS:該進程占用實際物理內(nèi)存的大小,單位KB;
TTY:該進程是在哪個終端中運行的。其中tty1-tty7代表本地控制臺終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0-255代表虛擬終端。
STAT:進程狀態(tài)。常見的狀態(tài)有:R:運行、S:睡眠、T:停止狀態(tài)、s:包含子進程、+:位于后臺
START:該進程的啟動時間
TIME:該進程占用CPU的運算時間,注意不是系統(tǒng)時間
COMMAND:產(chǎn)生此進程的命令名
3)案例
[root@hadoop102 datas]# ps –aux
7.9.2 top查看系統(tǒng)健康狀態(tài)
1)基本命令
top [選項]
(1)選項:
-d 秒數(shù):指定top命令每隔幾秒更新。默認是3秒在top命令的交互模式當中可以執(zhí)行的命令:
-i:使top不顯示任何閑置或者僵死進程。
-p:通過指定監(jiān)控進程ID來僅僅監(jiān)控某個進程的狀態(tài)。
-s : 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
(2)操作選項:
P: 以CPU使用率排序,默認就是此項
M: 以內(nèi)存的使用率排序
N: 以PID排序
q: 退出top
(3)查詢結果字段解釋
第一行信息為任務隊列信息
| 12:26:46 | 系統(tǒng)當前時間 |
| up 1 day, 13:32 | 系統(tǒng)的運行時間,本機已經(jīng)運行1天 |
| 2 users | 當前登錄了兩個用戶 |
| load average: 0.00, 0.00, 0.00 | 系統(tǒng)在之前1分鐘,5分鐘,15分鐘的平均負載。一般認為小于1時,負載較小。如果大于1,系統(tǒng)已經(jīng)超出負荷。 |
第二行為進程信息
| 1 running | 正在運行的進程數(shù) |
| 94 sleeping | 睡眠的進程 |
| 0 stopped | 正在停止的進程 |
| 0 zombie | 僵尸進程。如果不是0,需要手工檢查僵尸進程 |
第三行為CPU信息
| 0.1%sy | 系統(tǒng)模式占用的CPU百分比 |
| 0.0%ni | 改變過優(yōu)先級的用戶進程占用的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的時間百分比。 |
第四行為物理內(nèi)存信息
| 571504k used | 已經(jīng)使用的物理內(nèi)存數(shù)量 |
| 53840k free | 空閑的物理內(nèi)存數(shù)量,我們使用的是虛擬機,總共只分配了628MB內(nèi)存,所以只有53MB的空閑內(nèi)存了 |
| 65800k buffers | 作為緩沖的內(nèi)存數(shù)量 |
第五行為交換分區(qū)(swap)信息
| 0k used | 已經(jīng)使用的交互分區(qū)的大小 |
| 524280k free | 空閑交換分區(qū)的大小 |
| 409280k cached | 作為緩存的交互分區(qū)的大小 |
2)案例
[root@hadoop101 atguigu]# top –d 1
[root@hadoop101 atguigu]# top -i
[root@hadoop101 atguigu]# top –p 2575
[root@hadoop101 atguigu]# top –s
執(zhí)行上述命令后,可以按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用戶執(zhí)行
[root@hadoop102 桌面]# kill -9 5102
7.9.5 netstat顯示網(wǎng)絡統(tǒng)計信息
1)基本語法:
netstat –anp (功能描述:此命令用來顯示整個系統(tǒng)目前的網(wǎng)絡情況。例如目前的連接、數(shù)據(jù)包傳遞數(shù)據(jù)、或是路由表內(nèi)容)
選項:
-an 按一定順序排列輸出
-p 表示顯示哪個進程在調(diào)用
-nltp 查看tcp協(xié)議進程端口號
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 + 參數(shù) + XXX.zip + 將要壓縮的內(nèi)容 (功能描述:壓縮文件和目錄的命令,window/linux通用且可以壓縮目錄且保留源文件)
參數(shù):
-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 + 參數(shù) + XXX.tar.gz + 將要打包進去的內(nèi)容 (功能描述:打包目錄,壓縮后的文件格式.tar.gz)
參數(shù):
-c 產(chǎn)生.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 查看指定服務的狀態(tài)
2)service network stop 停止指定服務
3)service network start 啟動指定服務
4)service network restart 重啟指定服務
5)service --status-all 查看系統(tǒng)中所有的后臺服務
7.11.2 chkconfig設置后臺服務的自啟配置
1)chkconfig 查看所有服務器自啟配置
2)chkconfig iptables off 關掉指定服務的自動啟動
3)chkconfig iptables on 開啟指定服務的自動啟動
7.12 crond系統(tǒng)定時任務
7.12.1 crond服務管理
[root@localhost ~]# service crond restart (重新啟動服務)
7.12.2 crontab定時任務設置
1)基本語法
crontab [選項]
選項:
-e: 編輯crontab定時任務
-l: 查詢crontab任務
-r: 刪除當前用戶所有的crontab任務
2)參數(shù)說明
[root@localhost ~]# crontab -e
(1)進入crontab編輯界面。會打開vim編輯你的工作。
-
-
-
-
- 執(zhí)行的任務
-
-
-
| 第一個“*” | 一小時當中的第幾分鐘 | 0-59 |
| 第二個“*” | 一天當中的第幾小時 | 0-23 |
| 第三個“*” | 一個月當中的第幾天 | 1-31 |
| 第四個“*” | 一年當中的第幾月 | 1-12 |
| 第五個“*” | 一周當中的星期幾 | 0-7(0和7都代表星期日) |
(2)特殊符號
| * | 代表任何時間。比如第一個“*”就代表一小時中每分鐘都執(zhí)行一次的意思。 |
| , | 代表不連續(xù)的時間。比如“0 8,12,16 * * * 命令”,就代表在每天的8點0分,12點0分,16點0分都執(zhí)行一次命令 |
| - | 代表連續(xù)的時間范圍。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5點0分執(zhí)行命令 |
| */n | 代表每隔多久執(zhí)行一次。比如“*/10 * * * * 命令”,代表每隔10分鐘就執(zhí)行一遍命令 |
(3)特定時間執(zhí)行命令
| 45 22 * * * 命令 | 在22點45分執(zhí)行命令 |
| 0 17 * * 1 命令 | 每周1 的17點0分執(zhí)行命令 |
| 0 5 1,15 * * 命令 | 每月1號和15號的凌晨5點0分執(zhí)行命令 |
| 40 4 * * 1-5 命令 | 每周一到周五的凌晨4點40分執(zhí)行命令 |
| */10 4 * * * 命令 | 每天的凌晨4點,每隔10分鐘執(zhí)行一次命令 |
| 0 0 1,15 * 1 命令 | 每月1號和15號,每周1的0點0分都會執(zhí)行命令。注意:星期幾和幾號最好不要同時出現(xiàn),因為他們定義的都是天。非常容易讓管理員混亂。 |
3)案例:
condtab -e
*/1 * * * * /bin/echo ”11” >> /tmp/test.txt
tailf test.txt等待一分鐘會輸入進去
八、rpm(了解即可,比較麻煩)
8.1 概述
RPM(RedHat Package Manager),Rethat軟件包管理工具,類似windows里面的setup.exe
是Linux這系列操作系統(tǒng)里面的打包安裝工具,它雖然是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 安裝
首先需要掛載安裝的iso光盤,上面又講有關掛載的操作
例如CentOS-6.8-x86_64-bin-DVD1.iso(具體的從網(wǎng)上下載)
cd /mnt
mount -t iso9960 -o rw /dev/cdrom /mnt/cdrom/
cd /mnt/cdrom
ll
cd Packages
ll (發(fā)現(xiàn)有很多包)
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編程
9.1 概述
Shell是一個命令行解釋器,它為用戶提供了一個向Linux內(nèi)核發(fā)送請求以便運行程序的界面系統(tǒng)級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。
Shell還是一個功能相當強大的編程語言,易編寫、易調(diào)試、靈活性強。Shell是解釋執(zhí)行的腳本語言,在Shell中可以調(diào)用Linux系統(tǒng)命令。
9.2 shell腳本的執(zhí)行方式
1)echo輸出命令
(1)基本語法:
echo [選項] [輸出內(nèi)容]
選項:
-e: 支持反斜線控制的字符轉換
控制字符 作 用
\ 輸出\本身
\a 輸出警告音
\b 退格鍵,也就是向左刪除鍵
\c 取消輸出行末的換行符。和“-n”選項一致
\e ESCAPE鍵
\f 換頁符
\n 換行符
\r 回車鍵
\t 制表符,也就是Tab鍵
\v 垂直制表符
\0nnn 按照八進制ASCII碼表輸出字符。其中0為數(shù)字零,nnn是三位八進制數(shù)
\xhh 按照十六進制ASCII碼表輸出字符。其中hh是兩位十六進制數(shù)
(2)案例
[atguigu@hadoop102 sbin]$ echo "helloworld "
helloworld
[atguigu@hadoop102 sbin]$ echo ’\a‘
注意:必須有單引號或者雙引號
2)第一個Shell腳本
(1)需求:創(chuàng)建一個Shell腳本,輸出helloworld
(2)實操:
[atguigu@hadoop102 datas]$ touch helloworld.sh
[atguigu@hadoop102 datas]$ vi helloworld.sh
在helloworld.sh中輸入如下內(nèi)容
#!/bin/bash
echo “helloworld”
3)腳本的常用執(zhí)行方式
第一種:輸入腳本的絕對路徑或相對路徑
(1)首先要賦予helloworld.sh 腳本的+x權限
[atguigu@hadoop102 datas]$ chmod 777 helloworld.sh
(2)執(zhí)行腳本
/root/helloWorld.sh
./helloWorld.sh
第二種:bash或sh+腳本(不用賦予腳本+x權限)
sh /root/helloWorld.sh
sh helloWorld.sh
9.3 shell中的變量
1)Linux Shell中的變量分為“系統(tǒng)變量”和“用戶自定義變量”,可以通過set命令查看系統(tǒng)變量。
2)系統(tǒng)變量:HOME、HOME、HOME、PWD、SHELL、SHELL、SHELL、USER等等($表示變量)
$HOME(當前用戶的家)
$PWD(當前的目錄)
$SHELL(/bin/bash)
$USER(登錄的用戶)
3)顯示當前shell中所有變量:set
9.3.1 定義變量
1)基本語法:
變量=值
2)變量定義規(guī)則
(1)變量名稱可以由字母、數(shù)字和下劃線組成,但是不能以數(shù)字開頭。
(2) 等號兩側不能有空格
(3)變量名稱一般習慣為大寫
(4)雙引號和單引號有區(qū)別,雙引號僅將空格脫意,單引號會將所有特殊字符脫意
也就是說如果是雙引號,\t就會翻譯成空格,單引號就會直接輸出\t
如果希望單引號還是能夠輸出空格之類的,不脫意的話,就需要
echo -e ‘a(chǎn)\tb’
a b
3)案例
(1)定義變量A
A=8
(2)撤銷變量A
unset A
(3)聲明靜態(tài)的變量B=2,不能unset,不能修改
readonly B=2
(4)可把變量提升為全局環(huán)境變量,可供其他shell程序使用
export 變量名
9.3.2 將命令的返回值賦給變量
A=`ls -la` 反引號,運行里面的命令,并把結果返回給變量A A=$(ls -la) 等價于反引號9.3.3 設置環(huán)境變量
1)基本語法:
(1)export 變量名=變量值 (功能描述:設置環(huán)境變量的值)
(2)echo $變量名 (功能描述:查詢環(huán)境變量的值)
(3)source 配置文件 (功能描述:讓修改后的配置信息立即生效)
2)案例:
(1)在/etc/profile文件中定義JAVA_HOME環(huán)境變量
export JAVA_HOME=/opt/module/jdk1.7.0_79
export PATH=PATH:PATH:PATH:JAVA_HOME/bin
(2)查看環(huán)境變量JAVA_HOME的值
[atguigu@hadoop102 datas]$ echo $JAVA_HOME
/opt/module/jdk1.7.0_79
9.3.4 位置參數(shù)變量
1)基本語法
$n (功能描述:n為數(shù)字,$0代表命令本身, $1-$9代表第一到第九個參數(shù),十以上的參數(shù),十以上的參數(shù)需要用大括號包含,如${10}) $* (功能描述:這個變量代表命令行中所有的參數(shù),$*把所有的參數(shù)看成一個整體) $@ (功能描述:這個變量也代表命令行中所有的參數(shù),不過$@把每個參數(shù)區(qū)分對待) $# (功能描述:這個變量代表命令行中所有參數(shù)的個數(shù))2)案例
(1)計算輸入的參數(shù)1和參數(shù)2的兩個數(shù)的和,并輸出到控制臺
#!/bin/bash
num1=$1
num2=2sum=2 sum=2sum=(( $num1 + $num2))
#變量sum的和是num1加num2
echo $sum
#打印變量sum的值
(2)打印輸入的參數(shù)總數(shù)、所有參數(shù)
#!/bin/bash
echo "A total of KaTeX parse error: Expected 'EOF', got '#' at position 1: #? parameters" #…#代表所有參數(shù)的個數(shù)
echo "The parameters is: KaTeX parse error: Expected 'EOF', got '#' at position 5: *" #?使用*代表所有的參數(shù)
echo "The parameters is: KaTeX parse error: Expected 'EOF', got '#' at position 5: @" #?使用@也代表所有參數(shù)
(3)?與*與?與@的區(qū)別
#!/bin/bash
for i in "KaTeX parse error: Expected 'EOF', got '#' at position 5: *" #?*中的所有參數(shù)看成是一個整體,所以這個for循環(huán)只會循環(huán)一次
do
echo “The parameters is: i"donex=1foryin"i" done x=1 for y in "i"donex=1foryin"@”
#@中的每個參數(shù)都看成是獨立的,所以“@中的每個參數(shù)都看成是獨立的,所以“@中的每個參數(shù)都看成是獨立的,所以“@”中有幾個參數(shù),就會循環(huán)幾次
do
echo "The parameter$x is: y"x=y" x=y"x=(( x+1))donea)x +1 )) done a)x+1))donea)和$@都表示傳遞給函數(shù)或腳本的所有參數(shù),不被雙引號“”包含時,都以$1 2…2 …2…n的形式輸出所有參數(shù)
b)當它們被雙引號“”包含時,“$”會將所有的參數(shù)作為一個整體,以“$1 2…2 …2…n”的形式輸出所有參數(shù);“$@”會將各個參數(shù)分開,以“$1” “2”…”2”…”2”…”n”的形式輸出所有參數(shù)
9.3.5 預定義變量
1)基本語法:
$? (功能描述:最后一次執(zhí)行的命令的返回狀態(tài)。如果這個變量的值為0,證明上一個命令正確執(zhí)行;如果這個變量的值為非0(具體是哪個數(shù),由命令自己來決定),則證明上一個命令執(zhí)行不正確了。) $$ (功能描述:當前進程的進程號(PID)) $! (功能描述:后臺運行的最后一個進程的進程號(PID))2)案例
#!/bin/bash
#輸出當前進程的PID,這個PID就是當前這個腳本執(zhí)行時,生成的進程的PID
echo “The current process is $$”
#使用find命令在root目錄下查找hello.sh文件,符號&的意思是把命令放入后臺執(zhí)行
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 條件滿足,執(zhí)行后面的語句
9.5.2 常用判斷條件
1)兩個整數(shù)之間比較
= 字符串比較
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
2)按照文件權限進行判斷
-r 有讀的權限
-w 有寫的權限
-x 有執(zhí)行的權限
3)按照文件類型進行判斷
-f 文件存在并且是一個常規(guī)的文件
-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 ]
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,則執(zhí)行程序1
;;
“值2”)
如果變量的值等于值2,則執(zhí)行程序2
;;
…省略其他分支…
*)
如果變量的值都不是以上的值,則執(zhí)行此程序
;;
esac
2)案例
case $1 in
”start“)
echo “starting”
;;
”stop“)
echo “stoping”
;;
*)
echo “Usage:{start|stop}”
esac
9.6.3 for循環(huán)
1)基本語法1:
for 變量 in 值1 值2 值3…
do
程序
done
2)案例:
(1)打印時間
#!/bin/bash
#打印時間
通過這個案例也正好看到了$* 和 $@的區(qū)別,前者是一次性全部賦值給了i,后者是一個一個賦值給了i
3)基本語法2:
for (( 初始值;循環(huán)控制條件;變量變化 ))
do
程序
done
4)案例
(1)從1加到100
9.6.4 while循環(huán)
1)基本語法:
while [ 條件判斷式 ]
do
程序
done
2)案例
(1)從1加到100
9.7 read讀取控制臺輸入
1)基本語法:
read(選項)(參數(shù))
選項:
-p:指定讀取值時的提示符;
-t:指定讀取值時等待的時間(秒),也就是幾秒內(nèi)必須輸入完畢。
參數(shù)
變量:指定讀取值的變量名
2)案例
讀取控制臺輸入的名稱
[atguigu@hadoop101 etc]$ read -p “please input your name:” NAME
please input your name:lilei
[atguigu@hadoop101 etc]$ echo $NAME
lilei
9.8 函數(shù)
9.8.1 系統(tǒng)函數(shù)
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 自定義函數(shù)
1)基本語法:
[ function ] funname[()]
{
Action;
[return int;]
}
function start() / function start / start()
注意:
(1)必須在調(diào)用函數(shù)地方之前,先聲明函數(shù),shell腳本是逐行運行。不會像其它語言一樣先編譯。
(2)函數(shù)返回值,只能通過$?系統(tǒng)變量獲得,可以顯示加:return返回,如果不加,將以最后一條命令運行結果,作為返回值。return后跟數(shù)值n(0-255)
2)案例
(1)打印出比你輸入小的所有數(shù)(單參)
十、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 (功能描述:清除所有緩沖數(shù)據(jù))
yum deplist httpd (功能描述:列出一個包所有依賴的包)
yum remove httpd (功能描述:刪除httpd)
2)案例實操
yum install -y tree
10.3 關聯(lián)網(wǎng)絡yum源
1)前期文件準備
(1)前提條件linux系統(tǒng)必須可以聯(lián)網(wǎng)
(2)在Linux環(huán)境環(huán)境中訪問該網(wǎng)絡地址: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
10.4 制作本地yum源
1)為什么要制作本地YUM源
YUM源雖然可以簡化我們在Linux上安裝軟件的過程,但是生成環(huán)境通常無法上網(wǎng),不能連接外網(wǎng)的YUM源,說以接就無法使用yum命令安裝軟件了。為了在內(nèi)網(wǎng)中也可以使用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
添加上面內(nèi)容保存退出
(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
將第一個方框的中內(nèi)容刪除,將第二個中的name修改為eth0,并且復制ATTR[address],關系到密碼
vi /etc/sysconfig/network-scripts/ifconfig-0
將剛才復制的內(nèi)容粘貼過來
vi /etc/sysconfig/network
修改個名字
service network restart,如果失敗了就重啟
ping ww.baidu.com 成功即可
然后按照上面的進行掛載
啟動httpd
service httpd start
(10)將YUM源配置到httpd(Apache Server)中,其他的服務器即可通過網(wǎng)絡訪問這個內(nèi)網(wǎng)中的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文件
添加上面內(nèi)容保存退出
主要就是修改 baseurl=http://192.168.11.101/CentOS 即可
就相當于通過網(wǎng)絡訪問的。這里辦成了本地其他主機的ip,使得本地能夠訪問。
(14)在這臺新的服務器上執(zhí)行YUM的命令
[root@hadoop102 yum.repos.d]# yum clean all
[root@hadoop102 yum.repos.d]# yum repolist
轉載于:https://www.cnblogs.com/LeesinDong/p/10835270.html
總結
以上是生活随笔為你收集整理的大数据学习笔记之Linux基础(一):Linux初窥的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: simhash mysql_海量数据相似
- 下一篇: 【Week8作业 C】班长竞选【SCC缩