1. 程式人生 > >Linux基礎知識梳理

Linux基礎知識梳理

chm 物理內存 當前 pin 占用 文件權限 快捷 student 光驅掛載

Linux基礎知識梳理

Linux內核最初只是由芬蘭人林納斯?托瓦茲(Linus Torvalds)在赫爾辛基大學上學時出於個人愛好而編寫的。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。

它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。
目前市面上較知名的發行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE
------------------
Linux的特點:
Linux中一切都是文件.Linux中不根據文件的後綴區分文件的類型

能說出Linux中常見的系統目錄及作用
/bin:是Binary的縮寫,這個目錄存放著系統必備執行命令
/boot:這裏存放的是啟動Linux時使用的一些核心文件
/dev:Device(設備)的縮寫,該目錄下存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。
/etc:所有的系統管理所需要的配置文件和子目錄。
/home:存放普通用戶的家目錄,在Linux中每個用戶都有一個自己的家目錄,
/lib:系統開機所需要最基本的動態連接共享庫,其作用類似於Windows裏的DLL文件。幾乎所有的應用程序都需要用到這些共享庫。
/lost+found:這個目錄一般情況下是空的,當系統非法關機後,這裏就存放了一些文件。

/media:linux系統會自動識別一些設備,例如U盤、光驅等等,當識別後,linux會把識別的設備默認掛載到這個目錄下。
/mnt:系統提供該目錄是為了讓用戶臨時掛載別的文件系統的,我們可以將光驅掛載在/mnt/上,然後進入該目錄就可以查看光驅裏的內容了。
/proc:這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。
/root:系統管理員的家目錄
/sbin:s就是Super User的意思,這裏存放的是系統管理員使用的系統管理程序。
/selinux:類似於Windows上的防火墻
/tmp:存放臨時文件的目錄
/usr: 用戶的應用程序安裝的默認目錄,類似與windows下的program files目錄。
/var:存放一些經常被修改的目錄放在這個目錄下。包括各種日誌文件。
----------------------------
vim編輯器
yy 復制當前光標所在行
y數字y 從第幾行復制到第幾行
u 撤銷上一步的操作
dd 刪除當前光標所在行
d數字d 從光標開始刪除到第幾行

Shift + $ 移動到行尾
Shift + ^ 移動到行頭

a 在光標後插入
i 在光標前插入
o 在當前光標的下一行插入

ESC 退出編輯模式

-------------------------
vi命令模式下操作:
/被查找的關鍵詞 n 查找下一個 shift+n 向上查找
?被查找的關鍵詞 n 查找上一個 shift+n 向下查找

:wq! 強制保存後退出
:wq 保存後退出

-------------------------
查看防火墻狀態 service iptables status
臨時關閉防火墻 service iptables stop
關閉防火墻開機啟動 chkconfig iptables off
開啟防火墻開機啟動 chkconfig iptables on


查看防火墻開機啟動狀態 chkconfig iptables --list
-------------------------
Linux系統有7個運行級別(runlevel)
運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動
運行級別1:單用戶工作狀態,root權限,用於系統維護,禁止遠程登陸
運行級別2:多用戶狀態(沒有NFS)
運行級別3:完全的多用戶狀態(有NFS),登錄後進入控制臺命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制臺,登錄後進入圖形GUI模式
運行級別6:系統正常關閉並重啟,默認運行級別不能設為6,否則不能正常啟動

-------------------------
sync (功能描述:將數據由內存同步到硬盤中)

-------------------------
shutdown [選項] 時間
shutdown -h 關機 halt : 關閉系統
shutdown -r 重啟 reboot:就是重啟

設置系統在10分鐘後關機,並將此次關機提示顯示在屏幕上
shutdown -h 10 ‘This server will shutdown after 10 mins’
-------------------------
遠程登錄到Linux
Linux系統中是通過SSH服務實現的遠程登錄功能,默認ssh服務端口號為 22
常用的Linux遠程登錄終端:
SecureCRT, Putty, SSH Secure Shell,XShell

-------------------------
man 幫助文檔命令

help 查看Shell內置命令的幫助信息
-------------------------
Linux中常用的快捷鍵

