1、安裝vmware和創建虛擬機2、載入centos6.5的鏡像3、linux的介紹linux是一個操作系統(免費開源),來源unix linux是一個典型的樹形文件系統,一切都是基於文件。"/"稱之linux的根目錄即頂級目錄linux的每一個軟體都有缺點的用途,最小化安裝linux中僅有一個超級 ...
1、安裝vmware和創建虛擬機
2、載入centos6.5的鏡像
3、linux的介紹
linux是一個操作系統(免費開源),來源unix
linux是一個典型的樹形文件系統,一切都是基於文件。"/"稱之linux的根目錄即頂級目錄
linux的每一個軟體都有缺點的用途,最小化安裝
linux中僅有一個超級用戶root
linux的特點:
linux的版本:
red hat(RHEL) 收費但有免費試用版本
centos
debian
ubuntu
linux的目錄結構:
/bin
/sbin
/etc
/var
/usr
/opt
/home
/root
/dev
/sys
linux中的基礎命名:
command [option] [file/path]
man command
uname 顯示
date 時間
hostname 主機名
ps -ef | grep pid 列出等於pid的進程
| 管道
grep 過濾
top 實時顯示系統中各個進程的資源占用狀況
free 顯示Linux系統中空閑的、已用的物理記憶體及swap記憶體,及被內核使用的buffer。
jps 顯示運行的java進程
kill -9 強行殺死進程
cat inittab 進入初始化界面
df 查看磁碟
fdisk / 對原有的分區進行擴容或者對整個伺服器擴容
du 顯示每個文件和目錄的磁碟使用空間。
fsck 文件系統檢查修複
mount 掛載
mkfs.ext4 格式化分區
useradd 添加用戶
groupadd 添加組
gpasswd -a:添加用戶到組;gpasswd -a peter users
-d:從組刪除用戶;
-A:指定管理員;gpasswd -A peter users
-M:指定組成員和-A的用途差不多;
-r:刪除密碼;
-R:限制用戶登入組,只有組中的成員才可以用newgrp加入該組。
**********************************************************************
usermode-c<備註>:修改用戶帳號的備註文字;
-d<登入目錄>:修改用戶登入時的目錄;
-e<有效期限>:修改帳號的有效期限;
-f<緩衝天數>:修改在密碼過期後多少天即關閉該帳號;
-g<群組>:修改用戶所屬的群組;
-G<群組>;修改用戶所屬的附加群組;
-l<帳號名稱>:修改用戶帳號名稱;
-L:鎖定用戶密碼,使密碼無效;
-s<shell>:修改用戶登入後所使用的shell;
-u<uid>:修改用戶ID;
-U:解除密碼鎖定。
userdel 刪除用戶
groupdel 刪除組
**********************************************************************
修改文件許可權read write executable
a 超級用戶、屬主、其他用戶
chmod ugo+-rwx /file.txt
chmod 765 /file.txt
進入目錄
cd
cd - ~ $JAVA_HOME
pwd 查看當前所在目錄
相對目錄和絕對目錄:
創建目錄:
mkdir
mkdir -p ./123/1/2/3
mkdir ./123/t1 ./123/t2
創建文件
touch ./123/666 ./123/667
echo "hello world" >> ./123/668
vi ./123/669
vim ./123/669
nano ./670
列出:
ls
ll = ls -l
複製目錄文件
cp ./123/666 ./123/668 ./
cp -r ./123/1 ./ 複製目錄一定要 -r (改變文件屬性所用的遞歸為R)
移動剪切重命名目錄文件
mv ./123/666 ./123/668 ./123/t1/
mv ./123/1/ ./123/t1/
mv ./123/t1/668 ./123/668.doc
mv ./123/t1/1/ /home/test/123/12
mv ./123/12/ ./123/1
批量重命名目錄文件
for i in `seq 2 20`; do touch /home/test/123/${i}.doc ;done
rename .doc .txt *.doc
rename .txt .doc ./123/*.txt
修改文件內容
vi ./123/666.doc
vim ./123/666.doc
nano ./123/666.doc
echo "6666" >> ./123/666.doc (追加)
echo "7777" > ./123/666.doc (覆蓋)
查看文件內容
cat -n ./123/666.doc
head ./123/666.doc
head -30 /var/log/boot.log
tail /var/log/boot.log
tail -30 /var/log/boot.log
tail -f /var/log/boot.log
more /var/log/boot.log
less /var/log/boot.log
vi ./123/666.doc
vim ./123/666.doc
nano ./123/666.doc
刪除目錄文件
rm -rf ./666.doc
rm -rf ./1
改變文件屬性
a
u g o
rwxrw-r-x
- rw- r-- r-- 2 root root 4096 Jan 1 21:00 123
d rw- --- --- 2 biman1 biman1 4096 Jan 1 21:00 biman1
d rwx r-x r-x 2 root root 4096 Jan 1 21:00 test
d rw- --- --- 2 tom tom 4096 Jan 1 21:00 tom
r 4
w 2
x 1
chomd 765 ./123
chmod -R(遞歸) o+w ../test/ (複製目錄所用遞歸為r)
r 讀:查看文件內容、查看目錄列表、文件列表
w 寫:修改文件內容、創建文件、刪除
x 執行: 執行腳本文件
chown tom ./hw.sh 改變屬主
chown tom:tom ./hw.sh 改變屬主:組
chown -R tom:tom ./hw.sh 遞歸改變屬主和組
chown :root ./hw.sh 改變組
chgrp tom ./hw.sh 改變組
編輯器:
vi ./hw.sh
i
o
esc
shift + :
w
q
wq
q!
tar:
tar -zcvf ./123.tar ./123/ 打包到123下
tar -zxvf ./123.tar 解壓到當前文件夾
tar -zxvf ./123.tar -C /home/ 打包到home下
/usr/bin/zip zip打包命令
/usr/bin/unzip unzip解壓命令
/bin/gzip
/bin/gunzip
gzip -cr(遞歸) 123 > ./123.gz
> :追加
>> :重定向
linux中的查找:
which 可執行的命令
whereis 安裝包所在的目錄和文件
updatedb 更新資料庫
locate hw.sh 查找資料庫(必須是資料庫跟新後)中的關健字
按照要求查找
find / -name 'hw.sh'
find / -size
find / -atime
find / -ctime
別名:
alias
alias cle='clear'
unalias cle
分臨時和永久:
cd -
cd ~
cd ./
cd ../../../
網路:
netstat -tlp 顯示網路狀態
(lots of)lsof -i:22 顯示好多信息(-i是顯示網路信息)
vi /etc/hosts
vi /etc/sysconfig/network
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/udev/rules.d/70-persistent-net.rules
service network restart/status/start/stop
service iptables restart/status/start/stop
service mysql restart/status/start/stop
service nginx restart/status/start/stop
chkconfig iptables --list
chkconfig iptables off/on
linux中軟體安裝:
一、二進位程式安裝(**.rpm)
(利用命令使用rpm包進行安裝,類似於exe安裝)
優點:簡單容易
缺點:對平臺有限制
rpm的安裝
優點:簡單容易
缺點:安裝包存在依賴
包的組成:
大概由五部分組成
man rpm
查詢:
rpm -q
rpm -qa | grep mysql
rpm -ql
安裝:
rpm -ivh /包的絕對路徑
更新:
rpm -Uvh /包的絕對路徑
卸載:
rpm -e --nodeps
驗證:
rpm -V
二、yum的安裝(聯網進行安裝)
查詢:
yum list
yum grouplist
yum info
yum search
安裝:
yum install gcc
yum -y install gcc
yum groupinstall 組包
更新:
yum -y upgrade gcc
yum -y update gcc
yum -y groupupdate 組包
卸載:
yum -y remove nc
yum -y groupremove 組包
製作緩存:
yum clean gcc
yum clean all
yum makecache
三、源碼安裝(**.gz)
1、下載源碼並解壓
2、執行源碼目錄下的configure文件,後面可以加參數。(讀取readme文件或者下載的官網)
3、執行編譯安裝 make && make install
===========================shell===========================
shell:腳本語言。腳本包含一系列的可執行的linux的命令的集合
shell 解釋器類別:
/bin/bash 預設
/bin/sh
/bin/tcsh
ksh 需要自己安裝
執行方法:
1、 sh ./first.sh 可以不用授予執行許可權
2、 授予./first.sh執行許可權
shell中的變數:
變數名=值
註意:
變數名不能是關鍵字
變數名和等號 值和等號之間不能有空格
變數首字母不能是數字和特殊符號 ???
賦值:
取值:
"" :識別轉移符和取值的符號
'' :不識別轉移符和取值的符號,原樣輸出
`` :linux中的命令
設置只讀變數:
readonly 變數名
刪除變數:
unset 變數名
字元串的拼接:
字元的截取:
${name:1:3} 1:起始位置 3:長度
shell中註釋:
單行註釋
多行註釋
shell中的運算:
數學運算: 藉助`expr ` *需要轉義
關係運算:-eq -ne -lt -le -gt -ge
邏輯運算:-a:and -o:or
字元串運算:= != -z:為0返回true -n:為0返回false str:不為空返回true
文件運算:-e:存在 -r:可讀 -w(寫) -x(可執行) -d(目錄) -f(文件) -s(size):大小不為0返回true
布爾運算: !
shell中的數組:
基本數據類型簡單,都是字元串,但是兩個都是字元串的數字即可參加運算
數組定義:
arr1=(1 2 3 4 5 6 7 8)
arr2=(
1232
30
30
23
43
23
)
arr3[0]=123
arr3[3]=999
arr3[6]=[666]
賦值:
arr2[1]=9999
取值:角標從0開始,但是越界不報異常
echo ${arr1[1]}
echo ${arr1[2]}
取數組長度:
${#arr1[*]}
shell中的控制條件:
if [] ; then 控制體 ; fi
定義格式:
if []
then
控制體
fi
if []
then
控制體
else
控制體
fi
if []
then
控制體
elif []
then
控制體
else
控制體
fi
if [ $1 -eq 1 ]
then
echo "男"
fi
if [ $1 -eq 1 ]
then
echo "男"
elif [ $1 -eq 2 ]
then
echo "女"
else
echo "泰國"
fi
有if的地方,後面就有then
沒有elseif 只有elif
每一個控制體都必須寫
if 和 中括弧之間的空格必須嚴格遵守
shell中的迴圈:
定義:
for i in 迴圈條件
do
迴圈體
done
while 迴圈條件
do
迴圈體
done
until [控制體] 滿足條件跳出迴圈
do
迴圈體
done
迴圈
(1)for迴圈
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
(2)while迴圈
i=1
while(i < 11)
do
echo $i
let i++
done
(3)until迴圈
startDate=
endDate=
until [ $# -eq 0 ]
do
if [ $1'x' = '-sdx' ]
then
shift
startDate=$1
elif [ $1'x' = '-edx' ]
then
shift
endDate=$1
fi
shift
done
continue:調出當次迴圈
break:調出迴圈
case 值 in(類似於switch)
(匹配值)
語句
;;
(匹配值)
語句
;;
esac
迴圈 switch break continue
while :
do
echo "輸入1-5"
read num 鍵盤輸入
case $num in
1|2|3|4|5)
echo "在1-5之間"
break
;;
*)
echo "在6-10之間"
continue
;;
esac
done
方法無參無返回值
#!/bin/bash
function fuck(){
echo "第1個參數"$1
echo "第2個參數"$2
echo "第3個參數"$3
echo "第4個參數"$4
echo "第10個參數"${10} #參數個數超過9個之後參數取值要加{}
echo "第所有參數"$*
echo "參數個數 "$#
}
fuck 1 2 3 4 5 6 7 11 22 33 44
方法無參有返回值
#!/bin/bash
function fuck(){
echo "第一個參數:"
read anum
echo "第2個參數:"
read bnum
return $(($anum+$bnum))
}
fuck
echo $? #返回值不能超過255
$1去參數 $#取個數 $* $@ 取所有個數 $?取返回值
shell中的文件引入
#!/bin/bash
#source /home/shell/1.sh #第一種
. /home/shell/1.sh #第二種
echo ${name}
echo "aaaaaaa"
func
shell的簡單調試
語法檢測:相當於java的編譯
1、shell語法檢測:
sh -n ./test.sh (sh是/bin/sh 是系統提供的可執行腳本)
2、shell的普通調試:
sh -x ./test.sh
3、在調試過程中可以按Ctrl + Z中斷調試,觀察結果,然後再按fg鍵繼續調試即可。(先按f在按g鍵)
shell中的時間
years weeks days hours minutes seconds
echo `date -d "x days ago" "+%Y-%m-%d %H:%M:%S"`
x大於0 為 之前 x小於0 為之後
crontab -e(定時列表編輯)
* * * * * 可執行的命令與腳本
分時天月周
00 2-4 * * * 凌晨兩點到四點(2,4)兩點和四點
00 */4 * * * 每兩個小時跑一次
*/1 * * * * 每一分鐘跑一次 echo "hello" >> ./home/cronttab.log
sudo 讓普通用戶得到root許可權
前提是先修改sudo的文件 /etc/sudoers 添加普通用戶
root用戶不能修改sudo文件,需要修改文件許可權後編輯 chmod a+w
sudo rm -rf 1.sh (此時需要輸入密碼)
不輸入密碼重新修改sudo文件 nopass
//修改尾碼名待修改
#!/bin/bash
#read dir
#function ff(){
dir=/home/abc
cd $dir
for file in 'ls $dir'
do
name=$(ls $file | cut -d . -f1)
mv $file ${name}
done
#}
#ff
=====================================
#!/bin/bash
basedir=/home/shell
rename .sh .txt *.sh
=============有兩個.sh=============
#!/bin/bash
basedir=/home/shell
rename .sh .txt $basedir/*.sh
==============定時刪除一周前的日誌================
oneweekago=date -d "1 weeks ago" "+%Y-%m-%d"
pwatimestamp=echo `date -d "1 weeks ago" "+%s"`#時間戳
#代碼
#!/bin/bash
logdir='/home/logs'
pwatimestamp=echo `date -d "1 weeks ago" "+%s"`#時間戳
for i in `ls $logdir`
do
logdate=`basename $i .log`
ldtimestamp=`date -d "$logdate" "+%s"`
if [ $ldtimestamp -le $pwatimestamp ]
then
rm -rf ${logdir}$i
fi
done