1. 按系列羅列Linux的發行版,並描述不同發行版之間的聯繫與區別 2. 安裝Centos7.6操作系統,創建一個自己名字的用戶名,並可以正常登錄,將主要步驟截圖。 3. 配置環境變數,實現執行history的時候可以看到執行命令的時間。 4. 總結Linux哲學思想。 5. 總結Linux常用命 ...
1. 按系列羅列Linux的發行版,並描述不同發行版之間的聯繫與區別
2. 安裝Centos7.6操作系統,創建一個自己名字的用戶名,並可以正常登錄,將主要步驟截圖。
3. 配置環境變數,實現執行history的時候可以看到執行命令的時間。
4. 總結Linux哲學思想。
5. 總結Linux常用命令使用格式,並用實例說明。例如echo、screen、date、ifconfig、export等命令
1、按系列羅列linux的發行版,並描述不同發行本之間的聯繫與區別
Linux 發行版本:
Slackware:SUSE ,linux Enterprise Server(SLES) OpenSuse 桌面
Debian:Ubuntu,deepin(深度),mint
Redhat:redhat enterprise linux ,centos ,fedora
Archlinux:輕量簡潔,遵循K.L.S.S原則,(keep IT simple and stupid)
Gentoo:極致性能,不提供傳統意義的安裝程式,下載源代碼在本機上編譯安裝軟體
LFS:linux From sxrath 自製linux
Android:kernel+busybox(工具集)+Java虛擬機
不同發行版本之間的聯繫:完整的Linux系統都是由Linux內核加上各種應用程式組成
區別:
Red Hat ,是redhat自己的發行的企業版,是redhat的一個重要節點。
Fedore是一款基於linux的操作系統,也是一組維持電腦正常運行的軟體集合。由紅帽公司贊助。
suse linux,針對個人用戶。
紅旗linux的發行版,包括桌面版、工作站版、數據中心伺服器版、HA集群版和紅旗嵌入式linux等產品,
是中國較大、較成熟的linux發行版之一。
Debian,三大發行版中唯一以社區形式運作,不以商業公司形式運作。是一個致力於創建自由操作系統
的合作組織。而且debian開發者所創建的操作系統中絕大部分基礎工具來自於GNU工程。
Ubuntu,是一個以桌面應用為主的linux操作系統。Ubuntu的目標在於為一般用戶提供一個最新的、同時
又相當穩定的主要由自由軟體構建而成的操作系統。
Centos,是一個基於redhat linux 提供的可自由使用源代碼的企業級linux發行版本。目前Centos已被收購,
成為redhat旗下的一個組織。
2、安裝centos7.6操作系統,創建一個自己的名字的用戶名,並可以正常登陸,將主要步驟截圖
[root@localhost ~]# useradd tk
[root@localhost ~]# passwd tk
Changing password for user tk.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
3、配置環境變數,實現執行history的時候可以看到執行命令的時間
在/etc/profile 下找到HISTSIZE併在下麵添加 HISTTIMEFORMT=”%F%T”
或者HISTTIMEFORMT=”%y-%m-%d %H:%M:%S”,註意格式%S後面最好有空格這樣顯示的時候格式
好看 即可,如下:
[root@tk ~]# vim /etc/profile
[root@tk~]# source /etc/profile
[root@tk ~]# history
4、總結linux哲學思想
a.一切都是一個文件(包括硬體)
b.小型,單一用途的程式
c.鏈接程式,共同完成複雜的任務
d.避免令人困惑的用戶界面
e.配置數據存儲在文本中
5、總結linux常用的命令使用格式,並用實例說明,列如echo、screen、date、ifconfig、export等命令
Screen:
screen用於命令行終端切換
用戶可以通過該軟體同時連接多個本地或遠程的命令行會話,併在其間自由切換。GNU Screen可以看作
是視窗管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。
會話恢復:只要Screen本身沒有終止,在其內部運行的會話都可以恢復。這一點對於遠程登錄的用戶特別
有用——即使網路連接中斷,用戶也不會失去對已經打開的命令 行會話的控制。只要再次登錄到主機上
執行screen -r就可以恢復會話的運行。同樣在暫時離開的時候,也可以執行分離命令detach,在保證里
面的程式正常運行的情況下讓Screen掛起(切換到後 台)
語法:
screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]
選項:
-A 將所有的視窗都調整為目前終端機的大小。
-d <作業名稱> 將指定的screen作業離線。
-h <行數> 指定視窗的緩衝區行數。
-m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-r <作業名稱> 恢復離線的screen作業。
-R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s 指定建立新視窗時,所要執行的shell。
-S <作業名稱> 指定screen作業的名稱。
-v 顯示版本信息。
-x 恢復之前離線的screen作業。
-ls或--list 顯示目前所有的screen作業。
-wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。
常用screen參數:
screen -S yourname -> 新建一個叫yourname的session
screen -ls -> 列出當前所有的session
screen -r yourname -> 回到yourname這個session
screen -d yourname -> 遠程detach某個session
screen -d -r yourname -> 結束當前session並回到yourname這個session
在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。
C-a ? -> 顯示所有鍵綁定信息
C-a c -> 創建一個新的運行shell的視窗並切換到該視窗
C-a n -> Next,切換到下一個 window
C-a p -> Previous,切換到前一個 window
C-a 0..9 -> 切換到第 0..9 個 window
Ctrl+a [Space] -> 由視窗0循序切換到視窗9
C-a C-a -> 在兩個最近使用的 window 間切換
C-a x -> 鎖住當前的 window,需用用戶密碼解鎖
C-a d -> detach,暫時離開當前session,將目前的 screen session (可能含有多個 windows)
丟到後臺執行,並會回到還沒進 screen 時的狀態,此時在 screen session 里,每個 window 內運行的 process
(無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。
C-a z -> 把當前session放到後臺執行,用 shell 的 fg 命令則可回去。
C-a w -> 顯示所有視窗列表
C-a t -> time,顯示當前時間,和系統的 load
C-a k -> kill window,強行關閉當前的 window
C-a [ -> 進入 copy mode,在 copy mode 下可以回滾、搜索、複製就像用使用 vi 一樣
C-b Backward,PageUp
C-f Forward,PageDown
H(大寫) High,將游標移至左上角
L Low,將游標移至左下角
0 移到行首
$ 行末
w forward one word,以字為單位往前移
b backward one word,以字為單位往後移
Space 第一次按為標記區起點,第二次按為終點
Esc 結束 copy mode
C-a ] -> paste,把剛剛在 copy mode 選定的內容貼上
安裝screen
流行的Linux發行版(例如Red Hat Enterprise Linux)通常會自帶screen實用程式,如果沒有的話,可以從
GNU screen的官方網站下載。
[root@localhost ~]# yum -y install screen
實例:
創建 screen 終端
#screen //創建 screen 終端
創建 screen 終端 並執行任務
#screen vi ~/main.c //創建 screen 終端 ,並執行 vi命令
使用描述性名稱啟動屏幕會話是一個很好的做法,這樣你可以輕鬆地記住會話中正在運行的進程。要使用
會話名稱創建新會話,請運行以下命令:
screen -S name #將 “name” 替換為對你會話有意義的名字。
從 screen 會話中分離
要從當前的 screen 會話中分離,你可以按下Ctrl-A 和 d。所有的 screen 會話仍將是活躍的,你之後可以
隨時重新連接。
重新連接到 screen 會話
如果你從一個會話分離,或者由於某些原因你的連接被中斷了,你可以使用下麵的命令重新連接:
screen -r
如果你有多個 screen 會話,你可以用 ls 參數列出它們。
screen -ls
There are screens on:
7880.session (Detached)
7934.session2 (Detached)
7907.session1 (Detached)
3 Sockets in /var/run/screen/S-root.
在我們的例子中,我們有三個活躍的 screen 會話。因此,如果你想要還原 “session2” 會話,你可以執行:
screen -r 7934
或者使用 screen 名稱。
screen -r -S session2
中止 screen 會話
有幾種方法來中止 screen 會話。你可以按下 Ctrl+d ,或者在命令行中使用 exit 命令。
要查看screen命令所有有用的功能,你可以查看 screen 的 man 手冊。man screen
echo:
字元串輸出
命令格式:
echo string
實例:
普通字元串輸出
[root@localhost ~]# echo IM taokui
IM taokui
[root@localhost ~]# echo "IM taokui"
IM taokui
[root@localhost ~]# echo 'IM taokui'
IM taokui
顯示轉義字元
[root@localhost ~]# echo \"IM taokui\"
"IM taokui"
[root@localhost ~]# echo ""\"IM taokui\"
"IM taokui"
顯示變數
read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數
[root@localhost ~]# vim test.sh
#!/bin/sh
read name
echo "$name IM taokui"
[root@localhost ~]# sh test.sh
wo
wo IM taokui
顯示換行
[root@localhost ~]# echo -e "tk \n" #-e開啟轉義,\n表示換行,以下是換行和不換行的效果
tk
[root@localhost ~]# echo IM tk
IM tk
顯示不換行
[root@localhost ~]# vim test.sh
#!/bin/sh
echo -e “tk \c” #-e開啟轉義 \c不換行
echo "IM taokui"
[root@localhost ~]# sh test.sh
tk IM taokui
顯示結果指定向文件
[root@localhost ~]# echo IM taokui >a.txt
[root@localhost ~]# cat a.txt
IM taokui
原樣輸出字元串,不進行轉義或取變數(用單引號)
[root@localhost ~]# echo '$name\'
$name\
[root@localhost ~]# echo "$name\" #如果用雙引號會是不能原樣輸出的
顯示命令執行結果
[root@localhost ~]# echo
date
#這裡用的是反引號(`)而不是單引號(’),如果用單引號或者雙引號
都只會原樣輸出
Sun Dec 1 19:16:05 CST 2019
export:
命令用於設置或顯示環境變數,可新增,修改或刪除環境變數,供後續執行的程式使用,xeport的效力僅限於該次登錄操作
語法:
export [-fnp][變數名]=[變數設置值]
-f 代表[變數名稱]中為函數名稱
-n 刪除指定的變數,變數時間上並未刪除,只是不會輸出到後續指令的執行環境中
-p 列出所有的shell賦予程式的環境變數
列出當前所有的環境變數
[root@localhost ~]# export -p #列出當前所有環境變數 ,由於篇幅原因這裡我只複製前半部分
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
定義環境變數賦值
[root@localhost ~]# export tk=love
[root@localhost ~]# export -p #會看到剛剛定義的變數
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="4"
declare -x tk="love"
定義環境變數
[root@localhost ~]# export TK #定義變數的時候需要大寫
[root@localhost ~]# export -p
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x TK
date:
用來顯示或者設定系統的時間和日期
若是不以加號作為開頭,則表示要設定時間,而時間格式為 MMDDhhmm[[CC]YY][.ss],其中 MM 為月份,DD 為日,hh 為小時,mm 為分鐘,CC 為年份前兩位數字,YY 為年份後兩位數字,ss 為秒數。
語法:
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
參數說明:
-d datestr : 顯示 datestr 中所設定的時間 (非系統時間)
--help : 顯示輔助訊息
-s datestr : 將系統時間設為 datestr 中所設定的時間
-u : 顯示目前的格林威治時間
--version : 顯示版本編號
date命令的用法 :
date +%Y-%m-%d, date +%y-%m-%d 年月日
date +%H:%M:%S = date +%T 時間
date +%s 時間戳
date -d @1504620492 時間戳換算
date -d “+1day” 一天後
date -d “-1 day” 一天前
date -d “-1 month” 一月前
date -d “-1 min” 一分鐘前
date +%w, date +%W 星期
查看當前時間
[root@tk ~]# date
2019年 12月 04日 星期三 02:18:19 CST
查看系統日期
[root@tk ~]# cal
十二月 2019
日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
查看當前年份(四位顯示)
[root@dl-001 shell]# date +%Y
2019
查看當前年份(簡化顯示)
[root@tkl~]# date +%y
19
查看當前 年 月 日 時 分 秒 星期
[root@tk ~]# date "+%Y-%m-%d %H:%M:%S %w"
2019-12-04 02:24:44 3
查看當前時間是一年的第幾周
[root@tk ~]# date +%W
48
查看時間戳(顯示從1970年1月1日00:00:00到目前經歷的秒數)
[root@tk ~]# date +%s
1575397686
時間戳的換算
[root@tk ~]# date -d @1575397686
2019年 12月 04日 星期三 02:28:06 CST
列印指定日期和時間
[root@tk ~]# date -d "-2 day" +%d
02
[root@tk ~]# date -d "-1 year -3 month -1 day" +%Y-%m-%d
2018-09-03
手動設置當前時間
[root@tk ~]# date -s "2019-12-4 02:37:40"
2019年 12月 04日 星期三 02:37:40 CST
[root@tk ~]# date
2019年 12月 04日 星期三 02:37:44 CST
同步網路時間
[root@tk~]# yum install -y ntp
[root@tk ~]# ntpdate ntp.ubuntu.com
4 Dec 02:38:48 ntpdate[19778]: the NTP socket is in use, exiting
[root@tk ~]# date
2019年 12月 04日 星期三 02:38:53 CST
Ifconfig:
用於顯示或者設置網路
語法:
ifconfig [網路設備][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<網路設備類型><硬體地址>][io_addr<I/O地址>][irq<IRQ地址>][media<網路媒介類型>][mem_start<記憶體地址>][metric<數目>][mtu<位元組>][netmask<子網掩碼>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
參數說明:
add<地址> 設置網路設備IPv6的IP地址。
del<地址> 刪除網路設備IPv6的IP地址。
down 關閉指定的網路設備。
<hw<網路設備類型><硬體地址> 設置網路設備的類型與硬體地址。
io_addr<I/O地址> 設置網路設備的I/O地址。
irq<IRQ地址> 設置網路設備的IRQ。
media<網路媒介類型> 設置網路設備的媒介類型。
mem_start<記憶體地址> 設置網路設備在主記憶體所占用的起始地址。
metric<數目> 指定在計算數據包的轉送次數時,所要加上的數目。
mtu<位元組> 設置網路設備的MTU。
netmask<子網掩碼> 設置網路設備的子網掩碼。
tunnel<地址> 建立IPv4與IPv6之間的隧道通信地址。
up 啟動指定的網路設備。
-broadcast<地址> 將要送往指定地址的數據包當成廣播數據包來處理。
-pointopoint<地址> 與指定地址的網路設備建立直接連線,此模式具有保密功能。
-promisc 關閉或啟動指定網路設備的promiscuous模式。
[IP地址] 指定網路設備的IP地址。
[網路設備] 指定網路設備的名稱。
實例:
啟動關閉指定網卡
#ifconfig eth0 down# ifconfig eth0 up
為網卡配置和刪除IPv6地址
ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //為網卡誒之IPv6地址
#ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //為網卡刪除IPv6地址
用ifconfig修改MAC地址
#ifconfig eth0 down //關閉網卡# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址# ifconfig eth0 up //啟動網卡# ifconfig eth1 hw ether 00:1D:1C:1D:1E //關閉網卡並修改MAC地址 # ifconfig eth1 up //啟動網卡
配置IP地址
#ifconfig eth0 192.168.1.56 //給eth0網卡配置IP地址# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 // 給eth0網卡配置IP地址,並加上子掩碼# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255// 給eth0網卡配置IP地址,加上子掩碼,加上個廣播地址
啟用和關閉ARP協議
ifconfig eth0 arp //開啟# ifconfig eth0 -arp //關閉
設置最大傳輸單元
#ifconfig eth0 mtu 1500 //設置能通過的最大數據包大小為 1500 bytes