ctrl + c:停止進程
ctrl+l:清屏
徹底清屏是:reset
-------------------------
Linux中常用的命令
pwd:顯示當前工作目錄的絕對路徑)

打印/home 的工作路徑 pwd /home

ls 列出目錄的內容
-a :全部的文件,連同隱藏檔( 開頭為 . 的文件) 一起列出來
-l :長數據串列出,包含文件的屬性與權限

mkdir 創建一個新的目錄
-p:創建多層目錄,遞歸的創建目錄

rmdir 刪除一個空的目錄

touch 創建空文件

d ~或者cd :回到當前用戶自己的家目錄)
cd - :回到上一次所在目錄
cd .. :回到當前目錄的上一級目錄)

cp 復制文件或目錄
cp -r 遞歸的復制整個文件夾

rm 移除文件或目錄
rmdir deleteEmptyFolder :刪除空目錄)
rm -rf deleteFile :遞歸刪除目錄中所有內容)

mv 移動文件與目錄或重命名

cat 查看文件內容

tac查看文件內容,從最後一行開始顯示

more 查看文件內容,一頁一頁的顯示文件內容

less 查看文件內容
/字串 :向下搜尋『字串』的功能;n:向下查找;N:向上查找;
?字串 :向上搜尋『字串』的功能;n:向上查找;N:向下查找;

head查看文件內容
head -n 10 文件 (功能描述:查看文件頭10行內容,10可以是任意行數)

tail 查看文件內容
-------------------------
重定向命令
> 覆蓋寫入重定向
>> 追加寫入重定向

-------------------------
echo 打印字符串到屏幕上

ln軟鏈接

history 查看所敲命令歷史

date顯示當前時間
(1)date :顯示當前時間)
(2)date +%Y :顯示當前年份)
(3)date +%m :顯示當前月份)
(4)date +%d :顯示當前是哪一天)
(5)date +%Y%m%d date +%Y/%m/%d … :顯示當前年月日各種格式 )
(6)date "+%Y-%m-%d %H:%M:%S" :顯示年月日時分秒)
用指定的格式顯示時間
date "+%Y-%m-%d %H:%M:%S"
2017-06-19 20:54:58

date -s 字符串時間 設置系統的時間

(1)date -d ‘1 days ago‘ (功能描述:顯示前一天日期)
(2)date -d yesterday +%Y%m%d (同上)
(3)date -d next-day +%Y%m%d (功能描述:顯示明天日期)
(4)date -d ‘next monday‘ (功能描述:顯示下周一時間)

-------------------------
cal查看日歷
-------------------------
useradd 添加新用戶
passwd 設置用戶密碼
id 判斷用戶是否存在
-------------------------
su 與su - 的區別

userdel 刪除用戶
userdel -r 用戶名 刪除用戶的時候也刪除用戶的家目錄
-------------------------
who 查看登錄用戶信息

whoami 顯示當前登錄系統的用戶名稱
who 查看當前有哪些用戶登錄到了系統上

cat /etc/passwd 查看創建了哪些用戶

usermod修改用戶所屬組
groupadd 新增組
groupdel刪除組
groupmod修改組
cat /etc/group 查看創建了哪些組
-------------------------
chmod 修改文件或目錄的權限

文件: r-查看;w-修改;x-執行文件
目錄: r-列出目錄內容;w-在目錄中創建和刪除;x-進入目錄
刪除一個文件的前提條件:該文件所在的目錄有寫權限,你才能刪除該文件。
-------------------------
chown改變所有者
-R:表示遞歸修改文件夾中的所有文件的所有者和組

-------------------------
chgrp改變所屬組
-------------------------
硬盤分區
fdisk -l :查看當前硬盤的分區詳情
-------------------------
df查看硬盤信息
-a :列出所有的文件系統,包括系統特有的 /proc 等文件系統;
-k :以 KBytes 的容量顯示各文件系統;
-m :以 MBytes 的容量顯示各文件系統;
-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
-H :以 M=1000K 取代 M=1024K 的進位方式;
-T :顯示文件系統類型,連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
-i :不用硬盤容量,而以 inode 的數量來顯示

