日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Linux命令

發(fā)布時間:2024/1/3 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 Linux命令 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、日常命令

命令后--help,可以查出該命令的用法以及參數(shù)。
pwd:查看當(dāng)前所在目錄的路徑

date:查看當(dāng)前時間

date +%Y-%m-%d

date -s “2018-1-1”設(shè)置日期為2018-1-1

這個命令其實(shí)不用記,不會的話,直接date --help,查看幫助,就知道各個參數(shù)啥意思,關(guān)鍵在于,得知道是date +……


who
  可以顯示當(dāng)前登錄的用戶以及登錄形式


關(guān)機(jī)/重啟(必須是root用戶)

shutdown -h now ##立刻關(guān)機(jī)
shutdown -h +10 ##10min以后關(guān)機(jī)
shutdown -h 12:00:00 #12點(diǎn)整的時候關(guān)機(jī)
halt ##等于立刻關(guān)機(jī)


重啟

shutdown -r now
reboot #等于立刻重啟


清屏
  clear ##或者快捷鍵 ctrl+l

退出當(dāng)前進(jìn)程
  ctrl+c 或者用q

掛起當(dāng)前流程

ctrl+z ##進(jìn)程hi掛起在后臺
bg jonid ##讓進(jìn)程在后臺繼續(xù)執(zhí)行(jobid為運(yùn)行程序的id)
fg jonid ##讓進(jìn)程回到前臺(jobid為運(yùn)行程序的id)


echo
  相當(dāng)于打印內(nèi)容到屏幕上

  Linux定義變量,直接變量=參數(shù)即可,比如:a=1
  打印參數(shù)前需要加上$符號才能顯示其內(nèi)容,假設(shè)直接不加,還是會顯示參數(shù)名

二、目錄操作

1、查看目錄信息

ls / 查看根目錄下的子節(jié)點(diǎn)(文件夾和文件)信息
ls . 查看當(dāng)前目錄下信息
ls ../ 查看上一級的目錄信息
ls -l . 列出當(dāng)前目錄下文件的詳細(xì)信息
ls -l 列出當(dāng)前目錄下文件的詳細(xì)信息
ls -al -a是顯示隱藏文件 -l是以更詳細(xì)的列表形式顯示
ls -l -h 列出的文件大小會以K顯示,而不是字節(jié)

總結(jié)(ls --help可以查看參數(shù)的寫法):

ls . 和 ls其實(shí)一樣

ls就是顯示文件夾和可顯示的文件名稱

ls -l 會顯示文件夾以及可顯示文件的大小以及權(quán)限等

ls -al 就是在上一步之上加了一個顯示隱藏的文件

ls -alh 就是在上一步的基礎(chǔ)之上,將文件大小以Kb形式顯示,更加直觀

注:
d:directory:代表一個目錄;-代表文件;l代表鏈接,是快捷方式
root root 文件屬于root,屬于用戶組root

ls -l -h或者寫成ls -lh參數(shù)可以放在一起寫,-h是顯示文件大小以Kb的形式


ls -lha上一步的基礎(chǔ)上,再顯示隱藏文件,前面帶點(diǎn)的就是隱藏的



2、切換工作目錄

cd /home/gzw   ## 切換到用戶的主目錄(/home/用戶名)
cd ~   ## 切換到用戶主目錄(/home/用戶名)
cd   ## 切換到用戶的主目錄(/home/用戶名)
cd -   ## 切換到上一步的目錄


3、創(chuàng)建文件夾

mkdir /aaa ## 這是絕對路徑的寫法的寫法,在根目錄下建立一個aaa
mkdir /aaa/bbb ## 這是在aaa文件夾內(nèi)新建一個bbb文件夾

mkdir aaa ## 這是相對路徑的寫法
mkdir -p aaa/bb/ccc ##假設(shè)aaa,bbb都不存在,就去建立ccc,前面加-p,會同時將aaa,bbb,ccc建立起來,遵循剛剛寫的結(jié)構(gòu)


4、刪除文件夾

rmdir aaa ## 只能刪除空白的目錄
rm -r aaa ## 可以將aaa整個文件夾和子節(jié)點(diǎn)全部刪除,包括aaa
rm -rf aaa ## 強(qiáng)制刪除 aaa


5、移動或修改文件夾

mv aaa angelababy ##將aaa文件夾移動到 angelababy文件夾內(nèi)
mv 本質(zhì)上是移動
mv install.log aaa/ ## 將當(dāng)前目錄下的install.log 移動到aaa文件夾中去
mv install.log aaa/ notinstall.log ## 將instal.log移動到aaa下,且改名為notinstall.log
mv a b/c ##將文件夾a移動到文件夾b內(nèi)并且將文件夾a的名字改為c
mv mubby/ mybaby ## 將mubaby改名為mybany



rename
  可以用來批量更改文件名字

  比如很多文件,用 rename .txt .txt.bak 意思是將.txt結(jié)尾的文件改為.txt.bak *

三、文件操作

一、創(chuàng)建文件

1、
  touch somefile.1 ##創(chuàng)建一個新的空文件,大小為0(但是未見后綴跟文件的類型無關(guān),盡管是avi格式,也可以放文本)


  另一種方式:利用“>”重定向的功能,將一條指令的輸出結(jié)果寫入到一個文件內(nèi),會覆蓋源文件內(nèi)容,如果指定的文件不存在,則會創(chuàng)建出來
例如:echo "I love you !" > 1.txt ## 將I love you ! 重定向到1.txt文件內(nèi)

  那么特殊情況:ll > 2.txt ##這樣會把ll這個命令的輸出內(nèi)容放到2.txt內(nèi)

  追加:echo "you love me" >> 1.txt ##在內(nèi)容的原有基礎(chǔ)之上追加這些文本

二、vi文本編輯器

  (相當(dāng)于window的文本編輯器,notepad++)
  vi 1.txt ##修改1.txt(如果1.txt不存在的話,則會先創(chuàng)建一個空的1.txt進(jìn)行編輯)

首先會進(jìn)入“一般模式”,此模式只接受各種命令快捷鍵,不能編輯文件內(nèi)容
首先按“i”鍵,就會從一般模式進(jìn)入編輯模式,此模式下,敲入的都是文件內(nèi)容(這里按i鍵,可以在光標(biāo)定位的位置輸入,進(jìn)行插入;按a,會在光標(biāo)所在位置的后一個字符善后進(jìn)行操作;按o,會在光標(biāo)所在位置下面重新插入一個新的空白行,且光標(biāo)在該行的第一個上)
編輯完成之后,按Esc退出編輯模式,回到一般模式
再按:進(jìn)入的“底行命令模式”,輸入wq命令,回車即可,這樣是保存且退出;按w,就是保存;但是還是在一般模式下,還可以按i進(jìn)行編輯


常用快捷鍵
(用在一般模式下)

a 在光標(biāo)的最后一位插入
A 在該行的最后插入
I 在該行的最前面插入
gg 直接跳到文件的首行
G 直接跳到文件的末行
dd 刪除一行
3dd 刪除3行
YY 復(fù)制一行
3YY 復(fù)制3行
p 粘貼
u undo回退

三、查找并替換

(在底行命令模式中輸入)
1、顯示行號
  :set nu
2、不顯示行號
  :set nonu
3、查找關(guān)鍵字
  :/you ##效果:查找文件中出現(xiàn)的you,并定位到第一個找到的地方,按n可以定位到下一個匹配的位置(按N定位到上一個)
4、替換操作
  :s/sad/bbb ##將sad替換成bbb(這種情況只能替換光標(biāo)所在那一行的第一個sad為bbb)
  :%s/sad/bbb ##全局替換(實(shí)際操作是會替換每一行的最前面的那個sad)

四、拷貝、刪除、移動

cp somefile.1 /home/gzw ##復(fù)制一個文件到指定的目錄下
cp somefile.2 /home/gzw/somefile2.1 ##復(fù)制一個文件到gzw下,并且命名為somefile2.1
rm /home/gzw/somefile.1 ##刪除somfile.1(會提示確定刪除,要輸入y)
fm -f/home/gzw/somefile.1
mv /home/gzw/somefile.1 ../

五、查看文件內(nèi)容

cat somefile.1 ## 一次性將文件內(nèi)容全部輸出(輸出在控制臺)

分頁查看命令:

more somefile.1 ## 將somefile.1輸出在控制臺,但是可以翻頁查看,下一頁按空格鍵,上一頁按b(代表back),退出按(q)
less somefile.1 ## 將somefile.1輸出在控制臺,但是可以翻頁查看,下一頁按空格鍵,上一頁按b(代表back),上翻一行(↑),下翻一行(↓),且可以搜索關(guān)鍵字(/搜索內(nèi)容)

跳到文件末尾:G

跳到文件首行:gg

退出less:q

六、查看日志

tail -10 install.log ##查看文件尾部的10行
tail +10 install.log ##查看文件第10-->最后一行
tail -f install.log ##實(shí)時看日志的輸出,追蹤日志文件的信息(f追蹤的是文件的唯一標(biāo)識,就算文件被改了名字,也可以被追蹤并輸出,也就是說,將install.log改為install2.log,用這么命令依舊可以追蹤到內(nèi)容ll -i可以看文件的唯一標(biāo)識,在文件的最前面那串)
tail -F install.log ##實(shí)時看日志的輸出,追蹤日志文件的信息(F追蹤的是文件名,改了就追蹤不了)
head -10 install.log ##查看文件的頭10行

七、打包壓縮

1、gzip 壓縮
  gzip a.txt ##壓縮后會變成a.txt.gz,體積會縮小

2、解壓
  gzip -d a.txt.gz ##解壓a.txt.gz成為a.txt

3、打包:將制定文件或文件夾(一堆文件變一個文件)
  tar -cvf bak.tar ./aaa ##將./aaa內(nèi)的內(nèi)容打包成一個名字叫bak.tar的文件
  tar -cvf bak.tar 1.txt 2.txt aaa/ ##將aaa文件夾內(nèi)的1.txt和2.txt打包成為bak.tar,打完后的bak.tar也在aaa內(nèi)
  (c是創(chuàng)建一個包,v是顯示整個打包的進(jìn)度,f是要創(chuàng)建的那個包的名稱)

tar -xvf bak.tar ##將打好的包解壓
x是抽取,v顯示進(jìn)度,f文件名

一般來講,tar打包之后還不夠,這只是說將其打包,并未壓縮,用的多的是打包成一個壓縮文件,可以在上一步的基礎(chǔ)上再用 gzip bak.tar 變成bak.tar.gz文件,那么怎么一步完成呢???

tar -zcvf bak.tar.gz 1.txt 2.txt aaa/ ##將aaa文件夾下的1.txt和2.txt打包壓縮成一個bak.tar.gz文件
tar -zxvf bak.tar,gz ##將bak.tar.gz解壓并且不打包,也就會變成1.txt和2.txt

解壓到指定文件夾下:
tar -zxvf bak.tar.gz -C /usr ##將bak.tar.gz解壓到usr文件夾內(nèi)

四、查找命令

一、常用查找命令的使用

1、查找可執(zhí)行的命令所在路徑:

  which ls


2、查找可執(zhí)行的命令和幫助的位置

  whereis ls(where和is中間無空格)


3、從某個文件夾開始查找文件

  find /-name "gzw*"(“/”是搜索的路徑;-name是按照什么搜,可以按照 -user按 所屬用戶搜 -perm按權(quán)限搜;“gzw*”搜的內(nèi)容,*為通配符,代表以gzw為開頭的文件或者文件夾)



4、查找并刪除

  find / -name "gzw*" -ok rm {};
  find / -name "gzw*" -exec rm {};


5、顯示歷史命令
  history ##顯示之前的所有命令
  或者直接按↑鍵

二、grep命令(搜索文件的內(nèi)容)

