1、安裝與配置java
千萬不要點擊 「我已複製該虛擬機」,會引發MAC地址的衝突,由於每一臺linux服務器都有一個MAC地址,若是複製,MAC地址也會被拷貝node
能夠經過Xshell 進行遠程鏈接python
node1 node2 node3 在之後作 大數據開發中能夠做爲三個hadoop節點linux
如今須要打開 node3 後續會安裝 docker應用ios
爲node3設置ip,選擇網卡時,能夠直接按 Tab 鍵,自動補全存在的網卡nginx
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33docker
BOOTPROTO=dhcp 意思是計算機啓動時,分配ip 是動態分配,dhcp指動態分配shell
TYPE=Ethernet數據庫
PROXY_METHOD=none編程
BROWSER_ONLY=no
# BOOTPROTO=dhcp
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7bfe3a1c-3e6c-476c-bf7e-4be727e6602c
DEVICE=ens33
ONBOOT=yes
DNS1=192.168.56.2
IPADDR=192.168.56.130
GATEWAY=192.168.56.2
Ip地址每臺不一樣,DNS1和Gateway node1 node2 node3和CentOS 6這些臺都是相同的
ip地址改完後,須要輸入如下命令
[root@localhost ~]# service network restart
就會把修改的配置從新加載,才能成功
若是想修改主機名
[root@localhost ~]# vi /etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
HOSTNAME=node3
[root@localhost ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.130 node3
這樣之後就能夠不用經過ip訪問,而是能夠直接經過主機名訪問了
安裝操做系統
● 設置IP:
● VM:編輯>虛擬網絡編輯器
● vi/etc/sysconfig/network-scripts/ifcfg-eth0
● 刪除UUID和MAC地址
● ONBOOT=yes
● BOOTPROTO=static
● IPADDR=172.16.233.131
● NETMASK-255.255.255.0
● GATEWAY=172.16.233.2
● DNS1=172.16.233.2
● rm-fr/etc/udev/rules.d/70-persistent-net.rules
拷貝虛擬機,MAC地址會改變,剛剛選擇已移動,因此vmware自動解決了這個問題,若是是 老版本的vmware或者不當心選擇我已複製,則 須要刪除規則,使它失效,目前是沒有必要用 rm-fr/etc/udev/rules.d/70-persistent-net.rules 處理的
● VM:
● 默認維護,每一臺克隆,或新建的虛擬機,MAC地址不重複
● 若是虛擬機保留/etc/udev/rules.d/70-persistent-net.rrules這個文件,在經過該虛擬機克隆的時候:
● 1.文件被帶到新的虛擬機中
● 2.vm變動了新的虛擬機的mac地址
● SO:新機器不能使用eth0接口
● 你配置的/etc/sysconfig/network-scripts/ifcfg-eth0就不能應用
● 關閉防火牆&Selinux
● service iptables stop
● chkconfig iptables off
● vi/etc/selinux/config
● SELINUX=disabled
● 關機
● 拍攝快照
● 注意:往後,虛擬機必定要用快照克隆
2、Linux介紹
Linux概況
Linux簡介
什麼是Linux
簡單地說,Linux是一套無償使用和自由傳播的類Unix操做系統,它主要用於基於Intel x86系列CPU的計算機上。其目的是創建不受任何商品化軟件的版權制約的、全世界都能自由使用的Unix兼容產品
內核
庫:.so共享對象,windows:dll動態連接庫,應用程序
Unix是須要付費的
linux命令分爲內部命令和外部命令 ,內部命令都在kernel內核中
Linux核心
● LINUX的內核:內核是系統的核心,是運行程序和管理像磁盤和打印機等硬件設備的核心程序。
程序啓動時,首先主板有一個Bios系統,上面有一小塊內存,會把kernel加載進去,kernel在經過各類目錄調用linux的功能,好比bash人機交互界面等;把操做系統須要的文件一個又一個的加載到內存裏,成爲咱們的操做系統,操做系統也是一個程序,只是這些程序全都運行在內存裏
Win10須要更多的內存運行,因此比win7更吃內存
● LINUX SHELL:Shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口。
● LINUX文件系統:Linux文件系統是文件存放在磁盤等存儲設備上的組織方法。Linux能支持多種目前滸的文件系統,如EXT二、EXT三、FAT、VFAT、ISO9660、NFS、SMB等。
● LINUX應用系統:標準的Linux系統都有一整套稱爲應用程序的程序集,包括文本編輯器、編程語言、XWindow、辦公套件、Internet工具、數據庫等。
3、Linux簡單命令
簡單命令
● type:命令類型
● 外部命令 & 內部命令
[root@localhost ~]# type ifconfig
ifconfig 是 /usr/sbin/ifconfig
[root@localhost ~]# cd /sbin
[root@localhost sbin]# ll -l | grep ifconfig
-rwxr-xr-x. 1 root root 82000 8月 3 2017 ifconfig
-rwxr-xr-x. 1 root root 3104 6月 10 2014 pifconfig
type+命令 後,若是返回一個路徑,那麼這個命令就是外部命令,是經過調用文件系統中的命令啓動的
內部命令都是在linux內核裏的,好比
[root@localhost sbin]# type echo
echo 是 shell 內嵌
● help:內部命令幫助
● help:內部命令清單,附帶語法格式,描述
● help 具體內部命令
一般用於內部命令
● man:幫助手冊manual
● yum install man man-pages -y
一般用於外部命令,man也是一個操做文檔軟件,能夠經過 yum install man的方式安裝
用type 區分外部命令和內部命令
● whereis:定位命令位置,定位外包命令。
[root@localhost ~]# whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@localhost ~]# whereis bash
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz
bash是一個shell程序,一個bash文件能夠讀取標準輸入流,或者從腳本文件進行讀取
● file:文件類型
[root@localhost ~]# file /sbin/ifconfig
/sbin/ifconfig: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=dff548da1b4ad9ae2afe44c9ee33c2365a7c5f8f, stripped
ELF至關於windows中的可執行文件
bash能夠理解爲腳本解釋器,至關於linux的腳本解釋器,能夠把命令寫到文件裏,經過bash執行
● echo:打印到標準輸出
[root@localhost ~]# echo "hello"
hello
● $PATH:環境變量:路徑
環境變量是系統中的總體變量,能夠理解爲全局變量,全部程序,包括shell程序
這裏是linux的全局變量,因此程序只要進入linux系統,都可以定義它
[root@localhost ~]# $PATH
-bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin: 沒有那個文件或目錄
sbin在全局變量中,因此即便不在當前文件夾,ifconfig也能夠執行
就是經過環境變量找到文件夾的
linux系統以冒號進行隔離
[root@localhost ~]# echo $aaa
[root@localhost ~]# aaa=66
[root@localhost ~]# echo $aaa
66
這個叫shell變量,輸入以後才能夠有,可是環境變量至關於java中的全局變量
● $LANG
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
$LANG 也是一個環境變量,表示系統是英(中)文的,同時支持utf-8
linux內核經過shell程序(殼)調用bash解釋器,bash至關於腳本解釋器,會解釋用戶輸入的命令,執行後會在path中給定的目錄從左向右進行尋找
外部程序ifconfig可以執行起來就是經過bash解釋器執行的程序
空白符用於切割不一樣的命令
[root@localhost ~]# type yum
yum 已被哈希 (/usr/bin/yum)
因此yum 也是一個外部命令,做用是安裝
[root@localhost ~]# file /usr/bin/yum
/usr/bin/yum: Python script, ASCII text executable
能夠看出這是一段python的腳本,進入目錄查看一下
[root@localhost ~]# vi /usr/bin/yum
#!/usr/bin/python 注入瞭解釋器,#!/,表明注入解釋器,如下的程序都用解釋器執行
import sys
try:
import yum
except ImportError:
print >> sys.stderr, """\
若是是bash解釋器執行,一樣的是 #!/
[root@localhost ~]# yum install man
其實是調用python文件/usr/bin/yum腳本去指定作相應操做
● type yum
● file /usr/bin/yum
● /usr/bin/yum:a /usr/bin/python script text executable
● vi /usr/bin/yum
● #!/usr/bin/python
● ps -fe進程列表
● type ps
● man ps
ps就至關於任務管理器,PID就至關於windows中的進程
[root@localhost ~]# ps
PID TTY TIME CMD
57179 pts/2 00:00:00 bash
58836 pts/2 00:00:00 ps
若是想查看更多的信息
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:45 ? 00:00:08 /usr/lib/systemd/systemd --switch
root 2 0 0 08:45 ? 00:00:00 [kthreadd]
……
……
[root@localhost ~]# type ps
ps 已被哈希 (/usr/bin/ps)
ps也是一個外部命令,因此能夠輸入man ps查看
● echo
● type echo
● help echo
● echo hello
變量
● a=3
● echo $a
[root@localhost ~]# a=3
[root@localhost ~]# echo $a
3
[root@localhost ~]# echo $a=3
3=3
● b=(1,2,3)
● echo $b
[root@localhost ~]# b=(1,2,3)
[root@localhost ~]# echo $b
1,2,3
● b=(1 2 3)
● echo $b
● echo ${b[2]}
[root@localhost ~]# b=(1 2 3)
[root@localhost ~]# echo $b
1
[root@localhost ~]# echo $b[2]
1[2]
[root@localhost ~]# echo ${b[2]}
3
由於linux默認識別空格爲分隔符,逗號是不行的。因此 b=(1 2 3)至關於輸入了三個數,就是一個數組了,echo $b[2]的結果是1[2],至關因而把 1 和 [2]鏈接起來的,並不認爲b[2]是一個數組,用大括號標註起來,至關於作一個轉義,整個做爲一個變量
linux是從左到右,一個一個解釋的
● echo hello$agod
● echo hello${a}god
[root@localhost ~]# echo hello$agod
hello
[root@localhost ~]# echo $a
3
a有值,echo hello$agod 只打出了hello,由於把 agod總體當成了一個變量,可是agod是沒有值得
[root@localhost ~]# echo hello${a}god
hello3god
${a}表示a是一個變量名傳給$
● unset myurl
若是給一個變量賦值後,想要取消掉,unset系統中就沒有這個變量了,能夠經過這種方式取消變量
[root@localhost ~]# myurl=baidu
[root@localhost ~]# echo $myurl
baidu
[root@localhost ~]# unset myurl
[root@localhost ~]# echo $myurl
[root@localhost ~]#
● echo $$ 當前shell的PID
[root@localhost ~]# echo $$
57179 → 這是一個 PID,當前shell的PID
shell也是一個程序,shell鏈接kernel和應用程序
既然是程序,就有一個本身的PID
經過兩個不一樣的shell,至關於 兩個接入點訪問,就會有兩個PID
● ps -fe
● bash
● whereis bash
● /bin/bash
● shell腳本第一行的定義~!
shell腳本第一行,#和!的意義就至關於使用bin/bash去實現
● PATH:windows。linux:環境變量
● 記錄查詢執行命令所在的路徑
● 分割:
● hash -r清除緩存
[root@localhost ~]# hash
命中 命令
3 /usr/bin/file
6 /usr/bin/ps
4 /usr/bin/whereis
2 /usr/bin/yum
1 /usr/bin/vi
2 /usr/bin/man
至關於把應用程序調到內存中
● shell:對於命令查找的方式,在PATH記錄的目錄中查找,緩存到內存hash中
這樣下次不用從linux系統中查找,直接在hash緩存中查找
● man
● 1:用戶命令(/bin,/usr/bin,/usr/local/bin)
● 2:系統調用
● 3:庫用戶
● 4:特殊文件(設備文件)
● 5:文件格式(配置文件的語法)
● 6:遊戲
● 7:雜項(Miscellaneous)
● 8:管理命令(/sbin,/usr/sbin,//usr/local/sbin)
● shell,bash:程序
● /etc/profile是bash的配置文件
● source/etc/profile 至關於加載了配置文件,把更改的東西加載到上面
4、文件系統命令
文件系統命令
● 文件權限:9位,每3位一組,3組權限(U,G,0)每一組:rwx(讀,寫,執行),r--
U User G Group O Other
[root@localhost ~]
User是root 組也就是root組,Other是除了root之外的其餘的任何用戶
[root@localhost etc]# ls -l
總用量 1368
drwxr-xr-x. 3 root root 101 2月 4 06:01 abrt
-rw-r--r--. 1 root root 16 2月 4 06:12 adjtime
-rw-r--r--. 1 root root 1518 6月 7 2013 aliases
-rw-r--r--. 1 root root 12288 2月 4 06:27 aliases.db
drwxr-xr-x. 2 root root 51 2月 4 06:02 alsa
……
……
rw- 給當前用戶 r-- 給group組 後面的r-- 是給其餘用戶的
-rw-r--r--. 1 root root 數字 1 1 1 2 表明被引用的次數,被軟(硬)鏈接的次數
至關於一個文件建一個快捷方式
1 後面的兩個root分別表明所屬的用戶和所屬組
在日後是建立時間和文件名
● 文件硬連接的次數
● 文件的屬主(owner)
● 文件的屬組(group)
● 文件大小(size),單位是字節
● 時間戳(timestamp):最近一次被修改的時間
● 訪問:access
● 修改:modify,文件內容發生了改變
● 改變:change,metadata,元數據
ls 查詢,前面是d的爲目錄,前面是 -的爲文件
● Filesystem Hierarchy Standard(文件系統層次化標準)
● /boot:系統啓動相關的文件,如內核、initrd,以及grub(bootloader)
● /dev:設備文件
[root@node3 dev]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 17G 7.5G 9.5G 45% /
……
/dev/sda1 1014M 157M 858M 16% /boot
/dev/sr0 4.2G 4.2G 0 100% /run/media/root/Cen
/dev/mapper/centos-root /dev/sda1 能夠理解爲分區的概念
設備文件就是指磁盤的設備文件
● /etc:配置文件
系統啓動時會調用一些配置文件
● /home:用戶的家目錄,每個用戶的家目錄一般默認爲/home/USERNAME
除了root用戶,root用戶在root目錄下;在home下能夠建立多個用戶
每一個用戶的文件夾都是隔離的,不一樣的用戶之間不能訪問
從root權限退到普通用戶,不須要輸入密碼
[root@node3 ~]# su wm01
[wm01@node3 root]$ pwd
/root
[wm01@node3 root]$ cd ~
[wm01@node3 ~]$ pwd
/home/wm01
[wm01@node3 ~]$ cd ..
[wm01@node3 home]$ cd wm02
bash: cd: wm02: 權限不夠
cd ~ 直接進入家目錄,不一樣的用戶是隔離開的
● /root:管理員的家目錄;
● /lib:庫文件
● /media:掛載點目錄,移動設備
● /mnt:掛載點目錄,額外的臨時文件系統
● /opt:可選目錄,第三方程序的安裝目錄
好比nginx能夠安裝在這裏
● /proc:僞文件系統,內核映射文件
linux一切皆爲文件,因此進程相關的文件都會在這裏
[root@node3 ~]# cd /proc/$$ 進入當前進程
[root@node3 66448]# ls
attr cwd map_files oom_adj schedstat task
autogroup environ maps oom_score sessionid timers
cgroup fd mountinfo pagemap smaps wchan
……
[root@node3 66448]# cd fd
[root@node3 fd]# ls
0 1 2 255
0表明輸入輸出和錯誤
● /sys:僞文件系統,跟硬件設備相關的屬性映射文件
● /tmp:臨時文件,/var/tmp
● /var:可變化的文件 通常會把日誌文件放在這裏
● /bin:可執行文件,用戶命令
● /sbin:管理命令
● df:顯示磁盤使用狀況
[root@node3 ~]# df -h 顯示disk的分配狀況
● du:顯示文件系統使用狀況
切換用戶無需退出操做系統,能夠用 su 進行切換,su表明switch user 切換用戶
[root@node3 var]# du -h
h表明human,人類,就是human readable
s表明summary,總結
linux是多人共用的,磁盤愈來愈少的狀況下,查看文件夾使用是否超量
就能夠用 du -sh ./* 對當前目錄全部文件進行總結查找
./表明當前目錄,*表明全部的
[root@node3 var]# du -sh ./*
0 ./account
0 ./adm
3.3M ./cache
0 ./crash
8.0K ./db
0 ./empty
……
[root@node3 ~]# du -sh
4.2G .
[root@node3 ~]# cd /var
[root@node3 var]# du -sh
111M .
若是想查特定的文件夾,能夠 du -sh /文件夾名
[root@node3 var]# du -sh /root
4.2G /root
[root@node3 var]# type du
du 已被哈希 (/usr/bin/du) 存在路徑,因此 du 也是一個外部程序
● ls:顯示目錄
● cd:切換工做目錄 Linux 的目錄要加 / 直接跳是跳不過去的
[root@node3 ~]# cd /
[root@node3 /]# cd /etc/sysconfig/
[root@node3 sysconfig]# cd ..
[root@node3 etc]# cd - 若是不當心返回上層,能夠用這種方式進入
/etc/sysconfig
[root@node3 sysconfig]# pwd
/etc/sysconfig
[root@node3 sysconfig]# cd ~ 回到家目錄,root回到root,其他用戶回到home
[root@node3 ~]# pwd
/root
[root@node3 ~]# cd /
[root@node3 /]# pwd
/
● pwd:顯示當前工做目錄
● mkdir:建立目錄
在當前目錄,深度建立目錄;./表明當前目錄
[root@node3 ~]# mkdir -p ./em/db/v8
也能夠水平建立目錄,能夠用變量的方式實現
[root@node3 ~]# mkdir abc
[root@node3 ~]# mkdir ./abc/{x,y,z}dir
[root@node3 ~]# cd abc
[root@node3 abc]# ls
xdir ydir zdir
● rm:刪除
● cp:拷貝
● mv:移動
● ln:連接
● stat:元數據
● touch
● mkdir:建立目錄
● mkdir -p./a/b/c
● mkdir a/{1,2,3}dir
● rm:刪除
● rm -f
● rm -rf /
-rf r recursive f force
-r 會出現交互式提示
-rf 強制刪除,不會出現交互式提示
[root@localhost tmp]# rm profile
rm:是否刪除普通文件 "profile"?y
● cp:拷貝
● cp/etc/{profile,inittab} ./
● cp -r./a./new
● cp -l cp-s
當前目錄下的文件須要加 點. ./表明當前目錄
[root@localhost etc]# cp ./profile /tmp
[root@localhost etc]# cd /tmp
[root@localhost tmp]# ls
profile
……
若是拷貝目錄,須要加 -r,有一個循環的意思,目錄下面還有目錄;拷貝目錄不須要加 ./
[root@localhost em]# cp -r nginx /tmp
[root@localhost em]# cd /tmp
[root@localhost tmp]# ls
nginx
……
● mv:移動
其實就是剪切的意思,移動常常有兩個用途,更名或者移動到另外一個文件夾
如今給nginx 更名
[root@localhost tmp]# mv nginx nginx1
[root@localhost tmp]# ls
nginx1
ssh-4Bij5yBn3SJl
……
把 nginx1 移動到別的目錄
[root@localhost tmp]# mv nginx1 /opt/em
[root@localhost tmp]# cd /opt/em
[root@localhost em]# ls
em1 nginx nginx1
[root@localhost em]# rm -rf nginx1
[root@localhost em]# ls
em1 nginx
● ln:連接
● ln默認硬連接ln install.log wm.txt 就會生成 wm.txt文件
● ln -s 軟連接 ln -s wm.txt bjwm.log
前面的數字 272678 等,叫作索引號,能夠理解爲在磁盤上的位置
數字相同能夠 理解爲兩個引用變量指向同一個對象
-rw-r--r--. 2 後面的數字2 是同一個索引號被引用的次數
[root@localhost ~]# ll -li
總用量 8
33574978 -rw-------. 1 root root 1523 1月 25 15:15 anaconda-ks.cfg
33574987 -rw-r--r--. 1 root root 1571 1月 25 15:24 initial-setup-ks.cfg
……
[root@localhost ~]# ll -l
總用量 8
-rw-------. 1 root root 1523 1月 25 15:15 anaconda-ks.cfg
-rw-r--r--. 1 root root 1571 1月 25 15:24 initial-setup-ks.cfg
……
ll -li 能夠把索引號顯示出來
硬連接後,改變一個文件的內容,另外一個文件的內容也會跟着改變,相似於快捷方式
不加參數項默認硬連接
加上 -s 是軟連接,執行連接的文件就至關於執行很深層的文件;不須要在同一目錄下操做
[root@localhost ~]# ln -s em.txt infmajem.log
[root@localhost ~]# ll -l
總用量 8
-rw-------. 1 root root 1523 1月 25 15:15 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 6 2月 6 12:38 infmajem.log -> em.txt
-rw-r--r--. 1 root root 1571 1月 25 15:24 initial-setup-ks.cfg
……
硬連接各自是各自的,並無誰指向誰,能夠彼此理解爲是一個變量,都指向統一的位置
軟鏈接存在一種依賴關係,兩個文件的索引號不一樣,至關於新生成了一個值,至關於建立一個快捷方式,若是把源刪掉,快捷方式也會很差使
紅色的意思是在報警找不到源,因此沒法連接
• 元數據
元數據指描述文件或者數據的數據
• stat
stat用於描述 profile
[root@localhost ~]# cd /etc
[root@localhost etc]# stat profile
文件:"profile"
大小:1819 塊:8 IO 塊:4096 普通文件
設備:fd00h/64768d Inode:16787062 硬連接:1
權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
環境:system_u:object_r:etc_t:s0
最近訪問:2021-02-06 04:14:17.982017594 +0800
最近更改:2018-04-11 12:18:26.000000000 +0800
最近改動:2021-01-25 15:06:21.110000857 +0800
profile 是交互外殼啓動時的配置文件,stat profile可以看到修改狀況或者訪問
開發的時候通常不會給root權限,只有系統管理員有系統root權限
|是管道至關於把文件經過管道傳到另外一個命令上,linux以空格切割命令
一個輸入流經過管道輸入到另外一個命令上面
[root@localhost etc]# cat profile | more
• touch
能夠建立文件
[root@localhost em]# ls
nginx
[root@localhost em]# touch test
[root@localhost em]# ls
nginx test
touch後面能夠跟路徑,可以指定路徑建立
[root@localhost em]# touch /opt/shell/tst