-------------------------
mount/umount掛載/卸載
Linux 掛載
對於Linux用戶來講,不論有幾個分區,分別分給哪一個目錄使用,它總歸就是一個根目錄、一個獨立且唯一的文件結構
Linux中每個分區都是用來組成整個文件系統的一部分,她在用一種叫做“掛載”的處理方法,它整個文件系統中包含了一整套的文件和目錄,並將一個分區和一個目錄聯系起來,要載入的那個分區將使它的存儲空間在這個目錄下獲得。

-------------------------
find 查找文件或者目錄

管道符,“|”,表示將前一個命令的處理結果輸出傳遞給後面的命令處理

grep 過濾查找
-------------------------
進程是正在執行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,並占用一定的系統資源。

ps查看系統中所有進程
ps -aux :查看系統中所有進程)
-------------------------
top查看當前系統的健康狀態,默認是3秒更新一次命令的執行結果

Swap:交換分區(虛擬內存)
Mem:物理內存
running 正在運行的進程數
sleeping 睡眠的進程
stopped 正在停止的進程
zombie 僵屍進程

-------------------------
pstree查看進程樹

kill終止進程
kill -9 pid進程號 表示強迫進程立即停止
-------------------------
netstat顯示網絡統計信息

netstat -anp (功能描述:此命令用來顯示整個系統目前的網絡情況。例如目前的連接、數據包傳遞數據、或是路由表內容)

查看端口50070的使用情況
netstat -anp | grep 50070

-------------------------
tar打包
-c 產生.tar打包文件
-v 顯示詳細信息
-f 指定壓縮後的文件名
-z 打包同時壓縮
-x 解包.tar文件

壓縮:tar -zcvf XXX.tar.gz n1.txt n2.txt
解壓:tar -zxvf XXX.tar.gz -C 解壓目的地

-------------------------
service後臺服務管理
1)查看指定服務的狀態 service network status
2)停止指定服務 service network stop
3) 啟動指定服務 service network start
4)重啟指定服務 service network restart
5)查看系統中所有的後臺服務 service --status-all

-------------------------
chkconfig設置後臺服務的自啟配置
1)查看所有服務器自啟配置 chkconfig
2) 關掉指定服務的自動啟動 chkconfig iptables off
3)開啟指定服務的自動啟動 chkconfig iptables on

-------------------------
crond系統定時任務
crontab
-e: 編輯crontab定時任務
-l: 查詢crontab任務
-r: 刪除當前用戶所有的crontab任務

第一個“*” 一小時當中的第幾分鐘 0-59
第二個“*” 一天當中的第幾小時 0-23
第三個“*” 一個月當中的第幾天 1-31
第四個“*” 一年當中的第幾月 1-12
第五個“*” 一周當中的星期幾 0-7(0和7都代表星期日)

* 代表任何時間。比如第一個“*”就代表一小時中每分鐘都執行一次的意思。
, 代表不連續的時間。比如“0 8,12,16 * * * 命令”,就代表在每天的8點0分,12點0分,16點0分都執行一次命令
- 代表連續的時間範圍。比如“0 5 * * 1-6命令”,代表在周一到周六的淩晨5點0分執行命令
*/n 代表每隔多久執行一次。比如“*/10 * * * * 命令”,代表每隔10分鐘就執行一遍命令


-------------------------
RPM軟件包管理
rpm -qa (功能描述:查詢所安裝的所有rpm軟件包)
rpm -qa | grep rpm軟件包 查詢指定的軟件包
rpm -e RPM軟件包 卸載一個軟件包

安裝一個軟件包
rpm -ivh RPM包全名
-i=install,安裝
-v=verbose,顯示詳細信息
-h=hash,進度條
--nodeps,不檢測依賴進度

-------------------------
寫一個簡單的腳本
腳本以 #!/bin/bash 開頭

#!/bin/bash
# 腳本的註釋:打印helloworld
echo "helloworld"