1、基本使用-查詢包含gzw的行(不用打開文件)
  grep gzw /etc/passwd ##在/etc/passwd內(nèi)查找有g(shù)zw的行

gzw:x:500:500:gzw:/home/gzw:/bin/bash
  x是密碼的占位符,500為用戶id,500所屬的組的id,gzw是這個用戶的全名,也就是描述名稱,/home/gzw是用戶gzw的家目錄,/bin/bash表示gzw用戶所用的shell是bashshell(id從500開始才是真的用戶,root除外)
  grep aaa ./*.txt ##在當(dāng)前目錄下,所有.txt結(jié)尾的文件內(nèi)找包含aaa的行

2、cut截取以:分割保留第七段
  grep gzw /etc/passwd | cut -d:-f7

3、查詢不包含gzw的行
  grep -v gzw /etc/passwd ##-v是反選

五、文件權(quán)限操作

1、Linux文件權(quán)限的描述格式解讀

  r:可讀;w:可寫;x:可執(zhí)行
drwxr-xr-x可以用二進(jìn)制表示為:111 101 101 ==> 755

d:標(biāo)志節(jié)點(diǎn)類型(d:文件夾 -:文件 l:鏈接)
r:可讀;w:可寫;x:可執(zhí)行
第一組:rwx ##表示這個文件的擁有者對它的權(quán)限:可讀可寫可執(zhí)行
第二組:r-x ##表示這個文件的所屬組用戶對它的權(quán)限:可讀不可寫可執(zhí)行
第三組:r-x ##表示這個文件的其他的用戶對它的權(quán)限:可讀不可寫可執(zhí)行

2、修改文件權(quán)限

chmod 777 1.txt ##將1.txt變?yōu)閞wxrwxrwx
chmod +x 1.txt ##擁有者、所屬用戶、其他用戶都加一個x權(quán)限
chmod u+rx 1.txt ##擁有者加rx權(quán)限,其他的用戶不變
chmod g+rx 1.txt ##所屬用戶組加rx權(quán)限,其他的用戶不變
chmod o+rx 1.txt ##其他用戶加rx權(quán)限,其他的用戶不變
chmod -x 1.txt ##所有人減去一個x權(quán)限


但是注意,改的只是這個文件/文件夾的權(quán)限,假設(shè)文件夾還有文件,沃特娘的想一次性全部給改了,咋個辦???
chmod -R 777 aaa ##將aaa文件夾以及文件夾內(nèi)的全部文件全部改成777

那么r、w、x三個權(quán)限各是什么意思?
r對文件來說,是可讀取內(nèi)容;多文件夾來說是可以ls;
w對于文件來講,是改文件的內(nèi)容 ;對于目錄來講,是可以在目錄內(nèi)增刪子節(jié)點(diǎn)
x對文件來說,是能否運(yùn)行這個文件;對文件夾來說是能否cd進(jìn)入這個目錄;

那么,假設(shè)我想要一個目錄或者文件直接轉(zhuǎn)個組或者轉(zhuǎn)給一個用戶怎么辦?
這個命令只能在root用戶做:
chown root:root a.sh
就是說這個文件之前的所有者以及所有組多這個文件沒了權(quán)限,文件的權(quán)限轉(zhuǎn)給了root組內(nèi)的root用戶

六、用戶管理

需要掌握的:

添加一個用戶:

useradd spark
passwd spark  根據(jù)提示設(shè)置密碼即可

刪除一個用戶:

userdel -r spark  加一個-r就表示將用戶的主目錄都刪除

1、添加用戶

  添加一個tom用戶,設(shè)置其屬于 user 組,并添加注釋信息:

分步完成過程如下:

  useradd tom

  usermod -g user tom

  usermod -c "hr tom" tom

一步完成:

  useradd -g user -c "hr tom" tom

設(shè)置tom密碼:

  passwd tom

2、修改用戶

修改tom用戶的登錄名字為tomcat

  usermod -l tomcat tom

將tomcat添加到sys和root組中

  usermod -G sys,root tomcat

查看tomcat 的組信息

  groups tomcat

3、用戶組操作

添加一個叫america的組

  groupadd america

將 jerry 添加到 america 組中

  usermod -g america jerry

將tomcat用戶從root組和sys組刪除

  gpasswd -d tomcat root

  gpasswd -d tomcat sys

將 america 組名修改成 am

  groupmod -n am america

4、為用戶配置 sudo 權(quán)限

這是為了個普通用戶一個管理員的權(quán)限

用 root 編輯 vi/etc/sudoers

在文件的如下位置,為 gzw 添加一行即可:

rooot  ALL=(ALL)  ALL

gzw  ALL=(ALL)  ALL

然后,gzw用戶就可以用 sudo 來執(zhí)行系統(tǒng)級別的命令

比如: sudo usersdd mayun

這行命令執(zhí)行完,下一行如果不用sudo,還是依舊本身的權(quán)限

七、系統(tǒng)管理操作

一、掛載外部存儲設(shè)備

  比如說插入一個光盤,光盤里面有一個Oracle,或者說是一個鏡像,我們在Linux里面是顯示為一個設(shè)備,而不是文件;那我們?nèi)绻L問里面的文件,就要把它映射到文件目錄,就叫做掛載

  可以掛載什么呢?光盤、硬盤、磁帶、光盤鏡像文件等

1、掛載光驅(qū)

  mkdir  /mnt/cdrom    創(chuàng)建一個目錄,用來掛載

  mont -t iso9660 -o ro/dev/cdrom/mnt/cdrom/  將設(shè)備/dev/cdrom掛載到掛載點(diǎn):/mnt/cdrom 中

2、掛載光盤鏡像文件(.iso文件)

  mont -t iso9660 -o loop /home/gzw/Centos-6.7.DVD.iso /mnt/centos

 注:掛載的資源在重啟后即失效,需要重新掛載。想要自動掛載,可以將掛載信息設(shè)置到 /etc/fstab 配置文件中:

  /dev/cdrom  /mnt/cdrom  iso9660 defaults  00

  /root/CentOS-6.7-x86_64-bin-DVD1.iso  /mnt/centos  iso9660 defaults,ro,loop  00

3、卸載 umont

  umont /mnt/cdrom

4、存儲空間查看

  df -h

二、統(tǒng)計文件以及文件夾的大小

1、du -sh /mnt/cdrom/packages  

  統(tǒng)計指定路徑下的所有子目錄和文件的大小

2、df -h

  查看磁盤的空間

三、系統(tǒng)服務(wù)管理

service --status-all  ##查看系統(tǒng)所有的后臺服務(wù)進(jìn)程

  后面可以接管道:

  service --status-all | grep httpd

servoce sshd status  ##查看指定的后臺服務(wù)進(jìn)程的狀態(tài)

service sshd stop

service sshd start

service sshd restart

配置后臺服務(wù)進(jìn)程的開機(jī)自啟

chkconfig httpd on  ##讓httpd 服務(wù)開機(jī)自啟

chkconfig httpd off  ##讓httpd 服務(wù)開機(jī)不要自啟

查看開機(jī)自啟服務(wù)的命令:

chkconfig --list | grep httpd

截圖:

那么這幾個你姐是什么意思呢?往下看

四、系統(tǒng)啟動級別管理

  vi /etc/inittab

可以看到有以下幾個級別

# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)  ##關(guān)機(jī),級別如果設(shè)置這個,那么一啟動就會關(guān)機(jī)
# 1 - Single user mode  ##單用戶模式
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)  ##多用戶系統(tǒng),不支持網(wǎng)絡(luò)文件系統(tǒng)
# 3 - Full multiuser mode  ##全功能的多用戶模式
# 4 - unused  
# 5 - X11  ##帶圖形界面的全功能模式,比3多了個圖形界面
# 6 - reboot (Do NOT set initdefault to this)  ##重啟

究竟要哪個級別,在這里填id就好了:一般來講設(shè)置為3就ok

那么如果一個服務(wù):

  chkconfig httpd off

那么這個服務(wù)0-6都會被關(guān)閉

  chkconfig --level35 httpd on

意味著,我這個服務(wù)在3,5的開機(jī)情況下可以自啟

五、進(jìn)程管理

  top

  相當(dāng)于Windows的任務(wù)管理器,是動態(tài)變化的:

  

  free

  顯示內(nèi)存的使用量,你發(fā)送的的那一瞬間的內(nèi)存量

  

  ps -ef | grep ssh  查看現(xiàn)在運(yùn)行的跟ssh有關(guān)的進(jìn)程

     進(jìn)程號  父進(jìn)程號          啟動的命令,哪個程序啟動的

那如果我要把進(jìn)程給殺掉,怎么做?

  kill -9 1532 (1532為進(jìn)程號,例如上邊的第一個進(jìn)程)

八、SSH免密登陸配置

一、SSH工作機(jī)制

  1、相關(guān)概念

  SSH為 Secure Shell(安全外殼協(xié)議)的縮寫,是一種協(xié)議。網(wǎng)絡(luò)遠(yuǎn)程訪問Linux,敲Shell命令,提供安全協(xié)議,提供協(xié)議,本質(zhì)上是為了會話內(nèi)容加密和身份驗(yàn)證。

  SSH的具體實(shí)現(xiàn)是由客戶端服務(wù)器的軟件組成

  服務(wù)端是一個守護(hù)進(jìn)程(sshd),他在后臺運(yùn)行并響應(yīng)來自客戶端的連接請求;客戶端包含ssh程序以及像scp(遠(yuǎn)程拷貝)、slogin(遠(yuǎn)程登錄)、sftp(安全文件傳輸)等其他的應(yīng)用程序。

  2、認(rèn)證機(jī)制

  從客戶端來看,SSH提供兩種級別的安全驗(yàn)證

(一)基于口令的安全驗(yàn)證

  只要你知道自己的賬號和口令,就可以登錄到遠(yuǎn)程主機(jī)(就像用xshll登錄)

(二)基于密鑰的安全驗(yàn)證(一臺Linux登錄另一臺Linux,因?yàn)長inux上沒有XShell)

  需要依靠密鑰,也就是你必須自己創(chuàng)建一堆密鑰,并且把公用密鑰放在需要訪問的服務(wù)器上

假如A要登錄B,

九、網(wǎng)絡(luò)管理

一、主機(jī)名配置

1、查看主機(jī)名

  hostname

2、改主機(jī)名

  hostname gzw01  ##將主機(jī)名改成gzw01,重啟后失效(重新登錄可以查看)

3、永久改主機(jī)名

  vi /etc/sysconfig/network  找到HOSTNAME,改掉值,就ok了

二、IP地址配置

1、setup(并不是所有的版本可用)

  用root輸入setup命令,進(jìn)入交互修改界面

2、修改配置文件(重啟后永久生效)

  vi /etc/sysconfig/network-scripts/ifconfig-eth0

改完之后,要重啟網(wǎng)絡(luò)服務(wù):

  service network restart

3、ifconfig 命令(重啟后無效)

  ifconfig eth0 192.168.10.42

三、域名映射

etc/hosts 文件(域名映射表)  用于在通過主機(jī)名訪問時做ip解析之用。所以,你想訪問一個什么樣的主機(jī)名,就需要把這個主機(jī)名和它對應(yīng)的ip地址配置在 etc/hosts 文件中

四、網(wǎng)絡(luò)服務(wù)管理

1、后臺服務(wù)管理

service network status  ##查看指定服務(wù)的狀態(tài)
service network stop  ##停止指定服務(wù)
service network start  ##啟動指定服務(wù)
service network restart  ##重啟指定服務(wù)
service --status-all  ##查看系統(tǒng)中所有的后臺服務(wù)

2、設(shè)置后臺服務(wù)的自啟配置

chconfig  ##查看所有服務(wù)器自啟配置
chkconfig iptables off  ##關(guān)掉指定服務(wù)的自啟動
chkconfig iptables on  ##開啟指定服務(wù)的自啟動

3、系統(tǒng)中網(wǎng)絡(luò)進(jìn)程的端口監(jiān)聽情況:

  netstat -nltp

十、Linux上常用軟件安裝

一、Linux軟件安裝方式

  常用以下幾種方式:

  1、二進(jìn)制發(fā)布包

  軟件已經(jīng)針對具體平臺編譯打包,只要解壓,修改配置即可

  2、RPM發(fā)布包(Redhat Package Mangement)

  軟件已經(jīng)按照rehat的包管理工具規(guī)范RPM進(jìn)行打包發(fā)布,需要獲取到相應(yīng)的軟件RPM發(fā)布包,然后用RPM命令安裝

  

  3、Yum在線安裝

  軟件已經(jīng)以RPM規(guī)范打包,但已經(jīng)發(fā)布在了網(wǎng)絡(luò)上的一些服務(wù)器上,可用 yum 在線安裝服務(wù)器上存在的 rpm 軟件,并且會自動解決軟件安裝過程中的庫依賴問題(類似maven

  4、源碼編譯安裝

  軟件以源碼工程的形式發(fā)布,需要獲取到源碼工程后用相應(yīng)的人開發(fā)工具進(jìn)行編譯打包部署

二、JAVA軟件安裝——JDK安裝

  1、上傳jdk壓縮包

通過sftp工具上傳即可

  2、解壓jdk壓縮包

tar -zxvf jdk-XXX.gz -C /usr/local/

  3、修改環(huán)境變量PATH 

vi /etc/profile

在文件最末尾(按G)加兩行:

export JAVA_HOME=/usr/local/jdk1.7

export PATH=$PATH:$JAVA_HOME/bin

  4、讓環(huán)境變量生效

source /etc/profile

  即可

三、JAVA軟件安裝——Tomcat安裝

tar -zxvf /soft/apache-tomcat-7.0.47.tar.gz -C /usr/local/

cd /usr/local/apache-tomcat-7.0.47/bin/

./starttup.sh

四、使用rpm軟件安裝方式

1、安裝Mysql服務(wù)端:

  可以用 yum 來安裝,這里我們用 rpm 包來演示:

2、安裝Mysql客戶端:

五、使用yum方式安裝

六、使用源碼方式安裝

十一、防火墻的規(guī)則配置

一、防火墻配置

  防火墻配置文件為

/etc/sysconfig/iptables

來控制本機(jī)的出、入網(wǎng)絡(luò)訪問行為

二、防火墻配置 

查看防火墻狀態(tài)

  service iptables status

關(guān)閉防火墻

  service iptables stop

啟動防火墻

  service iptables start

禁止防火墻自啟

  chkconfig iptables off

保存配置

  service iptables save

禁止ssh登錄

  iptables -A INPUT -p tcp --dport 22 -j DROP

加入一條 INPUT 規(guī)則開放 80端口

  iptables -I INPUT -p tcp --dport 80 -j ACCEPT

十二、高級文本處理命令(無需打開文本進(jìn)行編輯)

cut

概念:cut 命令可以從一個文本文件或者文本流中提取文本列

語法:

cut -d '分隔字符' -f fields  ##用于有特定分隔字符
cut -c 字符區(qū)間  ##用于排列整齊的信息

選項(xiàng)和參數(shù):

-d:后面接分隔符。與 -f 一起使用;
-f :依據(jù) -d 的分隔字符將一段信息分割成數(shù)段,用 -f 取出第幾段的意思;
-c : 以字符 (characters) 的單位取出固定字符區(qū)間

實(shí)例:

PATH變量如下:

# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/jdk1.8.0_131/jre/bin:/usr/local/apache-jmeter-5.0/bin/:/root/bin

這里我們可以發(fā)現(xiàn),各個路徑之間是用 : 分隔路徑的,那么我們可以利用 cut 命令去將其分隔開,假如我想提取第 2 個路徑,那么應(yīng)該輸入如下:

# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/jdk1.8.0_131/jre/bin:/usr/local/apache-jmeter-5.0/bin/:/root/bin
# echo $PATH | cut -d ':' -f 2   ##提取第 2 個路徑 /usr/local/sbin
# echo $PATH | cut -d ':' -f 2,4  ##提取第 2 和第 4 個路徑
/usr/local/sbin:/sbin
# echo $PATH | cut -d ':' -f 2-   ##提取第 2 個,直至最后一個路徑
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/jdk1.8.0_131/jre/bin:/usr/local/apache-jmeter-5.0/bin/:/root/bin
# echo $PATH | cut -d ':' -f -2   ##提取第 1 到第 2 個
/usr/lib/qt-3.3/bin:/usr/local/sbin
# echo $PATH | cut -d ':' -f 1-3,5 ##提取 1-3 以及第 5 個
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/bin

以上,就是 cut 的常用方法,可以理解并掌握一下

sed(并不會保存文本,需要保存自行重定向)

用法:先新建一個 文本文件 ,隨便編輯些內(nèi)容進(jìn)去

# cat example 
1: fjpqejfpjewjfwejvjqwjev
2: djoiqjdowjodfwejocpf,vf,vf v]qfkv]qwefkqwjfe vqfjvnqwojnfqwjnc[f
3:mowedfwelfw    ff]    f]jf]
4:cnioecewcw owe ioqwe hfoqweh foweh fiupqw huipq ui uipqe ui ruipq
5:fwecv iefvqw 

刪除:d 命令 (delete)

# sed '2d' example     ##刪除 example 文件的第 2 行
1: fjpqejfpjewjfwejvjqwjev
3:mowedfwelfw    ff]    f]jf]
4:cnioecewcw owe ioqwe hfoqweh foweh fiupqw huipq ui uipqe ui ruipq
5:fwecv iefvqw

# sed '2,$d' example    ##刪除 example 文件的第 2 行到末尾的所有行(保留第 1 行)
1: fjpqejfpjewjfwejvjqwjev

# sed '$d' example     ##刪除 example 文件的最后一行
1: fjpqejfpjewjfwejvjqwjev
2: djoiqjdowjodfwejocpf,vf,vf v]qfkv]qwefkqwjfe vqfjvnqwojnfqwjnc[f
3:mowedfwelfw ff] f]jf]
4:cnioecewcw owe ioqwe hfoqweh foweh fiupqw huipq ui uipqe ui ruipq

# sed '/4/'d example   ##刪除 example 文件所有包含 ‘4’ 的行
1: fjpqejfpjewjfwejvjqwjev
2: djoiqjdowjodfwejocpf,vf,vf v]qfkv]qwefkqwjfe vqfjvnqwojnfqwjnc[f
3:mowedfwelfw ff] f]jf]
5:fwecv iefvqw

替換:s 命令(substitution)

# sed 's/2/change2/g' example     ##在整行范圍內(nèi)將 ‘2’ 替換成 ‘change2’ 。如果無 g 標(biāo)記,則只有每行第一個匹配的 ‘2’ 被替換
1: fjpqejfpjewjfwejvjqwjev
change2: djoiqjdowjodfwejocpf,vf,vf v]qfkv]qwefkqwjfe vqfjvnqwojnfqwjnc[f
3:mowedfwelfw    ff]    f]jf]
4:cnioecewcw owe ioqwe hfoqweh foweh fiupqw huipq ui uipqe ui ruipq
5:fwecv iefvqw

# sed -n 's/^2/change2/p' example   ##(-n)選項(xiàng)和 p 標(biāo)志一起使用表示只打印那些發(fā)生替換的行。也就是以 ‘2’ 為開頭的行,被替換成 ‘change2’,并打印這一行
change2: djoiqjdowjodfwejocpf,vf,vf v]qfkv]qwefkqwjfe vqfjvnqwojnfqwjnc[f

# sed 's/^1/&number one/' example   ## & 符號表示在找到的字符串后追加一個字符串,比如在所有的以 ‘1’ 為首的字符串中,在 ‘1’ 后追加 ‘number one’ ,變成 ‘1number one’
1number one: fjpqejfpjewjfwejvjqwjev
2: djoiqjdowjodfwejocpf,vf,vf v]qfkv]qwefkqwjfe vqfjvnqwojnfqwjnc[f
3:mowedfwelfw ff] f]jf]
4:cnioecewcw owe ioqwe hfoqweh foweh fiupqw huipq ui uipqe ui ruipq
5:fwecv iefvqw

# sed -n 's/(fwe)cv/1changechange/p' example   ##將文本中的 ‘fwe’ 標(biāo)記為 1 ,并將所有的 ‘fwecv’ 替換成‘fwechangechange’,并且被替換的行被打印出來
5:fwechangechange iefvqw
……

awk

說明:awk 是一個強(qiáng)大的文本你分析工具,相對于 grep 的查找,sed 的編輯,awk 在其對數(shù)據(jù)分析并生成報告時,顯得尤為強(qiáng)大。簡單來講 awk 就是把文件逐行地讀入,以空格為分隔符將每行切片,切開的那部分再進(jìn)行各種分析處理

工作流程:讀入有 ‘
’ 換行符分割的一條記錄,然后將記錄按照指定的域分隔符劃分域,填充域,$0 則表示所有域,$1 表示第一個域,$n表示第 n 個域。默認(rèn)域分割符是 ‘空白鍵’ 或者 ‘[tab]鍵’ ,所以 $1 表示登錄用戶,$3 則表示用戶 ip ,以此類推

# last -n 5  ##最近登錄的 5 個賬戶的信息
root     pts/2        192.168.66.1     Sat Dec 29 21:58   still logged in   
root     pts/1        192.168.66.1     Sat Dec 29 18:28   still logged in   
root     pts/0        192.168.66.1     Sat Dec 29 18:28   still logged in   
reboot   system boot  2.6.32-358.el6.i Sat Dec 29 18:11 - 23:32  (05:21)    
root     pts/1        192.168.66.1     Sat Dec 29 14:29 - down   (03:41)

# last -n 5 | awk '{print $1}'  ##只顯示最近登錄的 5 個賬號,不需要要其他信息
root
root
root
reboot
root

# cat /etc/passwd|awk -F ':' '{print $1}'  ##如果只顯示 /etc/passwd/ 的賬戶;這里用 -F ‘:’ 表示將 ‘:’ 作為分隔符,然后取第一個域
root
bin
daemon
adm
lp
sync
……

# cat /etc/passwd|awk -F ':' '{print $1" "$7}'  ##顯示 /etc/passwd 的賬戶和對應(yīng)的 shell,而賬戶與 shell 之間用 tab 鍵分隔
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
……

# cat /etc/passwd|awk -F ':' '{print $1"==="$7}'  ##或者自己指定分隔符
root===/bin/bash
bin===/sbin/nologin
daemon===/sbin/nologin
adm===/sbin/nologin
lp===/sbin/nologin
sync===/bin/sync
……

# cat /etc/passwd|awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print"blue,/bin/nosh"}'  ##顯示 /etc/passwd 的賬戶以及對應(yīng)的shell,用‘,’分隔,第一行加‘name,shell’,最后一行加‘blue,/bin/nosh’
name,shell
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
adm,/sbin/nologin
lp,/sbin/nologin
sync,/bin/sync
……
blue,/bin/nosh

十三、crontab配置

功能:通過 crontab 功能,可以在固定的間隔時間執(zhí)行指定的系統(tǒng)指令或 shell script 腳本。時間間隔的單位可以是分鐘、小時、日、月、周、及以上的任意組合。這個命令非常適合周期性的日志分析或者數(shù)據(jù)備份等工作。定時調(diào)度器

安裝:

yum install crontabs

服務(wù)操作說明:

service crond start  ##啟動服務(wù)
service crond stop  ##關(guān)閉服務(wù)
service crond restart  ##重啟服務(wù)
service crond reload  ##重新載入配置
service crond status  ##查看 crontab 服務(wù)狀態(tài)
chkconfig --level 35 crond on  ##加入開機(jī)自啟動

命令格式:

  crontab [-u user] file

  crontab [-u user] [-e | -l -r]

  參數(shù)說明:

-u user :用來設(shè)定某個用戶的 crontab 服務(wù),例如:“ -u gzw ” 表示設(shè)定 gzw 用戶 的 crontab 服務(wù),此參數(shù)一般由 root 用戶來運(yùn)行,-u 如果不指定,默認(rèn)就是幫本用戶指定任務(wù);
file :file 是指命令文件的名字,表示將 file 作為 crontab 的任務(wù)列表文件并載入 crontab;
-e :編輯某個用戶的 crontab 文件內(nèi)容,如果不指定用戶,則表示編輯當(dāng)前用戶的 crontab 文件內(nèi)容;
-l : 顯示某個用戶的 crontab 文件內(nèi)容,如果不指定用戶,則表示顯示當(dāng)前用戶的 crontab文件內(nèi)容;
-r : 刪除定時任務(wù)配置,從 /var/spool/cron 目錄中刪除某個用戶的 crontab 文件,如果不指定用戶,則默認(rèn)刪除當(dāng)前用戶的 crontab 文件;
-i : 在刪除用戶的 crontab 文件時給確認(rèn)提示

命令實(shí)例:

  crotab file [-u user]  ##用指定的文件替代目前的 crontab

必須掌握:

crontab -l [-u user]  ##列出用戶目前的 crontab
crontab -e[-u user]  ##編輯用戶目前的 crontab

# crontab -l  ##看當(dāng)前用戶有沒有定時任務(wù)
no crontab for root

# crontab -e  ##增加個定時任務(wù),里面填入以下內(nèi)容,保存
* * * * * date >> /root/date.txt

# crontab -l  ##保存完之后,可進(jìn)行查看
* * * * * date >> /root/date.txt

# cat date.txt  ##可以看到結(jié)果,每分鐘,文件內(nèi)被追加寫了一行 date
Sun Dec 30 00:47:01 CST 2018
Sun Dec 30 00:48:01 CST 2018
Sun Dec 30 00:48:01 CST 2018
Sun Dec 30 00:49:01 CST 2018
Sun Dec 30 00:49:01 CST 2018

調(diào)度配置  

  說明

  格式如下:

   *   *   *    *   *   command

  分  時  日  月  周  命令

  第 1 列表示分鐘 1-59 每分鐘用 * 或者 */1 表示

  第 2 列表示小時 0-23 (0表示 0點(diǎn))7-9表示:8點(diǎn)到10點(diǎn)之間

  第 3 列表示日期 1-31

  第 4 列表示月份 1-12

  第 5 列表示星期 0-6(0表示星期天)

  第 6 列表示要運(yùn)行的命令

