一、Linux目錄結構
二、Linux命令的分類
三、Linux常用命令
1、日常操作命令
**查看當前所在的工作目錄
pwd
**查看當前系統的時間
date
date +%Y-%m-%d
date +%T
date +%T-%m-%d" "%T
**查看日曆
cal 2012
**查看有誰在線(哪些人登錄到了服務器)
who 查看當前在線
last 查看最近的登錄歷史記錄
lastlog 查信息系統中所有用戶最近一次登錄信息
**查找可執行的命令
which ls
**查找可執行的命令和幫助的位置
**快捷鍵
ctrl+c:停止進程
ctrl+l:清屏
ctrl+r:搜索歷史命令
ctrl+q:退出
2、文件系統命令
**
ls / 查看根目錄下的子節點(文件夾和文件)信息
ls -al -a是顯示隱藏文件 -l是以更詳細的列表形式顯示
**查看文件信息
file a.txt
**切換目錄
cd 進入目錄;
cd ~ 進入用戶主目錄;
cd - 返回進入此目錄之前所在的目錄;
cd .. 返回上級目錄(若當前目錄爲“/“,則執行完後還在“/";".."爲上級目錄的意思);
cd ../.. 返回上兩級目錄;
cd !$ 把上個命令的參數作爲cd參數使用。
cd /home
**創建文件夾
mkdir aaa 這是相對路徑的寫法
mkdir -p bbb/ccc 遞歸創建
mkdir /date 這是絕對路徑的寫法
例子:
①在根目錄下創建一個itcast的文件夾
在/itcast目錄下創建src和WebRoot兩個文件夾
分別創建:mkdir /itcast/src
mkdir /itcast/WebRoot
同時創建:mkdir /itcast/{src,WebRoot}
②進入到/itcast目錄,在該目錄下創建.classpath和README文件
分別創建:touch .classpath
touch README
同時創建:touch {.classpath,README}
**刪除文件夾
rmdir 可以刪除空目錄
rm -r bbb 可以把bbb整個文件夾及其中的所有子節點全部刪除
rm -rf aaa 強制刪除aaa
刪除當前目錄下擴展名是java的文件
rm -f *.java
**修改文件夾名稱
mv aaa angelababy
**移動文件
mv test.txt src/Student.java 將test.txt移動到src目錄下,並修改文件名爲Student.java
**創建文件
touch somefile.1 創建一個空文件
echo "i miss you,my baby">somefile.2 利用重定向">"的功能,將一條指令的輸出結果寫入到一個 文件中,會覆蓋原文件的內容
echo "hugximing,gun dan">>somefile.2 將一條指令的輸出結果追加到一個文件中,不會覆蓋原文 件內容
例子:
①在/itcast目錄下面創建一個test.txt文件,同時寫入內容"this is test"
echo "this is test">test.txt
查看一下test.txt的內容
cat test.txt
more test.txt
less test.txt
向README文件追加寫入"please read me first"
echo "please read me first">>README
②將test.txt的內容追加到README文件中
cat test.txt>>README
**複製文件
cp a.txt /etc/b.txt
cp -r /itcast /itcast-bak 拷貝/itcast目錄下的所有文件到/itcast-bak
**查看單詞
wc -w README 查看README文件中多少個單詞
wc -l README 查看README文件中有多少行
**查看文件詳情
stat a.txt
**命令設置別名(重啓後無效)
alias ll="ls -l" 設置別名
unalias ll 取消設置
如果想讓別名重啓後仍然有效,需要修改
vi ~/.bashrc
**查找文件(需要更新庫:updatedb)
locate b.txt
**查找命令
查找當前目錄下及其子目錄下擴展名是java的文件
find -name *.java
從根目錄開始找
find / -name "hadoop*"
find / -name "hadoop*" -ls
查找並刪除
find / -name "hadoop*" -ok rm {} \;
find / -name "hadoop*" -exec rm {} \;
查找用戶爲hadoop的文件
find /usr -user hadoop -ls
查找用戶爲hadoop並且(-a)擁有組爲root的文件
find /usr -user hadoop -a -group root -ls
查找用戶爲hadoop或者(-o)擁有組爲root並且是文件夾類型的文件
find /usr -user hadoop -o -group root -a -type d
查找權限爲777的文件
find / -perm -777 -type d -ls
在/etc下查找hadoop文件
grep hadoop /etc
用vi文本編輯器來編輯生成的文件
******最基本用法
vi somefile.4
1、首先會進入“一般模式”,此模式只接受各種快捷鍵,不能編輯文件內容
2、按i鍵,就會從一般模式進入編輯模式,此模式下,敲入的都是文件內容
3、編輯完成之後,按Esc鍵退出編輯模式,回到一般模式
4、再按:,進入“底行命令模式”,輸入wq命令,回車即可
*****一些常用的快捷鍵(在一般模式下使用):
a 在光標後一位開始插入
A 在該行的最後插入
l 在該行的最前面插入
0(零) 光標跳到文件當前行的開頭
$ 光標跳到文件當前的行的末尾
gg 直接跳到文件的首行
G 直接跳到文件的末行
dd 刪除行,如果5dd,則一次性刪除光標後的5行
yy 複製當前行,負責多行,3yy表示複製當前行附近的3行
p 粘貼
v 進入字符選擇模式,選擇完成後,按y複製,按p粘貼
crtl+v 進入塊選擇模式,選擇完成後,按y複製,按p粘貼
shift+v 進入行選擇模式,選擇完成後,按y複製,按p粘貼
查找並替換 (在底行命令模式中輸入)%s/sad/88888888% 效果:查找文件中所有sad,替換爲 888888
/you 效果:查找文件中出現的you,並定位到第一個找到的地方,按n可以定位到下一個匹配位置 (按N定位到上一個)
:1,$s/hadoop/root/g 將第一行到最後一行的hadoop替換爲root
:1,$s/hadoop/root/c 將第一行到最後一行的hadoop替換爲root(有提示)
:w b.txt 文件另存爲b.txt
:w >> b.txt 將內容追加到b.txt
:e! 恢復到最初的狀態
ctrl+u (undo) 撤銷修改
ctrl+r (redo) 恢復
3、文件權限的操作
****linux文件權限的描述格式解讀
drwxr-xr-x (也可以用二進制表示111 101 101 -->755)
d:標識節點類型(d:文件夾 -:文件 |:鏈接)
r:可讀
w:可寫
x:可執行
第一組rwx:表示這個文件的擁有者對它的權限:可讀可寫可執行
第二組r-x:表示這個文件的所屬組對它的權限:可讀,不可寫,可執行
第三組r-x:表示這個文件的其他用戶(相對於上面兩類用戶)對它的權限:可讀,不可寫,可執行
****修改文件權限
chmod g-rw haha.dat 表示將haha.dat對所屬組的rw權限取消
chmod o-rw haha.dat 表示將haha.dat對其他人的rw權限取消
chmod u+x haha.dat 表示將haha.dat對所屬用戶的權限增加x
也可以用數字的方式來修改權限
chmod 664 haha.dat 就會修改成rw-rw-r--
如果要將一個文件夾的所有內容權限統一修改,則可以用-R參數
chmod -R 770 aaa/
將當前目錄下的所有文件與子目錄皆設爲任何人可讀取
chmod -R a+r *
目錄沒有執行權限的時候普通用戶不能進入
文件只有讀寫權限的時候普通用戶是可以刪除的(刪除文件不是修改它,是操作父級目錄),只要父級目錄有執行和修改的權限
**修改用戶組
將a.txt的用戶者設爲hadoop,組的擁有者設爲angela
chown hadoop:angela a.txt
將當前目錄下的所有文件與子目錄的用戶的使用者都設爲hadoop,組擁有者皆設爲angela
4、基本的用戶管理
****添加用戶
useradd angela
要修改密碼才能登錄
passwd angela 按提示輸入密碼即可
添加一個tom用戶,設置它屬於hadoop組,並添加註釋信息
分步完成:useradd tom
usermod -g hadoop tom
usermod -c "hr tom" tom
一步完成:useradd -g hadoop -c "hr tom" tom
設置tom用戶的密碼
passwd tom
修改tom用戶的登錄名爲tomcat
usermod -l tomcat tom
將tomcat添加到hadoop和root組中
usermod -G hadoop,root tomcat
查看tomcat的組信息
groups tomcat
添加一個jerry用戶並設置密碼
useradd jerry
passwd jerry
添加一個america的組
groupadd america
將jerry添加到america組中
將tomcat用戶從root組和hadoop組刪除
gpasswd -d tomcat root
gpasswd -d tomcat hadoop
將america組名修改爲am
groupmod -n am america
**爲用戶配置sudo權限
用root編輯vi /etc/sudoers
在文件的如下位置:爲hadoop添加一行即可
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
然後,hadoop用戶就可以用sudo來執行系統級別的指令
5、傳輸文件
***使用sftp工具傳輸文件
alt+p 調出後,用put命令上傳
上傳(如果不cd指定目錄,則上傳到當前用戶的主目錄):
sftp>cd /home/
sftp>put -r C;\User\Administrator\Desktop\day02\soft\jdk-7u45-linux-x64.tar.gz
下載(lcd指定下載到本地的目標路徑)
sftp>lcd d:/
sftp>get /home/jdk-7u45-linux-x64.tar.gz
***文件傳輸rz,sz,是Linux/Unix同Windows進行ZModem文件傳輸的命令行工具
優點是不用再開一個sftp工具登錄上去上傳下載文件
sz:將選定的文件發送(send)到本地機器
rz:運行該命令會彈出一個文件選擇窗口,從本地選擇文件上傳到服務器
安裝命令:
yum install lrzsz
SecureCRT設置默認路徑:
Options -> Session Options -> Terminal -> Xmodem/Zmodem ->Directories
Xshell設置默認路徑
右鍵會話 -> 屬性 -> ZMODEM -> 接收文件夾
從服務端發送文件到客戶端:
sz a.txt
從客戶端上傳文件到服務端:
rz
6、安裝軟件
***RPM軟件包管理命令
常用參數:
i:安裝應用程序
e:卸載應用程序
vh:顯示安裝進度
u:升級軟件包
qa:顯示所有已經安裝軟件包
rpm -qa
rpm -ivh MySQL-server-5.5.51-1.linux2.6.x86_64.rpm
***yum軟件安裝命令
yum install gcc-c++
yum update gcc-c++
yum remove gcc-c++
***安裝JDK
<1>上傳jdk-7u45-linux-x64.tar.gz到Linux上
<2>解壓jdk到/usr/local目錄
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local/
<3>設置環境變量,在/etc/profile文件最後追加相關內容
vi /etc/profile
<4>刷新環境變量
source /etc/profile
<5>測試java命令是否可用
java -version
***安裝Tomcat
<1>上傳apache-tomcat-7.0.68.tar.gz到Linux上
<2>解壓tomcat
tar -zxvf apache-tomcat-7.0.68.tar.gz -C /usr/local
<3>啓動tomcat
/usr/local/apache-tomcat-7.0.68/bin/startup.sh
<4>查看tomcat進程是否啓動
jps
<5>查看tomcat進程端口
netstat -anpt | grep 11939
<6>通過瀏覽器訪問tomcat
***安裝MySQL
<1>上傳MySQL-server-5.5.48-1.linuxx2.6.x86_64rpm、MySQL-client-5.5.48-1.linux2.6.x86_64.rpm
到Linux上
<2>使用rpm命令安裝MySQL-server-5.5.48-1.linuxx2.6.x86_64rpm,缺少perl依賴
rpm -ivh MySQL-server-5.5.48-1.linuxx2.6.x86_64.rpm
<3>安裝perl依賴,上傳6個相關的rpm包
<4>再安裝MySQL-server,rpm包衝突
rpm -ivh MySQL-server-5.5.48-1.linuxx2.6.x86_64.rpm
<5>卸載衝突的rpm包
rpm -e MySQL-server-5.5.48-1.linuxx2.6.x86_64.rpm
<6>再安裝MySQL-client和MySQL-server
rpm -ivh MySQL-client-5.5.48-1.linuxx2.6.x86_64.rpm
rpm -ivh MySQL-server-5.5.48-1.linuxx2.6.x86_64.rpm
<7>|啓動MySQL服務,然後初始化MySQL
service mysql start
/usr/bin/mysql_secure_installation
<8>測試MySQL
mysql -u root -p
7、正則表達式
規則:
.:任意一個字符
a*:任意多個a(零個或多個a)
a?:零個或一個a
a+:一個或多個a
.*:任意多個任意字符
\.:轉義
\<h.*p>:以h開頭,p結尾的一個單詞
o\{2\}:o重複兩次
**查找以h或r開頭的
**查找不是以h和r開頭的
grep '^[^hr]' /etc/passwd
**查找不是以h到r開頭的
grep '^[^h-r]' /etc/passwd
**cut截取以:分割,保留第七段
grep hadoop /etc/passwd | cut -d: -f7
**排序
du | sort -n
**查詢不包含hadoop的
grep -v hadoop /etc/passwd
**查詢包含hadoop
grep 'hadoop' /etc/passwd
.(點代表任意一個字符)
grep 'h.*p' /etc/passwd
**查找以hadoop開頭的
grep '^hadoop' /etc/passwd
**查找以hadoop結尾的
8、系統管理操作
****查看主機名
hostname
****修改主機名(重啓後無效)
hostname hadoop
****修改主機名(重啓後永久生效)
vi /etc/sysconfig/network
****修改IP(重啓後無效)
ifconfig etho 192.168.12.22
****修改IP(重啓後永久生效)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
重啓服務
service network restart
****修改靜態地址後發現無法ping外網
需要設置網關
route add default gw 192.168.33.1
添加nameserver
vi /etc/resolv.conf
nameserver 192.168.33.1
****修改ip地址和主機的映射關係
vi /etc/hosts
****關閉iptables並設置其開機啓動/不啓動
service iptables stop
chkconfig iptables on
chkconfig iptables off
****查看系統信息
uname -a
uname -r
id 顯示當前用戶的ID
id -g 顯示用戶組的ID
id hadoop 顯示指定用戶信息
mount **** 掛載外部存儲設備到文件系統中
mkdir /mnt/cdrom 創建一個目錄,用來掛載
mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/ 將設備/dev/cdrom/掛載到掛載點:/mnt/cdrom 中
umount 取消掛載
umount /mnt/cdrom
加載windows共享
mount -t cifs //192.168.3.4/tools /mnt
****統計文件或文件夾的大小
du -sh /mnt
df -h 查看磁盤的空間
****查看內存使用情況
free
****查看日誌
ls /var/log/
****查看系統報錯日誌
tail /var/log/messages
****查看進程
top
****結束進程
kill 1234
kill -9 4333 強制殺死該進程
****ssh遠程連接
ssh 登錄名@ip
****關機
halt
shutdown -h now
init 0
****重啓
reboot
shutdown -r now
****配置主機之間的免密ssh登錄
假如 A 要登錄 B
在A上操作:
%%首先生成密鑰對
ssh-keygen (提示時,直接回車即可)
%%再將A自己的公鑰拷貝並追加到B的授權列表文件authorized_keys中
ssh-copy-id B
四、本地YUM源製作
1、yum相關概念
1.1 什麼是yum
yum全稱爲Yellow dog Update,Modified)是一個在Fedora和RedHat以及CentOS中的shell前端軟件包管理器。基於rpm包管理,能夠從指定的服務器自動下載rpm包並安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
1.2 yum的作用
在Linux上使用源碼的方式安裝軟件非常繁瑣,使用yum可以簡化安裝的過程
2、yum的常用命令
安裝httpd並確認安裝
yum install -y httpd
列出所有可用的package和package組
yum list
清除所有緩衝數據
yum clean all
列出一個包所有依賴的包
yum deplist httpd
刪除httpd
3、製作本地yum源
3.1 爲什麼要製作本地yum源
yum源雖然可以簡化我們在Linux上安裝軟件的過程,但是生成環境通常無法上網,不能連接外網的yum源,說以就無法使用yum命令安裝軟件了。爲了在內網中也可以使用yum安裝相關的軟件,就要配置yum源
3.2 yum源的原理
yum源其實就是一個保存了多個rpm包的服務器,可以通過http的方式來檢索、下載並安裝相關的rpm包
3.3 製作本地yum源
<1>準備一臺Linux服務器,用最簡單的版本CentOS-6.7-x86_64-minimal.iso
<2>配置好這臺服務器的IP地址
ifconfig eth0 up 激活eth0網卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改配置文件
service network restart 重啓服務,自動獲取IP地址
<3>上傳CentOS-6.7-x86_64-bin-DVD1.iso到服務器
<4>將CentOS-6.7-x86_64-bin-DVD1.iso鏡像掛載到某個目錄
mkdir /var/iso
mount -o loop CentOS-6.7-x86_64-bin-DVD1.iso /var/iso
<5>修改本機上的yum源配置文件,將源指向自己,備份原有的yum源配置文件
cd /etc/yum.repos.d/
rename .repo .repo.bak*
vi CentOS-Local.repo
添加上面內容保存退出
<6>清除yum緩衝
yum clean all
<7>列出可用的yum源
yum repolist
<8>安裝相應的軟件
yum install -y httpd
<9>開啓httpd使用瀏覽器訪問http://192.168.0.100:80(訪問不同,檢查防火牆是否開啓了80端口或關閉防火牆)
service httpd start
打開80端口
vi /etc/sysconfig/iptables
在-A INPUT -j REJECT --reject-with icmp-host-prohibited上面加入如下語句
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重啓服務
/etc/init.d/iptables restart
查看端口是否生效
<10>將yum源配置到httpd(Apache Server)中,其他的服務器即可通過網絡訪問這個內網中的yum源了
cp -r /var/iso /var/www/html/CentOS-6.7
<11>取消先前掛載的鏡像
umount /var/iso
<12>在瀏覽器中訪問http://192.168.0.100/CentOS-6.7/
<13>讓其他需要安裝rpm包的服務器指向這個yum源,準備一臺新的服務器,備份或刪除原有的yum源配置文件
cd /etc/yum.repos.d/
rename .repo .repo.bak*
vi CentOS-Local.repo
添加上面的內容保存退出
<14>在這臺新的服務器上執行yum的命令
yum clean all
yum repolist
<15>安裝相應的軟件
yum install -y gcc
<16>加入依賴包到私有yum的repository
進入到repo目錄
執行命令:createrepo
五、VMware虛擬機三種聯網方法及原理
1、Bridge---橋接:默認使用VMnet0
<1>原理:
Bridge的橋就是一個主機,這個主機擁有兩塊網卡,分別處於兩個局域網中,同時在“橋”上,運行着程序,讓局域網A中的所有數據包原封不動的流入B,反之亦然。這樣,局域網A和B就無縫的在鏈路層連接起來了,在橋接時,WMware網卡和物理網卡應該處於同一IP網段,當然要保證兩個局域網沒有衝突的IP。
VMware的橋也是同樣的道理,只不過,本來作爲硬件的一塊網卡,現在由VMware軟件虛擬了,當採用橋接時,VMware會虛擬一塊網卡和真正的物理網卡進行橋接,這樣,發到物理網卡的所有數據包就到了VMware虛擬機,而由VMware發出的數據包也會通過橋從物理網卡的那端發出
<2>聯網方式
這一種聯網方式最簡單,在局域網內,你的主機是怎麼聯網的,你在虛擬機裏就怎麼連網,把虛擬機看成局域網內的另一臺電腦就行了
提示:主機網卡處在一個可以訪問Internet的局域網中,虛擬機才能通過Bridge訪問Internet
2、NAT--網絡地址轉換:默認使用VMnet8
<1>原理:
NAT是Network address translate的簡稱。NET技術應用在internet網關和路由器上,比如192.168.0.123這個地址要訪問internet,它的數據包就要通過一個網關或者路由器,而網關或者路由器擁有一個能訪問internet的ip地址,這樣的網關和路由器就要在收發數據包時,對數據包的IP協議層數據進行更改(即NAT)以使私有網段主機能夠順利訪問internet。此技術解決了IP地址稀缺的問題。同樣的私有IP可以網關NAT上網。
虛擬網卡和虛擬機處於一個地址段,虛擬機和主機不同一個地址段,主機相當於虛擬機的網關,所依虛擬機能ping到主機的IP,但是主機ping不到虛擬機的IP
<2>聯網方式
方法1:動態IP地址
主機是靜態IP或動態IP都無所謂,將虛擬機設置成使用DHCP方式上網,Windows下選擇“自動獲取IP”,Linux下開啓DHCP服務即可。(這種方法最簡單,不用過多的設置,但要在VMware中進行“編輯->虛擬網絡設置”,將NAT和DHCP都開啓了,一般NAT默認開啓,DHCP默認關閉)
方法2:靜態IP地址
如果不想使用DHCP,也可以手動設置
IP設置與VMnet1同網段,網關設置成VMnet8的網關(在“虛擬網絡設置”裏的Net選項卡里能找到Gateway)通常是xxx.xxx.xxx.2
DNS設置與主機相同
例如:主機IP是10.70.54.31,設置虛擬機IP爲10.70.54.22。Netmask,Gateway,DNS都與主機相同即可實現 虛擬機----主機 虛擬機<---->互聯網通信
提示:使用NAT技術,主機能上網,虛擬機就可以訪問Internet,但是主機不能訪問虛擬機
3、Host-Only---私有網絡共享主機:默認使用VMnet1
<1>原理:
提供的是主機和虛擬機之間的網絡互訪,只想讓虛擬機和主機之間有數據交換,而不是讓虛擬機訪問Internet,就要採用這個設置了
Host-only的條件下,VMware在真正的windows系統中,建立一塊軟網卡,這塊網卡可以在網絡連接中看到,一般是VMnet1,這塊網卡的作用就是使windows看到虛擬機的IP。
<2>聯網方法
方法1:動態IP地址
像上面那樣開啓DHCP後,虛擬機直接自動獲取IP地址和DNS。就可以和主機相連了。
方法2:靜態IP地址
也可以手動設置,將虛擬機IP設置與VMnet1同網段,網關設置成Vmnet1的網關相同,其餘設置與VMnet1相同,DNS設置與主機相同
例如:VMnet1 IP:172.16.249.1 Gateway:172.16.249.2
那麼虛擬機 IP:172.16.249.100 Gateway:172.16.249.2
這樣 虛擬機<--->主機 可以通信
但是 虛擬機<--->互聯網 無法通信
提示:Host-only技術只用於主機和虛擬機互訪,於訪問Internet無關
解決克隆後etho不見的問題
直接修改 /etc/sysconfig/network-script/ifcfg-eth0
刪掉UUID HWADDR
配置靜態地址
然後:
rm -rf /etc/udev/rules.d/70-persistent-net.rules
然後:
reboot