執行一個腳本前需要先給這個腳本設定一個執行權限
chmod 777 helloworld.sh
./helloWorld.sh
或者
bash helloWorld.sh
-------------------------
Linux Shell中的變量分為,系統變量和用戶自定義變量。
系統變量:系統變量:$HOME、$PWD、$SHELL、$USER

-------------------------
設置環境變量
(1)export 變量名=變量值 :設置環境變量的值)
(2)source 配置文件 :讓修改後的配置信息立即生效)
(3)echo $變量名 :查詢環境變量的值)
-------------------------
Shell腳本中的位置參數
位置參數變量
$n (功能描述:n為數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數,十以上的參數需要用大括號包含,如${10})
$* (功能描述:這個變量代表命令行中所有的參數,$*把所有的參數看成一個整體)
[email protected] (功能描述:這個變量也代表命令行中所有的參數,不過[email protected]把每個參數區分對待)
$# (功能描述:這個變量代表命令行中所有參數的個數)

寫一個簡單的參數小腳本
#!/bin/bash
echo "$0 $1 $2"
echo "$*"
echo "[email protected]"
echo "$#"

-------------------------
常用判斷條件
-lt 小於
-le 小於等於
-eq 等於
-gt 大於
-ge 大於等於
-ne 不等於

2)按照文件權限進行判斷
-r 有讀的權限
-w 有寫的權限
-x 有執行的權限

3)按照文件類型進行判斷
-f 文件存在並且是一個普通文件
-e 文件是否存在
-d 目錄是否存在

示例:
23是否大於等於22
[ 23 -ge 22 ]
(2)student.txt是否具有寫權限
[ -w student.txt ]
(3)/root/install.log目錄中的文件是否存在
[ -e /root/install.log ]
-------------------------
流程控制語句:
if判斷

if [ 條件判斷式 ]
then
程序
fi

寫一個簡單的小腳本,判斷輸入的數是否等於123,是否等於456
#!/bin/bash

if [ $1 -eq "123" ]
then
echo "123"
elif [ $1 -eq "456" ]
then
echo "456"
fi
-------------------------
case $變量名 in
"值1")
如果變量的值等於值1,則執行程序1
;;
"值2")
如果變量的值等於值2,則執行程序2
;;
…省略其他分支…
*)
如果變量的值都不是以上的值,則執行此程序
;;
esac

寫一個簡單的case判斷小腳本
!/bin/bash

case $1 in
"1")
echo "1"
;;

"2")
echo "2"
;;
*)
echo "other"
;;
esac

-------------------------
for循環
for 變量 in 值1 值2 值3…
do
程序
done

寫一個簡單的小腳本,打印輸入的參數
#!/bin/bash
#打印數字

for i in "$*"
do
echo "The num is $i "
done

for j in "[email protected]"
do
echo "The num is $j"
done


第二種for循環
for (( 初始值;循環控制條件;變量變化 ))
do
程序
done

寫一個簡單的小腳本
#!/bin/bash

s=0
for((i=0;i<=100;i++))
do
s=$[$s+$i]
done
echo "$s"
-------------------------
while循環
while [ 條件判斷式 ]
do
程序
done

寫一個簡單的小腳本
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done

echo $s
-------------------------
read讀取控制臺輸入
-p:指定讀取值時的提示符;
-t:指定讀取值時等待的時間(秒)
-------------------------
軟件倉庫
YUM(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。

為什麽需要學會配置本地Yum源
YUM源雖然可以簡化我們在Linux上安裝軟件的過程,但是生產環境通常無法上網,不能連接外網的YUM源,所以就無法使用yum命令安裝軟件了。為了在內網中也可以使用yum安裝相關的軟件,就要配置yum源。

YUM源其實就是一個保存了多個RPM包的服務器,可以通過http的方式來檢索、下載並安裝相關的RPM包。

yum的常用命令:
yum install -y rpm軟件包
yum list :列出所有可用的package和package組)
yum list :列出所有可用的package和package組)
yum clean all :清除所有緩沖數據)
yum deplist rpm軟件包 :列出一個包所有依賴的包)
yum remove rpm軟件包 :刪除httpd)
-------------------------
-------------------------
-------------------------

Linux基礎知識梳理