配置實(shí)例

30 21 * * * /usr/local/etc/rc.d/httpd restart  ## 表示每晚的 21:30 自動重啟 apache

45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart  ## 表示每月 1、10、22 日的 4:45 重啟 apache

10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart  ## 表示每周六、日的 1:10 重啟 apache

0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart  ## 表示在每天 18:00 至 23:00 之間每隔 30 分鐘重啟 apache

0 23 * * 6 /usr/local/etc/rc.d/httpd restart  ## 表示每周六的 11:00 pm 重啟 apache

* */1 * * * /usr/local/etc/rc.d/httpd restart  ## 表示每 1 小時重啟 apache

* 23-7/1 * * * /usr/local/etc/rc.d/httpd restart  ## 表示晚上 11 點(diǎn) 到早上 7 點(diǎn)之間,每隔 1 小時重啟 apache

0 4 1 jan * /usr/local/etc/rc.d/httpd restart  ## 表示一月一號的 4 點(diǎn)重啟 apache

shell編程

  shell 是用戶與內(nèi)核進(jìn)行交互的一種接口,目前最流行的 shell 稱為 bash shell

  shell 也是一門編程語言<解釋型的編程語言>,即 shell 腳本,就是在用 linux 的 shell 命令編程

  一個系統(tǒng)可以存在多個 shell ,可以通過 cat/etc/shell 命令查看系統(tǒng)中安裝的 shell ,不同的 shell 可能支持的命令語法是不同的

