文章目錄
- 一、認識Linux系統及基礎命令
- 二、文件管理命令:Linux中沒有後綴之分
- 三、Linux中用戶管理及權限管理
- 四、虛擬機管理
- 五、Linux中常用的工具命令
- 六、磁盤管理
- 七、系統管理
- 八、Linux中的壓縮
- 九、Linux中的軟件管理
- 十、Linux中的變量及表達式
- 十一、shell腳本基礎語法
- 十二、crontab定時任務
一、認識Linux系統及基礎命令
Linux中一切皆文件
1 構成
內核 + 文件系統 + shell = Linux
- 文件系統結構:文件進行讀寫
- Linux是一個樹形的文件系統結構
- 第一層目錄:/ 整個文件系統的訪問入口
2 重要的二級目錄
bin:放Linux上常用的命令
dev:放設備的目錄
etc:Linux配置文件目錄
home:普通用戶會在該目錄下創建屬於自己的目錄
root:管理員用戶家目錄
media:即插即用型的設備的掛載目錄
光盤自動掛載到media目錄下
mnt:掛載目錄
將硬盤中的分區(C/D/E)與目錄進行關聯
/datas/cpan 《- C分區
/datas/Dpan 《- D分區
/datas/Epan 《- E分區
opt:可選目錄
usr:放安裝的應用程序
sbin:只有管理員才能執行的命令
var:Linux日誌默認存儲目錄
3 基礎命令
ls : list,用於列舉一個目錄或者文件
ls [-ald] file_path
a:所有的:列舉包含隱藏文件
.開頭的爲隱藏文件
l:長格式查看詳細信息
ls -l = ll
d:列舉本身
.爲本身
cd:change directory 改變目錄
用於切換工作目錄
cd target_path
./爲本身或當期目錄,…/文上一級目錄
相對路徑:相對當前路徑,依次進行訪問
more target_file:分頁查看文件內容
more /shell/startserver.sh
絕對路徑:當訪問文件或者目錄時,從/目錄開始訪問
cd /shell/
more startserver.sh
pwd:print work directory 打印當前工作目錄
clear:用於清屏
快捷鍵:Ctrl+l
whereis:用於查看某個命令的位置
whereis more
回到頂部history:用於查看自己運行過的命令
二、文件管理命令:Linux中沒有後綴之分
1 增:mkdir touch
mkdir [-p] dir_path
mkdir /root/test01
mkdir -p /root/test02/test
touch file_path
touch test01/file1
2 刪、清空
3 改:vim
vi/vim:Linux中的文本編輯工具
3.1 命令模式:剛剛打開時進入命令模式
3.2 插入模式:在命令模式中按i,進入插入模式
3.3 最後行模式:在命令模式下,按shift+:,進入最後行模式
進入命令模式:按esc
q:退出
wq:保存退出
!:強制的
x:保存退出
X:加密
set nu:顯示行號
1,$s/nologin/1234/g
1:從第一行開始
$:最後一行
s:替換
g:如果一行出現多個,全部替換
4 查:more、cat、less、head、tail
cat:一次性讀取所有文件內容
cat /etc/passwd
cat -n /etc/passwd
顯示行號
more:分頁查看,一頁一頁的顯示
只能向下翻頁,最後自動退出
less:分頁查看
按q退出,可以上下翻頁
head:查看文件的前多少行
head [-n] file_path
head -10 /etc/passwd
_
$光標閃爍,等待更新 $
5 複製
cp [-r] source_path target_path
cp /etc/passwd /root/
cp /etc/passwd /root/passwd2
$ -r表示遞歸,可以複製文件夾下的所有目錄及文件,目標文件夾如果沒有則遞歸創建$
拷貝過程中可以直接重命名
移動剪切:也可以實現重命名
mv source_path target_path
6 常見錯誤:
No such file or directory
意思:沒有對應的文件或者目錄
原因:
1-真的沒有該文件或者目錄,路徑寫錯了
2-沒有權限
Permission denied
意思:沒有權限
原因:沒有權限
解決:修改權限
-bash:cdd : command not found
錯誤:命令沒有找到
原因
1-命令錯了
cdd /
2-語法不對
cd/
回到頂部
三、Linux中用戶管理及權限管理
1 用戶、組
默認用戶:root 管理員用戶
默認組:root
Linux默認自帶的用戶的id都在500以內,用戶自己創建的用戶id從500開始
用戶配置文件:/etc/passwd
root:x:0:0:root:/root:/bin/bash
用戶名:密碼:用戶id:組id:組名稱:家目錄:使用的shell類型
2 管理用戶
2.1 創建用戶
-o:or 或者條件
useradd fuyun
2.2 刪除用戶
-r:刪除時是否同時刪除家目錄
設置密碼
passwd fuyun
修改用戶名
usermod -l NewUser -d /home/NewUser -m OldUser
-l 修改用戶名
-d 修改登錄後使用的路徑
-m 修改登錄名稱的同時將目錄名稱一同修改
切換用戶
su - root
記得退出:exit
3 管理組
3.1 創建組
groupadd
3.2刪除組
groupdel
3.3 更改組
chgrp
groupmod -n newGroup oldGroup
4 權限管理
所屬用戶
|所有者 |同組用戶 |其他人 | 所有人 |
|---- |----- |------ |---- |
| u | g | o | a |
權限
|讀 |寫 |執行 |沒有權限 |
|---- |----- |------|---- |
|r |w |x | - |
drwxr-xr-x:表示一個文件的所有權限
|d |rwx |r-x |r-x |
|---- |---- |---- |---- |
|文件類型 |所有者 |同組用戶 |其他人 |
4.1 更改權限
回到頂部chmod:用於修改某個文件或者目錄權限的
chmod o+w /passwd
chmod a+x /passwd
chmod u+x,g-x /passwd
|r |w |x |
|— |— |---- |
|4 |2 |1 |
rwxrwxrwx:777
chmod 755 /passwd
chown:用於修改某個文件或者目錄的所有者的
chown -R username:groupname file_path
四、虛擬機管理
1 關機 :管理員才能執行
shutdown -h now
halt
init 0
2 重啓
reboot
init 6
3 快照:關機狀態下拍攝
4 克隆:用於複製多個機器的
五、Linux中常用的工具命令
1 sudo:用於普通用戶越級執行管理的命令
visudo:用於配置sudo,只有管理員能通過該命令分配權限給普通用戶
root ALL = (ALL) ALL
用戶名 從什麼地方登陸 以什麼身份 執行什麼命令
需求:配置rdedu用戶擁有啓動防火牆的權限
rdedu ALL=(root) /sbin/service iptables start
測試:
sudo service iptables start
rdedu ALL=(root) NOPASSWD:ALL
2 grep:用於數據過濾
grep 'root' /etc/passwd
3 常用工具符號
.:表示當前目錄
…:表示上一級目錄
~:代表家目錄
|:管道符,用於數據流的轉接
stdin
stdout
cat /etc/passwd | grep 'root'
>:輸出重定向,覆蓋
grep 'root' /etc/passwd > /grep_root.txt
>>:輸出重定向,追加
grep 'root' /etc/passwd >> /grep_root.txt
回到頂部<:輸入重定向
基本上在shell腳本里使用
command1 < infile > outfile
:同時替換輸入和輸出,執行command1,從文件infile讀取內容,然後將輸出寫入到outfile中
&:表示後臺運行
command &
\:換行符
`:執行符號
用執行符號包裹命令,將命令先執行後返回
4 man:用於查看某個命令的幫助文檔
man top
man yum
按q退出查看
5 find:用於查找文件的
格式:find 路徑 條件
find /etc -name init*
條件:
-name
*:匹配多個字符
?:匹配單個字符
ls /etc/init*
ls /etc/init??
-size:
find /etc -size +50(b,k,M,G)
+:大於
-:小於
並列條件和或者條件
-a:and 並列條件
-o:or 或者條件
find /etc -size +500k -a -size -1000k
-atime n:查詢文件最後訪問時間
n表示n*24小時之前
-ctime n:查詢文件狀態最後改變時間
-mtime n:查詢文件數據最後修改的時間
-type f/d:查詢文件或文件夾的類型
-user:查詢文件的所有者
-group:查詢文件的組
stat:查看文件信息
7 du:統計目錄中的大小
du [-sh] dir_path
s:表示總的
h: 人性化顯示單位
8 wc:做文本統計
wc [-lwc] file_path
l:行
wc -l /grep.txt
w:單詞
wc -w /grep.txt
c:字節
wc -c /grep.txt
m:字符
回到頂部可以統計多件文件
wc /grep.txt /root/install.log
六、磁盤管理
1 df -h:查看每個分區的信息
查看每個分區的磁盤利用率
掛載信息
2 fdisk:用於管理Linux中所有的硬盤設備
插入硬盤
查看硬盤信息
fdisk -l
對硬盤進行分區
- 分區:
主分區
擴展分區(建立邏輯分區)
```fdisk /dev/sdb```
回到頂部格式化
mkfs.ext4 /dev/sdb1
掛載
- 臨時掛載
mount /dev/sdb1 /primary_part
- 永久掛載
vim /etc/fstab
/dev/sdb1 /primary_part ext4 defaults 0 0
七、系統管理
1 網絡管理
ifconfig:用於查看和配置網絡信息
/etc/sysconfig/network-scritps/ifcfg-eth0
route -n
:查看路由
![圖片46:
2 端口
每個應用程序啓動以後會開放相應的端口
netstat -atunlp | grep 22
3 服務管理
service:用於管理Linux中所有系統安裝的服務
service service_name start|stop|status|restart
linux中通過service管理的服務程序地址:/etc/init.d/
常見服務:
iptables:防火牆
network:網絡
service network restart
NetworkManager:圖形化界面的網絡管理服務
sshd:安裝登錄訪問服務
chkconfig:設置開機啓動
chkconfig service_name on|off|--list
chkconfig iptables --list
chkconfig iptables off:關閉防火牆
chkconfig service_name on
4 進程管理
top:Linux中的任務管理器
free:用於查看內存
free -m
ps:process 用於查看當前所有的進程
ps -ef
kill :用於對服務發送信號的
關閉進程:
kill -9 pid
kill -9 1680
jps:java process
專門用於查看java進程的
5 udp與tcp的區別
tcp更安全,發送第一個信息後等待對方確認收到後再發送後面的信息,發送時間緩慢
udp更快速,將所有信息發送給對方,不管對方收到沒有,所以會導致信息丟失,不安全
回到頂部
八、Linux中的壓縮
windows:rar/zip
Linux:gzip、bzip2、zip
.tar.gz/tgz/.tar.bz2
壓縮類型:snappy、lzo、lz4
gzip:壓縮爲gzip格式
後綴:.gz
壓縮:gzip file_path
gzip passwd
解壓:gunzip file.gz
gunzip passwd.gz
特點:
1-壓縮完源文件不存在了
2-不支持壓縮文件夾
bzip2:壓縮格式爲bz2
後綴:.bz2
壓縮:bzip2 file_path
bzip2 passwd
解壓:bunzip2 file.gz
bunzip2 passwd.bz2
特點:
1-壓縮完源文件不存在了
2-不支持壓縮文件夾
1 tar:用於打包,將多個文件或者文件目錄合併爲一個文件
1.1 打包:將文件夾打包爲壓縮包 可以直接更改打包後的名稱
tar -cvf test02.tar test02
1.2 解包:
tar命令是調用了gunzip命令的,對只有一個壓縮內容的文件來解壓的時候才用tar, 而如果壓縮包裏有多個文件被壓縮了
tar -xf /root/test02.tar -C /
1.3 打包並壓縮爲gzip格式
tar -zcvf /test02.tar.gz test02
1.4 查看壓縮文件內容
tar -tvf /test02.tar.gz
1.5 解壓gzip格式的壓縮文件
tar -zxvf /test02.tar.gz -C /tmp
將上面的命令中的z改爲j,即爲bzip2格式的壓縮和解壓
1.6 格式
壓縮:tar -zcvf 壓縮後的文件的路徑 壓縮誰
解壓:tar -zxvf 解壓誰 -C 解壓到哪
查看:tar -tvf 壓縮文件路徑
1.7 參數
z:gzip格式
j:bzip2格式
c:打包
x:解包
v:顯示過程
f:檔名,文件名,f後面必須直接跟文件名
t:text,查看
C:指定解壓的路徑
c/x/t:一條命令中不能同時存在
1.8 unzip解壓
回到頂部如果壓縮包裏有多個文件被壓縮了,可以採用unzip命令去解壓
解壓到當前文件:unzip a.zip
解壓到指定文件:unzip a.zip -d a
九、Linux中的軟件管理
- window類型
exe、jar、msi、zip(免安裝)- Linux
rpm:Redhat系列的軟件包管理工具
dpkg:Debian系列的軟件包管理工具
壓縮:免安裝,直接配置即可
- 源碼:
先要安裝編譯需要的依賴- c/c++:
執行configured腳本文件:預編譯
make:編譯
make install :安裝- java:
- maven
編譯:mvn complie
打包:mvn package
安裝:mvn intall
清除:mvn clean
1 rpm : rpm包的管理命令
rpm包:每個軟件廠商都會提供對應的軟件的rpm包的版本
xxxxx.rpm
yum-presto-0.6.2-1.el6.noarch.rpm
yum-utils-1.1.30-30.el6.noarch.rpm
zd1211-firmware-1.4-4.el6.noarch.rpm
zenity-2.28.0-1.el6.x86_64.rpm
zip-3.0-1.el6.x86_64.rpm
zlib-1.2.3-29.el6.i686.rpm
zlib-1.2.3-29.el6.x86_64.rpm
zlib-devel-1.2.3-29.el6.i686.rpm
zlib-devel-1.2.3-29.el6.x86_64.rpm
zsh-4.3.10-7.el6.x86_64.rpm
rpm文件名稱格式
zlib-1.2.3-29.el6.x86_64.rpm
rpm的名稱-版本.操作系統.操作系統位數.rpm
1.1 查看
rpm -qa | grep zlib
1.2 安裝
rpm -ivh file_path(完整的rpm文件名稱)
rpm -ivh /media/CentOS_6.6_Final/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
i:install安裝
v:顯示詳細過程
h:標記
zlib-lib.rpm
zlib-util.rpm
zlib-deve.rpm
zlib.rpm
1.3 卸載
rpm -e zlib-devel-1.2.3-29.el6.x86_64
e:卸載
rpm -e --nodeps tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
1.4 更新
rpm -U package
1.5 查詢一個程序安裝了哪些文件
rpm -ql package_name
rpm -ql zlib-1.2.3-29.el6.x86_64
查詢某個命令來自於哪個安裝包
rpm -qf /bin/ls
2 yum:基於rpm的軟件倉庫式的管理工具
####2.1 軟件倉庫:yum源
2.2 查看:yum list
列舉的當前yum中所有可安裝或者已安裝的程序
只想查看已安裝的程序
yum list installed
2.3 安裝:yum install -y package_name
y:表示全部yes
yum install -y gcc
yum install -y lrzsz
2.4 卸載:yum remove -y package_name
yum remove lrzsz
十、Linux中的變量及表達式
1 自定義變量
1.1 定義:key=value
定義變量時等號兩邊不能有空格
語義可讀
系統變量大寫
沒有數據類型
1.2 引用:
${a}
$a
2 環境變量:整個系統中的變量
2.1 全局環境變量:對所有用戶生效
/etc/profile
系統環境變量:PATH=JAVA_HOME\bin
2.2 用戶環境變量:每個用戶擁有自己的環境變量,只對自己生效
每個用戶在自己的家目錄下有一個配置文件:
~/.bash_profile
3 位置變量:腳本中$1-$9,表示第一個到第九個參數
4 預定義變量:
$0:執行的文件名稱
$#:參數的個數
$*:所有的參數
$?:上一條命令執行的結果
0:上一條命令正確執行了
5 常見的通配符與正則
5.1 通配符
*:匹配多個字符
?:匹配單個
大部分用於這些命令:ls find cp rm
5.2 正則
[]:某個範圍的單個字符
[0-9]:表示0-9之間的任意一個字符
[a-z]
[A-Z]
.:單個字符
*:匹配多個
.*:匹配多個字符
^:以什麼開頭:^root.*bash$
中括號中表示非
[^ ]*
$:以什麼結尾
grep
grep 'r..t' passwd
grep '^root' passwd
grep '[0-9]:[0-9]' passwd
sed:專門用於對Linux中文本行的處理
sed -i '1d' passwd
sed 's/nologin/8888/g' passwd
得到ip地址:
ifconfig | grep 'inet addr' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bcast.*//g' | sed 's/ //g'
awk:專門用於對Linux中文件列的處理
awk -F ':' '{print $3}' passwd
6 通用表達式
6.1 邏輯連接符
&&:與連接,第一個成功了,第二個才執行
||:或連接,第一個失敗了,第二個才執行
;:無連接關係
6.2 內置判斷測試
6.2.1 字符串
[ $a = $b ]
[ $a = $b ];echo $?
[ $a \> $b ];echo $?
[ $a \&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; $b ];echo $?
[ $a != $b ];echo $?
-z:判斷變量是否爲空,空返回true,非空返回false
-n:判斷變量是否不爲空,不爲空返回true
6.2.2 數值
[]:
-eq:等於
-ne:不等於
-gt:大於
-ge:大於等於
-lt:小於
-le:小於等於
[ $a -eq $b ];echo $?
(()):高級語言
(($a==$b))
!= >= <= < >s
6.2.3 文件
-f:判斷是否是一個文件
[ -f /etc ];echo $?
-d:判斷是否是一個目錄
-e:判斷是否存在
-w:判斷是否有可寫 權限
-r:
-x:
6.2.4 運算
$((a+b))/$(($a+$b))
$[ $a + $b ]
6.2.5 時間命令
獲取當前系統時間
date
獲取當前格式化時間
date +"%Y-%m-%d %X"
修改時間(必須爲管理員賬號才能修改,普通用可以用sudo)
date -s "2018-09-12 18:22:45"
獲取前一天時間
date -d '-1 day' +"%Y-%m-%d"
獲取前兩天時間
date -d '2 days ago' +"%Y-%m-%d"
獲取前兩年時間
date -d '2 year ago' +"%Y-%m-%d"
7 重點:腳本
7.1 腳本編寫規範
1-必須聲明頭部,指定shell的類型
#!/bin/bash
2-運行腳本,必須有可執行的權限
chmod u+x location_var.sh
回到頂部
十一、shell腳本基礎語法
1 循環
for:第一種
for 變量 in 集合
do
執行的命令
done
第二種
for((i=1;i<10;i++))
do
執行的命令
done
while:
while [表達式]
do
done
2 判斷
if [條件表達式]
then
執行的命令
fi
if [條件表達式]
then
執行的命令
else
執行的命令
fi
if [條件表達式]
then
執行的命令
elif [條件表達式]
then
執行的命令
……
else
執行的命令
fi
並列條件
if [條件1] && [條件2] if [條件1] || [條件2]
if [ 條件1 -a 條件2] if [ 條件1 -o 條件2]
case :類似於java中的switch case
case 變量 in
value1)
怎麼樣?
;;
value2)
怎麼樣?
;;
*)
怎麼樣?
;;
esac
執行腳本的方式:
1-直接執行文件
2-使用sh命令執行
sh -x script.sh
十二、crontab定時任務
service crond status
at:簡單的定時任務,不好用
crontab:可以實現分鐘級別的精準任務調度
crontab -e : 編輯定時任務
* * * * * command
分鐘 小時 日 月 周
00-59 00-23 1-31 1-12 0-7 sh /tmp/test.sh
每天凌晨3點執行腳本
00 03 * * * sh /tmp/test.sh
每週日中午12點30執行該程序
30 12 * * 7 sh /tmp/test.sh
每兩個小時執行一次
00 */2 * * *
每天5點和7點執行一次
00 5,7 * * *
每天5點到7點
00 5-7 * * *
crontab -l :列舉當前所有的定時任務
crontab -r : 刪除所有的定時任務
crontab -u root -f /tmp/test.txt:
使用test.txt文件作爲root用戶的定時任務
回到頂部