一、基本格式

  代碼寫在普通文本文件中,通常以 .sh 為后綴名

  vi hello.sh

#!/bin/bash  ##表示用哪一種 shell 解析器解析執(zhí)行我們的這個腳本程序
echo "hello world"

  執(zhí)行腳本

  sh hello.sh  為什么這里加 sh 不加路徑可以運(yùn)行?因?yàn)?sh 在環(huán)境變量內(nèi),不加路徑就默認(rèn)當(dāng)前路徑

  或者給腳本添加 x 權(quán)限,直接執(zhí)行

  chmod 755 hello.sh

# ./hello.sh   ##這里為啥要加 ./ ? 運(yùn)行程序,系統(tǒng)都是從環(huán)境變量里面去找,很顯然這個腳本的路徑并不在環(huán)境變量內(nèi) ./ 已經(jīng)指定在當(dāng)前路徑下
hello world

  

二、基本語法

系統(tǒng)變量

Linux shell 中的變量分為“系統(tǒng)變量”和“用戶自定義變量”,可通過 set 命令查看系統(tǒng)變量

# set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.1.2(2)-release'
COLORS=/etc/DIR_COLORS
……

系統(tǒng)變量:$BASH、$HOME、$PWD、$SHELL、$USER 等等

自定義變量

  自定義的變量只能在當(dāng)前進(jìn)程生效,不能跨進(jìn)程傳遞自定義變量

  1、語法

變量=值 (例如 STR=abc)

等號兩側(cè)不能有空格

變量名稱一般習(xí)慣大寫

使用變量: $arg

雙引號和單引號有區(qū)別,雙引號僅僅將空格脫意,單引號會將變量引用也脫意

# mygirl1=angela baby  ##中間有空格,linux 會認(rèn)為是兩個參數(shù),所以要加引號    
-bash: baby: command not found

# mygirl1='angela baby'
# echo $mygirl1
angela baby

# mygirl2="she is $mygirl1"  ##將里面的變量也打印出其值
# echo $mygirl2
she is angela baby

# mygirl2='she is $mygirl1'  ##里面的變量,只會按原樣打印出來
# echo $mygirl2
she is $mygirl1

  2、示例

STR="hello world"

A=9

echo $A

echo $STR

如果想打印 hello worlds is greate 怎么辦?

echo $STR is greate 行么?

不行!正確的寫法是:

echo ${STR}s is greate

# mycount=2000
# echo $mycount 
2000

##如果想打印 2000 is mycount 要這樣寫:
# echo $mycount is mycount
2000 is mycount
或者:
# echo ${mycount} is mycount
2000 is mycoun

##如果要打印 2000s is mycount 怎么寫?
# echo $mycounts is mycount
is mycount
這樣寫,linux會認(rèn)為 mycounts 是一個變量,但這個變量并沒有定義,所以為空,正確的寫法如下:
# echo ${mycount}s is mycount 2000s is mycount

unset A 撤銷變量 A

redonly B=2 聲明靜態(tài)的變量 B=2 ,不能 unset

export A 將變量提升為當(dāng)前 shell 進(jìn)程中的全局環(huán)境變量,可供其他子 shell 程序使用

注意理解 export:

#vi a.sh
#!/bin/bash A=aaaa echo "in a.sh---"$A sh b.sh

#vi b.sh
#!/bin/bash
echo "in b.sh---"$A

上面的意思:我們在 a.sh 定義了一個變量 A ,并且打印 A,執(zhí)行 b.sh;在 b.sh 里面是打印變量 A 的值 ,我們先把 a.sh 和 b.sh 賦予可執(zhí)行權(quán)限,再分別執(zhí)行下,看能不能得到正確結(jié)果:

# chmod +x a.sh b.sh

# ./a.sh   ## b.sh 沒有結(jié)果
in a.sh---aaaa
in b.sh---

# ./b.sh   ## b.sh 沒有結(jié)果
in b.sh---

# echo $A  ## 沒有結(jié)果

這是為什么呢?我們畫個簡單的圖來理解一下:我們登錄會話有一個進(jìn)程,里面我們?nèi)フ{(diào)用個 a.sh 子進(jìn)程,a.sh 進(jìn)程里面去調(diào)用個 b.sh 子進(jìn)程,這三個進(jìn)程內(nèi)的變量是不共用的,所以,我們在 登錄會話中直接

打印 $A 的值,是不會出現(xiàn)的;同樣的,我們在 b.sh 里面想去 echo $A 也是無法打印出來的

那么,怎么才能解決呢?答案是把 A 這個變量作為全局變量就 ok ,那么在當(dāng)前進(jìn)程 ,以及其子進(jìn)程 ,就能用這個變量了,

#vi a.sh
#!/bin/bash
exoprt A=aaaa
echo "in a.sh---"$A
sh b.sh

b.sh 就不用管,我們再打印下:這里可以發(fā)現(xiàn),b.sh 已經(jīng)取到了 a.sh 內(nèi)的變量

# ./a.sh 
in a.sh---aaaa
in b.sh---aaaa

另一種方式:source

#!/bin/bash
A=aaaa
echo "in a.sh---"$A
source /root/b.sh  ##這里改成 b.sh 的絕對路徑

看一下,a.sh 的結(jié)果:之前我們改過 /etc/profile 里面的環(huán)境變量 ,我們要 source 一下 profile ,source 是干嘛的?source 的功能在調(diào)用腳本,可以將 b.sh 在 a.sh 的進(jìn)程空間內(nèi)運(yùn)行,而不是另外開一個進(jìn)程

# ./a.sh 
in a.sh---aaaa
in b.sh---aaaa

另一種方式:用 '.' 代表source ,后面的 '.' 代表本地,可以改成:. /root/b.sh

#!/bin/bash
A=aaaa
echo "in a.sh---"$A
. ./b.sh

結(jié)果:

# ./a.sh 
in a.sh---aaaa
in b.sh---aaaa

總結(jié):

a.sh 中直接調(diào)用 b.sh ,會讓 b.sh 在 a 所在的 bash 進(jìn)程的“子進(jìn)程”空間中執(zhí)行;
而子進(jìn)程空間只能訪問父進(jìn)程中用 export 定義的變量;
一個 shell 進(jìn)程無法將自己定義的變量提升到父進(jìn)程空間中去;
"."號執(zhí)行腳本時,會讓腳本在調(diào)用者所在的 shell 進(jìn)程空間中執(zhí)行

  3、反引號賦值

A=`ls -la`  ## 反引號,運(yùn)行里面的命令,并將結(jié)果返回給變量 A(在esc下面那個鍵,在英文狀態(tài)下輸入)

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

# a=`ls -la`
# echo $a
total 844 drwxr-xr-x 2 root root 4096 Jan 3 20:51 . drwxr-xr-x 9 root root 4096 Jan 3 14:37 .. -rw-r--r-- 1 root root 28857 Nov 9 19:09 bootstrap.jar -rw-r--r-- 1 root root 14867 Nov 9 19:09 catalina.bat -rwxr-xr-x 1 root root 22785 Jan 3 20:51 catalina.sh -rw-r--r-- 1 root root 1647 Nov 9 19:09 catalina-tasks.xml -rw-r--r-- 1 root root 25145 Nov 9 19:09 commons-daemon.jar -rw-r--r-- 1 root root 207125 Nov 9 19:09 commons-daemon-native.tar.gz -rw-r--r-- 1 root root 2040 Nov 9 19:09 configtest.bat -rwxr-xr-x 1 root root 1922 Nov 9 19:09 configtest.sh -rwxr-xr-x 1 root root 8508 Nov 9 19:09 daemon.sh -rw-r--r-- 1 root root 2091 Nov 9 19:09 digest.bat -rwxr-xr-x 1 root root 1965 Nov 9 19:09 digest.sh -rw-r--r-- 1 root root 3460 Nov 9 19:09 setclasspath.bat -rwxr-xr-x 1 root root 3680 Nov 9 19:09 setclasspath.sh -rw-r--r-- 1 root root 2020 Nov 9 19:09 shutdown.bat -rwxr-xr-x 1 root root 1902 Nov 9 19:09 shutdown.sh -rw-r--r-- 1 root root 2022 Nov 9 19:09 startup.bat -rwxr-xr-x 1 root root 1904 Nov 9 19:09 startup.sh -rw-r--r-- 1 root root 45466 Nov 9 19:09 tomcat-juli.jar -rw-r--r-- 1 root root 411789 Nov 9 19:09 tomcat-native.tar.gz -rw-r--r-- 1 root root 4550 Nov 9 19:09 tool-wrapper.bat -rwxr-xr-x 1 root root 5458 Nov 9 19:09 tool-wrapper.sh -rw-r--r-- 1 root root 2026 Nov 9 19:09 version.bat -rwxr-xr-x 1 root root 1908 Nov 9 19:09 version.sh

# a=`date +%Y-%m-%d`
# echo $a
2019-01-03

  4、特殊變量

$?  ## 表示上一個命令退出的狀態(tài)

$$  ## 表示當(dāng)前進(jìn)程編號

$0  ##表示當(dāng)前腳本名稱

$n  ##表示 n 位置的輸入?yún)?shù)( n 代表數(shù)字,n >= 1)-----相當(dāng)于傳參

$#  ##表示參數(shù)的個數(shù),常用于循環(huán)

$* 和 $@  ##都表示參數(shù)列表

注:$* 和 $@ 的區(qū)別:

  $* 和 $@ 都表示傳遞給函數(shù)或腳本的所有參數(shù)

不被雙引號 " " 包含時

  $* 和 $@ 都以 $1 $2……$n 的形式組成參數(shù)列表

當(dāng)它們被雙引號 " " 包含時

  "$*" 會將所有的參數(shù)作為一個整體,以"$1 $2 …… $n" 的形式輸出所有參數(shù);

  "$@" 會將各個參數(shù)分開,以 "$1" "$2"……"$n" 的形式輸出所有參數(shù)

# echo $$
14689
# echo $?
0

編輯 a.sh
#vi a.sh
#!/bin/bash
echo they are:
echo $1 $2 $3
結(jié)果:
# sh a.sh
they are:

#我們輸入?yún)?shù)看看:
# sh a.sh liuyifei yangyin reba
they are:
liuyifei yangyin reba

三、運(yùn)算符

一、算數(shù)運(yùn)算

  1、用 expr

格式: expr m + n 或 $((m+n)) 注意 expr 運(yùn)算符間要有空格

例如:計算 (2+3)*4 的值

1、分步計算

  S=`expr 2 + 3`  ## expr是接收運(yùn)算符用的 ,` 是取出表達(dá)式的運(yùn)算結(jié)果

  expr $S * 4  ## * 號需要轉(zhuǎn)義

2、一步計算完成

  expr `expr 2 + 3` * 4

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

#分步計算
# S=`expr 2 + 3`
# expr $S * 4
20

#一步計算完成
# expr `expr 2 + 3` * 4
20

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

  2、用(())——要取出運(yùn)算結(jié)果

要取值需加 $ 符號,否則會報錯;運(yùn)算符間無需加空格

# a=$((1+2))
# echo $a
3

# a=$(((2+3)*4))
# echo $a
20

# count=1
# ((count++))
# echo $count
2

  

  3、用[]

# a=$[1+2]
# echo $a
3

四、流程控制

if 語法

1、語法格式

  if [ condition A ]

  then

    [結(jié)果A]

  elif [ condition B ]

    then [結(jié)果 B]

  else

    [結(jié)果 C ]

  fi

2、實(shí)例

#vi hello.sh  ## 編輯腳本

#!/bin/bash
read -p "Please input yourname :" NAME  ## 讀取從控制臺輸入的變量,存為參數(shù) NAME

if [ $NAME = root ]    ## 注意,這里的[]是有空格的,[]是命令,命令之間,就有空格
        then
                echo "Hello ${NAME}, welcome !"
        elif [ $NAME = gzw ]
                then
                        echo "Hello ${NAME}, welcome !"
        else
                echo "DSB,get out !"
fi

#輸入值為 gzw
# sh ./hello.sh 
Please input yourname :gzw
Hello gzw, welcome !

#輸入值為 root # sh ./hello.sh Please input yourname :root Hello root, welcome !

#輸入值為 特殊值 # sh ./hello.sh Please input yourname :hhh DSB,get out !

3、判斷條件

  1、判斷條件基本語法

  [ condition ]  ## 注意,條件的前后,是有空格的  

  # 條件非空,返回 true ,可用 $? 驗(yàn)證 (0 為 true ,> 1 為 false)

  [ itcast ]

  # 空返回 false

#vi if.sh

#!/bin/bash
if [ a=b ]  ##等號左右沒有加空格,就不會作為判斷,而作為一個字符串,[]內(nèi)字符為非空,就為 true 的結(jié)果
        then
                echo ok
        else
                echo notok
fi

結(jié)果:
# sh ./if.sh 
ok

#!/bin/bash 
if [ a = b ]  ##等號左右有加空格,會作為判斷,等號會變成命令,因?yàn)楦糸_了
        then
                echo ok
        else
                echo notok
fi

結(jié)果:
# sh ./if.sh 
notok

#!/bin/bash 
if [  ]  ##左右只有倆空格,沒有任何東西,或者里面只有三空格,會執(zhí)行 false
        then
                echo ok
        else
                echo notok
fi

結(jié)果:
# sh ./if.sh 
notok

  2、條件判斷組合

  [ condition ] && echo ok || echo notok  ## condition 成立 ,執(zhí)行 echo ok ,不成立執(zhí)行 echo notok ,可以理解為三元運(yùn)算符

    條件滿足,執(zhí)行后面的 && ,不滿足執(zhí)行 ||

  注意:[ ] 和 [[ ]] 的區(qū)別:[[ ]] 中邏輯組合可以使用 && || 符號

  而 [ ] 里面邏輯組合可以用 -a -o ## -a 是and關(guān)系,or 是或的關(guān)系

#vi if2.sh

#!/bin/bash
if [ a = b && b = c ]
        then
                echo ok
        else
                echo notok
fi

結(jié)果:
# sh ./if2.sh 
./if2.sh: line 2: [: missing `]'
notok


#!/bin/bash
if [[ a = b && b = c ]]  ##這里是 倆 [[ ]] ,單括號不支持與或非符號的
then
echo ok
else
echo notok
fi
結(jié)果:
# sh ./if2.sh
notok

#!/bin/bash
if [ a = b -a b = c ]
then
echo ok
else
echo notok
fi
結(jié)果:
# sh ./if2.sh
notok

#!/bin/bash
if [ a = b -o b = b ]
then
echo ok
else
echo notok
fi
結(jié)果:
# sh ./if2.sh
ok

  3、常用判斷運(yùn)算符

  字符串比較: =   !=  -z  -n  (=就是相等;!=就是不相等;-z是指字符串長度為0,返回 true;-n是字符串長度不為0,返回 true)

  整數(shù)比較:

  -lt  小于
  -le  小于等于
  -eq  等于
  -gt  大于
  -ge  大于等于
  -ne  不等于

  文件判斷:

  -d 是否為目錄
  -f   是否為文件
  -e  是否存在

while 語法

1、方式1

  while expression

  do

  command

  ...

  done

2、方式2

  i=1

  while ((i<=3))

  do

    echo $i

    let i++

  done

cese 語法

  case $1 in

  start)

    echo "starting"

    ;;

  stop)

    echo "stoping"

    ;;

  *)

    echo "Usage:{start|stop}"

  esac

for 語法

1、方式1
  for N in 1 2 3
  do
    echo $N
  done
  或者
  for N in 1 2 3;do echo $N;done
  或者
  for N in {1..3};do echo $N;done

2、方式2
  for ((i = 0;i <= 5;i++))
  do
    echo "welcome $i times"
  done
  或者
  for ((i = 0;i <= 5;i++));doecho "welcome $i times"; done

五、函數(shù)使用

1、函數(shù)定義

#!/bin/sh
# func1.sh
hello()
{
        echo "Hello there today's date is `date +%Y-%m-%d`"
        # return 2
}
hello
# echo $?
echo "now going to the function hello"
echo "back from the function"

執(zhí)行結(jié)果:
# sh ./func1.sh 
Hello there today's date is 2019-01-06
now going to the function hello
back from the function

函數(shù)調(diào)用:

fuction hello() 或者 function hello 或者 hello

注意:

必須在調(diào)用函數(shù)之前,先聲明函數(shù),shell 腳本是逐行運(yùn)行。不會像其他語言一樣預(yù)先編譯
函數(shù)返回值,只能通過 $? 系統(tǒng)變量或的,可以顯示加 : return 返回,如果不加,將以最后一條命令運(yùn)行結(jié)果,作為返回值。 return 后跟數(shù)值 n(0-255)

腳本調(diào)試:(基本不用)

sh -vx helloWorld.sh 或者在腳本中增加 set -x

2、函數(shù)參數(shù)

#!/bin/bash
#func2.sh
funcWithParam(){
        echo "第一個參數(shù)為 $1 !"
        echo "第二個參數(shù)為 $2 !"
        echo "第十個參數(shù)為 $10 !"
        echo "第十個參數(shù)為 ${10} !"
        echo "第十一個參數(shù)為 ${11} !"
        echo "參數(shù)總數(shù)有 $# 個 !"
        echo "作為一個字符串輸出所有參數(shù) $* !"
}
funcWithParam 1 2 3 4 5 6 7 8 9 34 73


執(zhí)行結(jié)果:
# sh ./func2.sh 
第一個參數(shù)為 1 !
第二個參數(shù)為 2 !
第十個參數(shù)為 10 !
第十個參數(shù)為 34 !
第十一個參數(shù)為 73 !
參數(shù)總數(shù)有 11 個 !
作為一個字符串輸出所有參數(shù) 1 2 3 4 5 6 7 8 9 34 73 !

注意:$10 不能獲取第 10 個參數(shù),獲取第 10 個參數(shù)需要 ${10} 。當(dāng) n >= 10 時,需要使用 ${n} 來獲取參數(shù)。

3、函數(shù)返回值

#!/bin/bash
#func3.sh
funcWithReturn(){
        echo "這個函數(shù)會對輸入的兩個數(shù)字進(jìn)行相加運(yùn)算..."
        echo "輸入第一個數(shù)字:"
        read aNum
        echo "輸入第二個數(shù)字:"
        read anotherNum
        echo "兩個數(shù)字分別為 $aNum 和 $anotherNum !"
        return $(($aNum+$anotherNum))
}
funcWithReturn
echo "輸入的兩個數(shù)字之和為:$? !"


結(jié)果:

# sh ./func3.sh 
這個函數(shù)會對輸入的兩個數(shù)字進(jìn)行相加運(yùn)算...
輸入第一個數(shù)字:
8 
輸入第二個數(shù)字:
5
兩個數(shù)字分別為 8 和 5 !
輸入的兩個數(shù)字之和為:13 !

返回值的范圍是 0-255之間

4、跨腳本調(diào)用函數(shù)

  假如上述腳本的文件 fun2.sh 保存在路徑:/root/fun2.sh

  則可在腳本 fun_other.sh 中調(diào)用腳本 fun_other 中的函數(shù)

#!/bin/bash
#func_other.sh
. /root/func2.sh        ##注:. 和 / 之間要有空格  為啥要有空格?因?yàn)?/root/func2.sh 是在一個子進(jìn)程內(nèi)加載,而我的當(dāng)前進(jìn)程腳本進(jìn)程沒有那個函數(shù),所以要 source 一下,或者 . 一下
#或者 source /root/func2.sh
funcWithParam 11 22 33 44 55 66 77 88 99 100 101


結(jié)果:
# sh ./func_other.sh
第一個參數(shù)為 11 !
第二個參數(shù)為 22 !
第十個參數(shù)為 110 !
第十個參數(shù)為 100 !
第十一個參數(shù)為 101 !
參數(shù)總數(shù)有 11 個 !
作為一個字符串輸出所有參數(shù) 11 22 33 44 55 66 77 88 99 100 101 !

shell 編程綜合練習(xí)

  自動化軟件部署腳本

一、需求

  1、描述:公司內(nèi)部有一 N 個節(jié)點(diǎn)集群,需要統(tǒng)一安裝一些軟件,例如;jdk,開發(fā)一個腳本,實(shí)現(xiàn)對局域網(wǎng)中的 N 臺節(jié)點(diǎn)批量自動下載,并且安裝 jdk

思路

  1、編寫一個啟動腳本,用來發(fā)送一個軟件安裝腳本到每一臺機(jī)器

  2、然后啟動每臺機(jī)器上的軟件安裝腳本來執(zhí)行軟件下載和安裝

具體實(shí)現(xiàn)方式:我們可以用一臺服務(wù)器配置成基服務(wù)器,上面搭建好一個 web 容器,比如 apache ,把 jdk 的包放在 var/www/html/software 下面,總之是個路徑,讓其他的服務(wù)器能夠通過一個網(wǎng)頁打開的方式,獲取到這個 jdk 的安裝包,而不是全部去 wget 下載,這樣太慢了。

  那么,我們可以寫兩個腳本 ,第一個腳本是 bootstrap.sh 作用是將第二個 install.sh 發(fā)送到每一個節(jié)點(diǎn)上。真正的安裝軟件的過程,是在 install.sh 上面。這樣,每一臺都有自己的 install.sh 。install.sh 內(nèi)寫啥呢?先從基服務(wù)器上下載安裝包,下載后解壓,解壓后配置環(huán)境變量

  

  細(xì)節(jié):那么我們公共服務(wù)器怎么將 install.sh 發(fā)送到各節(jié)點(diǎn)呢?用 scp install.sh node :/root 做循環(huán),但是要 scp 就要配置免密登錄,否則就得驗(yàn)證指紋啥的,腳本太復(fù)雜了。我們看免密登錄怎么弄?人機(jī)交互expect 可以解決

expect的使用

  痛點(diǎn):使用 scp 命令遠(yuǎn)程拷貝文件時,會有人機(jī)交互的過程,如何讓腳本完成人機(jī)交互?

  妙藥: expect

  用法實(shí)例:

    先觀察 ssh localhost 的過程

    再看 expect 的功能

# vi exp_test.sh

#!/bin/bash/expect ## exp_test.sh set timeout -1; spawn ssh localhost; expect { "(yes/no)" {send "yes";exp_continue;} "password:" {send "123456";exp_continue;} eof {exit 0;} }

執(zhí)行:  expect -f exp_test.sh

腳本搞好了之后,可以在 /etc/hosts 內(nèi),以 ip 子機(jī)名 的形式 ,搞好 hosts 文件,ping 一下看是否可以 ping 通,可以寫進(jìn) boot.sh 的 SERVERS 內(nèi)

三、腳本開發(fā)

1、vi boot.sh

SERVERS="gzw1 gzw2"   #要安裝的服務(wù)器名稱
PASSWORD=123456         #服務(wù)器上的password
BASE_SERVER=47.107.183.88            #公共服務(wù)器的 ip

## 實(shí)現(xiàn)免密登錄配置的函數(shù)
auto_ssh_copy_id(){
        expect -c"set timeout -1;
                spawn ssh-copy-id $1;
                expect {
                        *(yes/no)*{send --yes;exp_continue;}
                        *assword:*{send --$2;exp_continue;}
                        eof     {exit0;}
                }";
}

ssh_copy_id_to_all(){
        for SERVER in $SERVERS
        do
                auto_ssh_copy_id $SERVER $PASSWORD
        done
}

## 調(diào)用免密登錄配置函數(shù),實(shí)現(xiàn)母機(jī)到個子機(jī)的免密登陸配置

ssh_copy_id_to_all

##完成分發(fā) install.sh 到各子機(jī)的操作
##并讓子機(jī)啟動 install.sh

for SERVER in $SERVERS
do
        scp insatll.sh root@$SERVER:/root
        ssh root@$SERVER /root/install.sh  ##一臺機(jī)器,執(zhí)行另一臺機(jī)器的 install.sh
done

2、安裝執(zhí)行腳本

vi install.sh

#!/bin/bash

BASE_SERVER=47.107.183.88  ##母機(jī)的 ip

## 為本機(jī)安裝 wget 命令
yum install -y wget

## 使用 wget 從母機(jī)的 web 服務(wù)器上下載 jdk 壓縮包
wget $BASE_SERVER/software/jdk-XXX

## 將下載的壓縮包解壓到一個相同路徑下
tar -zxvf jdk-XXX -C /usr/local

## 修改 profile 配置文件 
cat >> /etc/profile << EOF  ##往 /etc/profile 內(nèi)追加兩行,如果修改很復(fù)雜,就要用 awk ,這里,cat 將 EOF 之間的內(nèi)容重定向到 /etc/profile 內(nèi)
export JAVA_HOME=/usr/local/jdk-XXX
export PATH=$PATH:$JAVA_HOME/bin
EOF

最后,在母機(jī)上 運(yùn)行 boot.sh 就 ok

總結(jié)

以上是生活随笔為你收集整理的Linux命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

免费午夜av | 国产视频一区在线播放 | 精品在线看 | 在线免费看黄网站 | 狠狠躁夜夜躁人人爽视频 | 在线岛国av | 免费观看国产视频 | 久久最新 | 中文字幕亚洲精品在线观看 | 国产成人免费观看 | 韩国av免费在线观看 | 东方av免费在线观看 | 一本—道久久a久久精品蜜桃 | www·22com天天操 | 99精品国产一区二区三区不卡 | 成人h在线播放 | 日韩在线资源 | 亚洲影院色 | 人人草人人做 | 久久中文字幕视频 | 国产成人333kkk | 亚洲精品456在线播放乱码 | 日韩色在线 | 日韩免费av网址 | 91精品国产成人观看 | 天天碰天天操 | 一区二区三区四区精品视频 | 成人毛片一区 | 丁香久久综合 | 99精品视频在线播放免费 | 日日精品 | 国产精品久久久久久久久久久久 | 精品在线观看一区二区 | 日韩v在线| 国产一性一爱一乱一交 | 久久国产精品99精国产 | aav在线 | av线上看| 美女福利视频网 | 在线观看成人 | 国产精品美女999 | 五月激情综合婷婷 | 亚洲国产中文字幕在线视频综合 | 一区二区三区视频 | 久久精品国产免费观看 | 免费美女久久99 | 在线观看完整版免费 | 天天操天天拍 | 免费一级特黄录像 | 在线观看91精品国产网站 | 欧美 日韩 国产 中文字幕 | 国产精品一区在线播放 | 久久字幕网 | 99久久99热这里只有精品 | 992tv在线成人免费观看 | 人人射人人射 | 久久亚洲福利视频 | 日韩视频中文字幕在线观看 | 亚洲综合视频在线 | 91精品免费视频 | 久久久 激情| 国产色视频123区 | 久久久久免费精品国产小说色大师 | 黄色免费在线视频 | 婷婷草| 亚洲影院色 | 久久女教师| 亚洲影院国产 | 激情av网址 | 欧美男男tv网站 | 久久综合影院 | 在线视频一区二区 | 免费在线观看污 | 久久综合久久综合久久 | 人人插人人插 | 国产不卡视频在线播放 | 国内精品视频久久 | 欧美日韩中 | 亚洲最新视频在线 | 青草视频在线播放 | 日产中文字幕 | 五月天综合婷婷 | 97国产在线视频 | 99精品视频在线观看免费 | 99视频国产精品 | 五月天婷婷狠狠 | 免费观看www7722午夜电影 | 成人羞羞视频在线观看免费 | 91九色视频网站 | a√天堂资源 | 超碰免费在线公开 | 99国产精品一区 | 久久a久久| 国产精品一级在线 | 国产精品情侣视频 | 亚洲.www | 国产精品久久久影视 | 国产精品久久av | 亚洲黄色成人av | 亚洲精品自拍 | 日韩精品一区二区三区在线视频 | 91视频在线 | 中文字幕资源网在线观看 | 99久久免费看 | 日本字幕网| 香蕉一区 | av一区在线播放 | 国产一级一片免费播放放 | 日韩黄色软件 | 91最新地址永久入口 | 免费a v观看 | 久久午夜色播影院免费高清 | www.福利| 亚洲动漫在线观看 | 午夜精品久久久久久久99无限制 | 中日韩在线视频 | 午夜精品久久久久99热app | 国产精品av在线 | 欧美韩国在线 | 91成人免费在线 | 一区二区免费不卡在线 | 黄色av免费 | 美女久久99| av中文字幕电影 | 国产精品一区二区三区久久 | 波多野结衣精品 | 在线岛国av | 爱情影院aqdy鲁丝片二区 | 日韩二区在线播放 | 国产精品成人国产乱 | 视频一区二区视频 | 国产人成看黄久久久久久久久 | 激情av五月婷婷 | 在线成人免费电影 | 在线观看国产亚洲 | 国产一区在线视频 | 最新日韩在线观看 | 在线免费色| 91传媒在线播放 | 中字幕视频在线永久在线观看免费 | 久久69精品久久久久久久电影好 | 日本韩国精品一区二区在线观看 | 亚洲欧美va | 九九精品视频在线观看 | 欧美老女人xx| 中文字幕亚洲欧美 | 69国产在线观看 | 午夜精品久久久久久久99 | 九九综合久久 | 国产又粗又硬又爽的视频 | 精品国产日本 | 精品人人人 | 四虎在线视频 | 日韩精品一二三 | 91在线影视 | 四虎永久免费网站 | av资源网在线播放 | 麻豆视频免费 | 国产成人香蕉 | 九九免费在线视频 | 91天堂影院 | 伊人午夜| 国产成人在线免费观看 | 午夜av免费看 | 午夜av免费 | 国语精品久久 | 国产小视频在线免费观看视频 | 国产91在| 日韩av资源在线观看 | 精品毛片久久久久久 | 亚洲国产精品成人av | 成人app在线播放 | 中文字幕永久 | 亚洲永久av | 黄色成人毛片 | 亚洲电影一级黄 | 99视频网站 | 欧美一级在线观看视频 | 亚洲伦理一区 | 97色涩 | 成人在线观看网址 | 欧美一区二区三区特黄 | 高清av不卡 | 久久精品电影网 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 日av免费| 在线色亚洲 | 正在播放 久久 | 日本中文在线观看 | 91av资源网| 成人理论电影 | 久久亚洲福利视频 | 黄色网在线免费观看 | 午夜av在线 | 日韩激情综合 | 久久精品99国产精品酒店日本 | 久久久精品视频网站 | 国产精品一区二区吃奶在线观看 | 国产精品综合av一区二区国产馆 | 国产精品18p | 丁香久久五月 | 91在线小视频 | 日韩精品黄 | 五月婷婷av在线 | 色播六月天| 亚洲乱亚洲乱妇 | 午夜精品一区二区三区四区 | 久久久久久蜜桃一区二区 | 成年人免费看的视频 | 国产精品乱码久久久 | 色五丁香 | 国内精品视频在线播放 | 亚洲第一香蕉视频 | 美女视频黄频大全免费 | 在线视频观看你懂的 | a级黄色片视频 | 精品久久久久久亚洲综合网 | 中文字幕视频一区 | 夜夜天天干 | av成年人电影| 婷婷色狠狠| 久久久在线观看 | 中文字幕色网站 | 亚洲天天摸日日摸天天欢 | 免费av电影网站 | 808电影免费观看三年 | 国产视频久久久 | av大全在线观看 | 欧美男同视频网站 | 国产精品久久久久久欧美 | 国产亚洲欧美在线视频 | 四虎国产精品免费 | 国产中文字幕91 | 天天操天天色天天射 | 九九久久久久99精品 | 欧美另类一二三四区 | 欧美激情va永久在线播放 | 国产精品久久久久久五月尺 | 爱爱av网站 | 2019精品手机国产品在线 | 久久精品免费观看 | 99精品成人 | 国产中文伊人 | 国内精品视频一区二区三区八戒 | 中文字幕资源网 | 亚洲视屏 | 亚洲精品五月 | 97**国产露脸精品国产 | 日韩xxxbbb| 亚洲五月激情 | 韩国av免费观看 | 婷婷日韩| 久久精品一区二区三区视频 | 91久久国产精品 | 在线看国产 | 深夜福利视频一区二区 | 国产精品久久久久久电影 | 日韩一二区在线 | 国内亚洲精品 | 天天草天天干天天 | 久久激情视频 久久 | 日韩一级黄色av | 中文字幕第一页在线播放 | 91精品国产综合久久婷婷香蕉 | 欧美国产精品久久久久久免费 | 91在线www | 国产无吗一区二区三区在线欢 | 日日爱av| 日韩高清av | 日韩在线视频播放 | 在线小视频 | 最新av中文字幕 | 国产成人精品一区二 | 国产精品国产三级国产 | 日韩毛片在线播放 | 97在线观看免费 | 五月婷婷综合激情网 | 另类老妇性bbwbbw高清 | 91精品推荐 | 日韩在线观看视频免费 | 91重口视频 | 欧美日韩二区在线 | 国产婷婷精品av在线 | 国产玖玖在线 | 日韩网站免费观看 | 久久看免费视频 | av福利在线看 | 欧美色久 | 日韩中文字幕免费电影 | 日韩免费电影在线观看 | 国产色婷婷精品综合在线手机播放 | 日韩在线观看第一页 | 国产三级在线播放 | 久草在线资源观看 | 亚洲综合色网站 | 中文字幕 国产视频 | 国产精品久久综合 | 国产一区二区在线影院 | 久久国产精品一区二区三区四区 | 91在线精品观看 | 久久高清毛片 | 中文字幕在线观看的网站 | 免费视频三区 | 激情五月激情综合网 | 精品久久一区 | 国产伦理一区 | 亚洲日本一区二区在线 | 国产精品久久久久久久久久久免费 | 深爱开心激情网 | 国产在线不卡精品 | 日韩在线| 久久视频二区 | 91成人欧美 | 国产精品淫片 | 午夜精品久久久 | 免费看国产a | 国产精品永久免费在线 | 久久国产精品成人免费浪潮 | 美女黄久久 | www.av中文字幕.com | 亚洲午夜av| 五月天久久综合 | 亚洲国产精品一区二区久久,亚洲午夜 | 色天天综合久久久久综合片 | 久久天天躁| 国产精品美女久久久免费 | 日韩av在线免费播放 | 黄色一级影院 | 亚洲成免费 | 中文免费在线观看 | 久久久麻豆 | a视频免费看 | 欧美色图p| 免费中文字幕 | 中文字幕一区二区三区四区视频 | 国产精品成人国产乱 | 国产精品视频 | 99re国产 | 96av在线| 麻豆传媒在线视频 | 91亚洲精品在线观看 | 成人欧美亚洲 | 88av视频| 欧美a级在线播放 | 精品国产一区二区三区免费 | 9999在线| 国产精品欧美久久久久无广告 | 国产精品久久久久四虎 | 天天干,天天操 | 91亚洲精品久久久中文字幕 | 国产精品高清在线观看 | 狠狠干我| va视频在线观看 | av福利第一导航 | 美女av免费看 | av九九| 国产96精品 | 国产精品久久久久久久久久ktv | 在线免费av观看 | 久久精品视频国产 | 正在播放国产精品 | 男女拍拍免费视频 | 国产资源网 | 欧产日产国产69 | 91av欧美| 91豆花在线 | 欧美日韩免费视频 | 一区二区影视 | 丁香婷婷色综合亚洲电影 | 在线观看av大片 | 国产精品色视频 | 成人高清av在线 | 麻豆影视网站 | 在线观看免费国产小视频 | wwwww.国产| 在线a视频免费观看 | 成人一区在线观看 | 亚洲h色精品| 欧美大jb | 激情五月在线视频 | 激情欧美一区二区三区 | 五月婷婷综合网 | 国产麻豆剧传媒免费观看 | 国产永久免费高清在线观看视频 | 激情婷婷欧美 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲一区免费在线 | 久久国产精品一国产精品 | 蜜臀av夜夜澡人人爽人人 | 国产一区91 | 久久久www成人免费毛片 | 美女免费视频一区二区 | 成人黄视频| 在线观看日韩精品视频 | 久久精品99北条麻妃 | 国产一级片在线播放 | 深爱激情婷婷网 | 国产伦精品一区二区三区免费 | 成人黄色短片 | 亚洲免费观看视频 | 亚洲在线资源 | 一级免费黄色 | 欧美成人h版在线观看 | 亚洲成人精品av | 777奇米四色 | av免费线看 | 欧美一区免费观看 | 久草网站在线 | 亚洲伦理电影在线 | 天天操天天综合网 | 天天操天天舔天天干 | 天天天操天天天干 | 日韩精品极品视频 | 西西大胆免费视频 | 婷婷在线免费视频 | 黄色毛片视频免费 | 亚洲精品1区2区3区 超碰成人网 | 涩涩成人在线 | 91完整版在线观看 | 九九久久成人 | 欧美日韩国产一区二区三区在线观看 | 国产午夜精品一区二区三区在线观看 | 在线观看一级 | 日韩有码网站 | 97香蕉久久超级碰碰高清版 | 国产在线一线 | 国产成人精品免费在线观看 | 国产精品嫩草在线 | 波多野结衣在线观看一区二区三区 | 免费视频你懂得 | 麻豆免费视频观看 | 国产一二区免费视频 | 日韩高清免费在线 | 成人免费 在线播放 | 亚洲人人精品 | 99久久久久久| 午夜国产在线观看 | 日韩网页 | 亚洲精品av中文字幕在线在线 | 精品成人a区在线观看 | 久久综合久久综合久久 | 国产精品乱码一区二区视频 | 日韩免费三区 | 亚洲精品黄网站 | 一区二区三区精品久久久 | 日韩二区三区在线 | 亚洲成人av在线播放 | 日韩视频在线播放 | 免费精品视频在线 | 成人丁香花 | 草久草久 | 久草在线视频网 | 97成人免费| 成年人网站免费观看 | 97视频人人澡人人爽 | 久国产在线播放 | 青青看片 | 国产精品 国内视频 | 久久99久久99久久 | 中文字幕成人在线 | 在线探花 | 9999毛片 | 精品高清视频 | 国产成人精品免费在线观看 | 亚洲精品久久久蜜臀下载官网 | 国产在线精品一区二区三区 | 日日操日日| 午夜视频免费 | av电影亚洲 | 九九久久在线看 | 日韩av一区二区在线播放 | 欧美专区亚洲专区 | 日韩视频精品在线 | 色婷婷99| 久久人人爽av | a√资源在线 | 国产亚洲精品综合一区91 | 久久99国产一区二区三区 | 911精品视频| 亚洲精品www. | 欧美激情视频在线观看免费 | 欧美色图亚洲图片 | 久久久久99精品国产片 | 天天色天天操综合 | 成人亚洲免费 | 国产在线探花 | 国产日韩欧美在线观看 | 国产999精品久久久影片官网 | 久久情侣偷拍 | 久久av免费观看 | 91免费高清观看 | 丰满少妇对白在线偷拍 | 日韩精品视频免费在线观看 | 成人欧美一区二区三区黑人麻豆 | 中文在线资源 | www.色午夜.com | 久久综合久久鬼 | 国内视频在线观看 | 国产精品毛片一区二区在线看 | 国产日本亚洲高清 | 97国产精品一区二区 | 久久短视频 | 在线视频18在线视频4k | 四虎影视4hu4虎成人 | 国产精品免费久久久久 | 在线看一区 | 日韩精品久久一区二区 | 精品在线观看一区二区 | 日韩高清不卡一区二区三区 | 国产玖玖在线 | 久久人人爽视频 | 91黄色免费看 | 久青草国产在线 | 欧美日韩精品久久久 | 成年人黄色免费网站 | 99久国产 | 99久久综合狠狠综合久久 | 国产精品午夜av | 久久久伊人网 | 日韩视 | 最近最新mv字幕免费观看 | 啪啪免费观看网站 | 久久国产欧美日韩 | 色就是色综合 | 高清美女视频 | 99精品成人 | 日韩黄色一区 | 五月婷婷视频在线 | 国产一级精品绿帽视频 | 欧美日韩伦理一区 | 97电影网手机版 | 在线观看一二三区 | 爱爱av网| 在线看片中文字幕 | 亚洲成人黄色 | 欧美色黄| 日韩,精品电影 | 成年人在线观看网站 | japanese黑人亚洲人4k | 精品你懂的 | 国产品久精国精产拍 | 一级免费观看 | 在线观看日本韩国电影 | 色视频国产直接看 | 97**国产露脸精品国产 | 国产视频二| 中文av在线免费观看 | 国产一级精品绿帽视频 | 日韩在线观看的 | 成人免费中文字幕 | 国产a免费 | 香蕉手机在线 | 二区视频在线 | 99精品国产高清在线观看 | 亚洲国产免费看 | 91亚洲在线| 超碰97.com | 久久久久免费精品国产 | 日韩欧美xxxx | 成人午夜精品久久久久久久3d | 九九免费在线观看视频 | 欧美精品亚洲精品 | 国产精品一区二区果冻传媒 | 久久精品观看 | 亚洲成av人影片在线观看 | 亚洲欧美国产精品va在线观看 | 9999在线观看 | 国产精品国产三级国产aⅴ入口 | 日韩免费视频线观看 | 久久久www免费电影网 | 亚洲年轻女教师毛茸茸 | 奇米影视在线99精品 | 婷婷色站 | 一区二区三区免费在线 | 亚洲国产精品99久久久久久久久 | 中文字幕亚洲字幕 | 免费观看一区二区三区视频 | 蜜臀久久99精品久久久无需会员 | av一级在线观看 | 亚洲精品黄色在线观看 | 国产高清久久 | 日韩在线一二三区 | 日韩欧美电影网 | 最近中文字幕视频网 | 免费看国产a | 国产精品成人久久 | 日韩理论片在线观看 | 在线观看一级 | av国产在线观看 | 国产精品大片在线观看 | 97自拍超碰 | 色久五月| 人成午夜视频 | 日韩中文在线观看 | 狠狠操夜夜| 在线免费精品视频 | 91视频在线播放视频 | 免费看一级黄色大全 | 国产伦精品一区二区三区高清 | 91麻豆精品国产91久久久无需广告 | 久久久久99精品成人片三人毛片 | 97在线成人 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 中文字幕三区 | 一区二区三区免费在线观看视频 | 蜜臀av性久久久久蜜臀av | 97超碰人人澡人人爱学生 | 国产成人三级在线观看 | 九九热免费在线视频 | 国产一级电影免费观看 | av黄色成人| 国产精品一区二区白浆 | 激情综合色播五月 | 国产精品免费久久 | 二区中文字幕 | 欧美一区日韩一区 | 麻豆免费精品视频 | 97成人精品视频在线播放 | 天堂av网在线| 一级黄色电影网站 | 午夜久久影院 | 亚洲国产精品激情在线观看 | 久久你懂的 | 久久亚洲成人网 | 香蕉视频网站在线观看 | 成人免费在线视频 | 在线观看视频色 | 午夜电影av | www.91国产 | 中文av在线免费观看 | 九九热只有这里有精品 | 超碰人人91 | 国产精品破处视频 | 日韩在线视频观看 | 欧美精品国产精品 | 国语对白少妇爽91 | 婷婷色中文 | 黄色最新网址 | 伊人va| 草久久影院 | 丁香高清视频在线看看 | 久久美女高清视频 | 日韩午夜剧场 | 视频一区二区免费 | 91精品欧美一区二区三区 | 久久久久久久久久久久久影院 | 91色网址 | 99视频精品 | av片一区 | 国产无区一区二区三麻豆 | av亚洲产国偷v产偷v自拍小说 | 99久久综合狠狠综合久久 | 久草在线视频在线观看 | 欧美伦理一区二区三区 | 日韩一级理论片 | 亚洲丝袜一区二区 | 日本不卡一区二区 | 狠狠色综合网站久久久久久久 | 九九有精品| 91片黄在线观看动漫 | av在线播放亚洲 | 久久精品99国产精品酒店日本 | 欧美视频日韩视频 | 亚州五月| 亚洲在线网址 | 国产欧美精品xxxx另类 | 精品久久久久一区二区国产 | 久久久美女 | 日韩欧三级| 亚洲桃花综合 | 99在线免费视频观看 | 天天做天天爱天天爽综合网 | 国产精品久久久久aaaa九色 | h视频日本 | 日韩在线 一区二区 | 日韩视频一区二区三区在线播放免费观看 | www.玖玖玖 | 岛国av在线免费 | 中文字幕在线视频精品 | 黄色免费在线视频 | 日日夜夜天天综合 | 亚洲视频久久久 | 久久美女电影 | 成人一区二区三区中文字幕 | 免费看黄在线网站 | 91精品人成在线观看 | 九九在线视频免费观看 | 国产高清成人在线 | 免费国产一区二区视频 | 超碰97成人 | av先锋影音少妇 | 国产高清黄色 | 92精品国产成人观看免费 | 久久综合偷偷噜噜噜色 | 欧美一级日韩三级 | 日韩在线资源 | 久久久麻豆视频 | 国产在线视频在线观看 | 免费看一级特黄a大片 | 久草干| 欧美日韩破处 | 国产精品va在线 | 色婷婷婷| 狠狠色丁香婷婷综合久久片 | 久久久福利影院 | 欧美在线91 | 国产精品一区二区果冻传媒 | 中文字幕一区二区三区乱码在线 | 国产在线播放一区 | 久久综合一本 | 久久精品视频日本 | 三级av免费观看 | 国产成人三级 | 天天操天天能 | 黄色片网站免费 | 一区二区视频欧美 | 免费看的国产视频网站 | 成人黄大片 | 久久精品久久99 | 九草视频在线观看 | 99久久久久免费精品国产 | 一级黄色片毛片 | 国内精品久久天天躁人人爽 | 国产精品成人自产拍在线观看 | 99视频在线精品国自产拍免费观看 | 国产成人一级电影 | 五月婷婷在线观看视频 | 人人爱在线视频 | 久久久久黄 | 国产1区2区3区精品美女 | 久久国产精品久久w女人spa | 一区二区三区在线观看免费 | 日韩在线中文字幕视频 | 亚洲精品视频在线观看免费视频 | 国产精品原创在线 | 天天激情天天干 | 少妇精品久久久一区二区免费 | 亚洲久在线 | 99精品久久久久 | 久久国产精品久久久久 | 国产99在线 | 久久99国产一区二区三区 | 久久男人免费视频 | 日操操 | 蜜臀av一区| 伊人婷婷网| 最近免费观看的电影完整版 | 午夜视频欧美 | 丁香导航| 中文字幕之中文字幕 | 手机在线观看国产精品 | 精品av网站| 国产精品第一 | 99精品国产在热久久下载 | 99国产情侣在线播放 | 久久久久亚洲最大xxxx | 黄色网在线免费观看 | 2023天天干 | 日韩av成人| 精品视频免费播放 | 成人一区二区三区在线观看 | 99r在线播放 | 黄色电影小说 | 丁香五月网久久综合 | 亚洲国产片| 91最新视频在线观看 | 久久精品日产第一区二区三区乱码 | 丁香六月久久综合狠狠色 | 欧美性超爽 | 婷婷性综合 | 亚洲黄色片在线 | 999久久久国产精品 高清av免费观看 | 天天综合天天做 | av电影在线播放 | 国产婷婷精品av在线 | 欧美日在线 | 玖玖在线播放 | 国产精品九九热 | 久久精品福利 | 欧洲精品久久久久毛片完整版 | 欧美一级电影 | 天天干天天碰 | 欧美精品亚洲二区 | 欧美一级淫片videoshd | 日韩天天综合 | 九九九在线观看视频 | 欧美久久99| 久久久精品国产免费观看一区二区 | 91在线播放综合 | 国产色视频 | 日韩av免费一区 | 欧美欧美| 色婷婷亚洲综合 | 激情欧美丁香 | 国产91小视频 | 亚洲va欧洲va国产va不卡 | 国产免费又黄又爽 | 顶级bbw搡bbbb搡bbbb| 欧美精品一区在线 | 久久久久国产成人精品亚洲午夜 | 国产精品日韩高清 | 天天曰天天 | 国产精品专区h在线观看 | 国产亚洲情侣一区二区无 | 国产在线免费 | 成人久久久电影 | 怡红院成人在线 | www.五月天婷婷 | 天天干天天操人体 | 四月婷婷在线观看 | 亚洲欧洲精品一区二区 | www.97色.com | 亚洲激情国产精品 | 国产成人av网址 | av黄色免费网站 | 亚洲天堂免费视频 | 久久久久福利视频 | 综合色婷婷 | www日日 | 91cn国产在线 | 亚洲国产精品500在线观看 | 国产资源免费在线观看 | 婷婷久久综合九色综合 | 久久久午夜精品福利内容 | 免费网站黄| 成人va视频 | 天天操导航 | 蜜臀久久99静品久久久久久 | 最近字幕在线观看第一季 | 亚洲日日日 | 国产伦精品一区二区三区免费 | 一级黄毛片| 久草在线视频首页 | 免费看的黄色 | 在线看片日韩 | 特及黄色片| 日韩视频一 | 五月婷网站 | 一级电影免费在线观看 | 亚洲精品国偷自产在线99热 | 欧美 另类 交 | 欧美特一级| 一区二区三区动漫 | 欧美天堂视频在线 | 国产黄色特级片 | 色婷婷综合久色 | 亚洲日本一区二区在线 | 久久午夜精品影院一区 | av电影免费观看 | 天天草天天干天天 | 成人91在线| 久久第四色 | 亚洲精品在线观看的 | 久热久草| 在线免费性生活片 | 国产丝袜 | 亚洲国产日韩精品 | 啪啪资源 | 久久午夜电影院 | 国产精品第十页 | 日韩欧美高清一区二区 | 一级性生活片 | 欧洲一区二区三区精品 | 国产日韩在线播放 | 国产精品久久久久久久久搜平片 | 日韩美av在线 | 亚洲国产午夜精品 | 日日夜夜天天射 | 中文一区在线 | 婷婷国产一区二区三区 | 日韩爱爱片 | 日韩三级av | 久久久免费视频播放 | 久久99国产精品自在自在app | 精品国产精品国产偷麻豆 | 人人擦| 日日干天夜夜 | 麻豆久久| 一级一级一片免费 | www.夜色321.com| 国产精品theporn | 久久亚洲免费视频 | 欧美成年黄网站色视频 | 色偷偷人人澡久久超碰69 | 国产精品区一区 | 亚洲精品女人久久久 | 天天干天天干天天操 | 久久久久97国产 | 五月天色丁香 | 精品国产一区二区三区久久久蜜臀 | 国产黄色在线网站 | 免费av在 | 国产精品久久久久婷婷二区次 | 色综合天天在线 | 91污视频在线观看 | 成 人 黄 色视频免费播放 | 人成免费网站 | 99在线国产| 日韩成人黄色 | 国产成人精品午夜在线播放 | 国产一区二区久久久久 | 国产精品成人国产乱 | 一区二区 不卡 | 美女网站在线观看 | 麻豆成人小视频 | 欧美日韩在线观看一区二区三区 | 精品久久久久久电影 | av理论电影| 亚洲一区二区黄色 | 一区二区精品在线 | 日韩精品在线免费播放 | 伊人va| 国产亚洲aⅴaaaaaa毛片 | 人人玩人人添人人澡超碰 | 国产日韩欧美在线一区 | 欧美日韩免费一区二区 | 久久久久久久久免费视频 | 亚洲最新视频在线播放 | a爱爱视频| 日本在线精品视频 | 亚洲国产日韩一区 | 69精品| 国产欧美久久久精品影院 | 91成人在线观看高潮 | 91亚洲精品久久久中文字幕 | 亚洲黄污| 欧美一级日韩三级 | 日日夜夜精品免费观看 | 2019中文在线观看 | 天天插夜夜操 | a电影在线观看 | 狠狠88综合久久久久综合网 | 天天干天天拍天天操 | 亚洲午夜精品久久久久久久久久久久 | 婷婷激情五月 | 亚洲国产中文字幕 | 国产区精品 | 狠狠地日 | 亚洲综合色站 | 欧美精品久久久久性色 | 天天爽夜夜爽精品视频婷婷 | 免费观看的黄色 | 久久精品国产亚洲aⅴ | 国产免费片 | 亚洲免费视频在线观看 | 黄色免费看片网站 | 精品国偷自产在线 | 日韩精品免费一区 | 四虎精品成人免费网站 | 亚洲精品在线观看中文字幕 | 国产麻豆剧果冻传媒视频播放量 | 亚洲欧洲一区二区在线观看 | 五月黄色 | 久久精品国产美女 | 亚洲精品在线播放视频 | 久久99热久久99精品 | h动漫中文字幕 | 日韩中文在线字幕 | 国产精品精品国产色婷婷 | 97免费在线观看视频 | 欧美一区二区三区免费看 | a级免费观看 | 日韩成人免费在线观看 | 国产精品初高中精品久久 | 国产精品久久视频 | 91精品一区二区三区久久久久久 | 四虎在线观看精品视频 | 96超碰在线 | 高清av中文在线字幕观看1 | 奇米网网址 | 精品国模一区二区 | 国产精品一区二区视频 | 91精品国产91久久久久久三级 | 免费久久精品视频 | 久久久私人影院 | 久久精品国产一区二区三 | av中文字幕av| 成 人 黄 色 视频播放1 | 91九色pron| 九色91av| 久久躁日日躁aaaaxxxx | 国产91精品一区二区 | 日韩一区视频在线 | 亚洲欧洲精品一区二区 | 成人免费视频视频在线观看 免费 | 国产亚洲一区二区在线观看 | 精品国产一区二区三区免费 | 亚洲精品一区二区三区高潮 | 超碰在线个人 | 久久免费电影网 | 91免费网 | 日日干,天天干 | 在线观看完整版 | 亚洲精品久久久蜜臀下载官网 | 国产精品一区二区中文字幕 | 亚洲成熟女人毛片在线 | 91精品伦理 | av色影院 |