1、描述計算機的組成及功能。
運維的崗位圍繞在計算機上,所以了解計算機是我們基本的能力:例如利用計算機提供的接口寫程序,對構建在Linux系統上的應用程序的應用。
馮·諾伊曼提出其體系后,所有計算機都采用相同體系。美國賓西法尼亞大學的第一臺計算機ENIARC,也不例外。
馮·諾依曼體系:計算機由五大部分組成
- CPU:運算器、控制器、寄存器、緩存,
- 核心:運算器和控制器?
- 運算器:完成算術運算、邏輯運算。
- 控制器:各部件的協調。
- 指令集:CPU支持的指令的集合。分為特權指令和非特權指令。
- 特權指令:內核運行。也被稱為“環0指令”
- 非特權指令:用戶空間中程序運行。也被稱為“環3指令”
- 寄存器、緩存:提高CPU性能。
- 寄存器:指令指針寄存器、數值寄存器。
- 指令指針寄存器:指向下一個指令的位置。
- 數值寄存器:內存中加載的數據暫存的位置。
- 緩存:CPU比內存快提供緩存。緩存大:CPU工藝要求高及體積不變,所以價格高。
- 頻率:單位時間內所做的操作。例如:1GHz相當于1s做10億次操作。
- 字長:數據的存取能力。例如:32bits的cpu一次存取32位二進制數據。
- 主儲:RAM(Random Access Memory)隨機訪問存儲,只有不斷地往內存中填充電荷才能存儲數據,斷電后數據消失。
- RAM由多個大小相同的cell組成
- 每個cell是8bits,也叫“最小存儲單元”。
- 編址的存儲單元,只支持平面編址,例如:從左向右,從上向下對每個cell編號;
- 為什么32bits的系統最大只能支持4G內存?也就是你安裝內存條只能安裝4G,多了不識別。
- 32bits的CPU只能安裝32bits的系統,64bits的CPU可安裝32bits或64bits系統。(我們所用的CPU是Intel生產的,也就是80年代出現的PC兼容機)
- 32bits的CPU相當于CPU前有32根線。
- 每根線只有兩種狀態:通電、斷電。通電表示1,斷電表示0;
- 一種狀態可以對應一個cell(相當于8bits),所以1根線就有2種狀態(2^1)。
- 32根線通過排列組合的方式:2^32種變化,即2^32bits=2^2 * 2^10 * 2^10 * 2^10bits=4Gb。(CPU是二進制換算:1KiB=2^10bits,1MiB=2^10KiB,1GiB=2^10MiB,注意MiB相當于mb,KiB相當于kb,GiB相當于gb)
- ?IO設備:輸入設備、輸出設備
- 輸入設備:輸入指令、提供數據;
- 輸出設備:輸出數據加工后的結果;
馮·諾伊曼?還提出程序是由指令加數據組成
- 指令:二進制指令
- 數據:二進制數據
我們都應該知道
- 程序本身在磁盤中,即指令和數據在磁盤中。
- 當前CPU需要運行程序時,就需要將程序先加載至內存中,即指令和數據在內存中。
- 由CPU加載指令并運行指令,此為取指的過程。
- 其運行過程中需要加載數據時,例如1+2=3,1為數據,2為數據,3為加工后的結果;先將1從內存的某個cell中加載至數值寄存器中(數據沒有加載完需要緩存),再加載后一個數據至寄存器中。指令加工數據得到3,將其存回內存中。
- 運行結果后,從指令指針寄存器中得到下一條指令所在內存中的哪個cell的位置,加載至內存中運行。
以上的計算機只能跑單個程序,因為CPU是一個,內存是一個,程序會獨占。如果多個程序運行就存在,你使用CPU還是我使用?內存中的數據覆蓋。等問題;
- 1964年由MIT, GE, Bell成立一個項目叫Multic;(為了解決一個問題:讓計算機可以運行多個程序)
- Multics是一個監控程序,功能:獨占內存中一段空間,將剩余空間切割成幾個獨立的空間即“空間復用”,并將CPU的計算能力切割成相等的時間片,即“時序復用”。
- 1969年Bell實驗室Ken在PDP-7主機上研發出Unix;
- 1974年Ken和同事Dennis(C研發者)在《美國計算機通信》雜志上聯合發表Unix;
- 1975年Bill Joy成立BSRG小組,在Unix主機上研發TCP/IP協議棧,DARPA給他們的項目。并整合一些程序,命名為BSD(Berkeley System Distribution),BSD主機上實現了TCP/IP。
- 1985年Ritchard Stallman成立GNU組織,宣言是GPL。
- 1991年Linus Torvalds成立Linux項目。
計算機操作系統是GNU/Linux源碼,功能:驅動底層硬件、文件系統、網絡、安全加密、內存管理、進程管理。
2、按系列羅列Linux的發行版,并描述不同發行版本之間的聯系與區別。
- GNU/Linux源碼:需要編譯成二進制程序方可運行。對于普通用戶來講是困難的。
- 發行版:一些世俗的入流的看到將GNU/Linux源碼編譯成可執行二進制程序的商機的組織將GNU/Linux源碼編譯成可在機器上直接運行的二進制程序,有組織比較戀舊、有的比較追求新穎、有的喜歡不同的標識,再加上一些對系統的獨有的理解。將Linux程序和GNU程序和這些自己的理解拼湊在一起組成了發行版;
- 發行版都是Linux內核,與不同版本的程序拼湊在一起,組成了不同的發行版本;所以發行版本與程序版本無關。
三大主流的發行版
- RedHat:美國卡羅蘭那洲,9.0后將桌面版本捐給Fedora社區并維護為Fedora Core。成立RedHat Enterprise Linux。
- CentOS: 紅帽的二次發行版本,是根據紅帽開放源代碼規定釋出的版本;
- Debian:是一個愛妻狂魔命名(他名字和他妻子名字縮寫組合)。至今沒有任何一個商業組織維護,黑客級玩家使用,限制更少。
- Ubuntu:以桌面應用為主
- Kbuntu:基于Ubuntu的二次發行版;
- Mint:基于Ubuntu的二次發行版;
- Knopix:短小精悍,安全著稱;
- Ubuntu:以桌面應用為主
- Slackware:
- SUSE: 以桌面著稱,西方多使用;
- OpenSUSE
- SLES:SUSE Linux Enterprise System
- SUSE: 以桌面著稱,西方多使用;
不同發行版使用不同包管理器
- 程序的四大組成部分:
- 配置文件:文本格式,xml…
- 二進制程序:可執行;
- 庫:二次開發;
- 幫助手冊:裝水不用說明書,買個智能洗衣機呢?使用說明;
- 包管理器:將程序的組成部分打包成一個或幾個程序包。
- 包管理器的分類:
- RedHat: rpm包,rpm,yum
- Debian: deb包,dpkg,? apt-get
- SUSE: rpm包,rpm, zypper
- 包管理器的分類:
3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性的描述。
- 一切皆文件:即使是設備也模擬成文件,用文件系統接口即可完成操作硬件;
- 由眾多單一目的的小程序組成;組合小程序完成復雜任務;
- 避免與用戶交互;實現Shell腳本編程;
- 文本信息保存配置;
4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、data命令的使用,并配合相應的示例來闡述。
ifconfig – 查看當前主機的IP地址;
~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:CC:57:46 inet addr:172.16.0.16 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fecc:5746/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:110016 errors:0 dropped:0 overruns:0 frame:0 TX packets:25081 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:50999240 (48.6 MiB) TX bytes:16095842 (15.3 MiB)注意:inet addr行是IP信息;
inet addr:172.16.0.16 Bcast:172.16.255.255 Mask:255.255.0.0172.16.0.16: 是IP地址;
255.255.0.0:是IP地址的掩碼;
終端:終端設備和附著在終端設備之上的程序組成
- echo “$SHELL” 顯示附著在終端設備的程序;
- tty – 顯示終端設備
Xshell連接/圖形下的終端:
~]# tty /dev/pts/0
虛擬終端:
~]# tty /dev/tty/0
startx 用于在虛擬終端之上啟動圖形終端
CentOS 6無論在哪個虛擬終端啟動,圖形終端都是/dev/tty/7
CentOS 7在哪個虛擬終端啟動,此終端即為圖形終端/dev/tty/[1-7]
終端切換:Alt+Clt + F#[1-7]
export – 導出變量
控制歷史的顯示方式相關的環境變量:HISTCONTROL
- ignoredups: 表示忽略重復,連續且相同方為重復;
- ignorespace:? ?表示忽略空格開頭的命令;
- ignoreboth:? ? ?以上兩者都;
查看變量:
[root@localhost ~]# echo $HISTCONTROL ignoredups
修改變量:
[root@localhost ~]# export HISTCONTROL=ignorespace [root@localhost ~]# echo $HISTCONTROL ignorespace
用戶接口:? [root@localhost ~]#
root: 當前有效用戶
localhost: 簡寫主機名
~: 工作目錄(working directory)或當前目錄(current directory), 使用pwd命令即可顯示
#:命令提示符
- #: 管理員:? 擁有所有權限,可執行管理操作;
- $: 普通用戶: 不具有管理權限,不能執行管理操作;
[root@localhost ~]# pwd /root
history 顯示或操作歷史列表
工作方式
- 用戶登陸終端,將HISTFILE定義的文件(歷史文件,~/.bash_history)中的歷史條目加載至內存歷史列表.
- 用戶執行命令,將新執行的命令記錄于內存中的歷史列表中:
- 列表列表的組成: 登陸終端HISTFILE文件的條目、新執行的命令;
- 用戶登出終端,將歷史列表中的的新執行的命令追加至HISTFILE中;
顯示或操作歷史列表:? history? ?[-c]? ?[-d offset]? ?[n]
- history -d offset :刪除指定條目;
- history -c:清空歷史列表;
- history :顯示歷史列表;
- history n:顯示最近執行的n條命令;
操作歷史文件中的歷史列表:?history? ?-rw? ?[filename]
- history -r: 將歷史中新生成的條目追加至HISTFILE;
- history -w:將HISTFILE中的所有歷史列表追加至內存;
驗證工作方式:
[root@localhost ~]# echo > $HISTFILE [root@localhost ~]# history -c [root@localhost ~]# logout <--內存中的第一條命令歷史記錄 [root@localhost ~]# history 1 logout <-- 只記錄了上次退出執行的命令 2 history < --- 此刻執行的命令,新執行的命令退出終端,將新執行的命令追加至$HISTFILE:
[root@localhost ~]# logout <-- 新執行的命令 [root@localhost ~]# cat $HISTFILE logout? ? <-- 只記錄了上次退出執行的命令 history?? < --- 此刻執行的命令,新執行的命令 logout? <-- 新執行的命令?刪除指定條目的歷史:
[root@localhost ~]# w [root@localhost ~]# whoami [root@localhost ~]# whereis ls [root@localhost ~]# history 1 logout 2 history 3 logout 4 cat $HISTFILE 5 w 6 whoami 7 whereis ls 8 history刪除此條歷史4 cat $HISTFILE,即為:
[root@localhost ~]# history -d 4 [root@localhost ~]# history 1 logout 2 history 3 logout 4 w? ? ? ? ?<-- 注意沒有了 5 whoami 6 whereis ls 7 history 8 history -d 4 9 history清空歷史列表:
[root@localhost ~]# history -c [root@localhost ~]# history 1 history <-- 為當前執行的命令顯示最近執行n條命令:
[root@localhost ~]# w [root@localhost ~]# which --skip-alias ls [root@localhost ~]# whereis -b ls [root@localhost ~]# history 3 3 which --skip-alias ls 4 whereis -b ls 5 history 3 <-- 最近N條命令包括當前執行的命令;
將歷史中新生成的條目追加至HISTFILE;
[root@localhost ~]# logout [root@localhost ~]# who -r [root@localhost ~]# who -l [root@localhost ~]# who -u [root@localhost ~]# who -d [root@localhost ~]# history 1 logout 2 history 3 logout 4 history 5 w 6 which --skip-alias ls 7 whereis -b ls 8 history 3 9 logout 10 who -r 11 who -l 12 who -u 13 who -d 14 history [root@localhost ~]# cat $HISTFILE logout history logout history w which --skip-alias ls whereis -b ls history 3 logout [root@localhost ~]# history -w [root@localhost ~]# cat $HISTFILE logout history logout history w which --skip-alias ls whereis -b ls history 3 logout who -r who -l who -u who -d history cat $HISTFILE history -w 僅是歷史列表新生成的被追加至文件中了;將歷史文件中的所有條目讀到內存中:
[root@localhost ~]# history 1 logout 2 history 3 logout 4 history 5 w 6 which --skip-alias ls 7 whereis -b ls 8 history 3 9 logout 10 who -r 11 who -l 12 who -u 13 who -d 14 history 15 cat $HISTFILE 16 history -w 17 cat $HISTFILE 18 history [root@localhost ~]# history -r [root@localhost ~]# cat $HISTFILE logout history logout history w which --skip-alias ls whereis -b ls history 3 logout who -r who -l who -u who -d history cat $HISTFILE history -w [root@localhost ~]# history 1 logout 2 history 3 logout 4 history 5 w 6 which --skip-alias ls 7 whereis -b ls 8 history 3 9 logout 10 who -r 11 who -l 12 who -u 13 who -d 14 history 15 cat $HISTFILE 16 history -w 17 cat $HISTFILE 18 history 19 history -r 20 logout 21 history 22 logout 23 history 24 w 25 which --skip-alias ls 26 whereis -b ls 27 history 3 28 logout 29 who -r 30 who -l 31 who -u 32 who -d 33 history 34 cat $HISTFILE 35 history -w 36 cat $HISTFILE 37 history
echo 回顯命令
? echo [SHORT-OPTION]… [STRING]…
-n:不自動進行換行操作;
-e: 讓轉義符生效;
轉義符:
\n 換行符;
\r 回車符;
\t 橫向制表;
\v 縱向制表;默認情況:
[root@localhost ~]# echo “how are you?”
how are you?選項-n:
[root@localhost ~]# echo -n “how are you?”
how are you?[root@localhost ~]#選項-e:
[root@localhost ~]# echo -e “how are you?”
how are you?選項-e,加轉義符:
[root@localhost ~]# echo -e “how are \nyou?”
how are
you?
[root@localhost ~]# echo -e “how are \byou?”
how areyou?
[root@localhost ~]# echo -e “how are \tyou?”
how are you?
[root@localhost ~]# echo -e “how are \vyou?”
how are
you?
- shutdown, reboot, halt,關機或重啟
shutdown [OPTION]... TIME [WALL] OPTION: -h 關機;1分鐘后關機; -r 重啟 -c cancle -k 狼來了 TIME: hh:mm 具體時間 +m 幾分鐘后 now在10分鐘后關機:
[root@localhost ~]# shutdown -h +10 Broadcast message from root@localhost.localdomain (/dev/pts/0) at 4:01 ... The system is going down for halt in 10 minutes!另起一個終端取消關機:
[root@localhost ~]# shutdown -c立即重啟
[root@localhost ~]# reboot Broadcast message from root@localhost.localdomain (/dev/pts/2) at 4:03 ... The system is going down for reboot NOW!立即關機
[root@localhost ~]# shutdown -h
- 系統啟動從硬件讀取時間,讀取后與硬件無關,通過CPU頻率計時;
- 系統時間:通過CPU頻率計時;
- 硬件時間:主板鈕扣電池為硬件供電,讓時鐘正確;
date命令:系統時間
- 顯示時間:date [OPTION]… [+FORMAT]
- FORMAT:(%Y年 %m月 %d日 %H小時 %M分鐘 %S秒 %s unix元年至執行命令那一刻經過的時間 )
- 設定時間:date [MMDDhhmm[[CC]YY][.ss]]
顯示時間:
[root@localhost ~]# date Wed Nov 29 04:09:36 CST 2017 [root@localhost ~]# date +%Y 2017 [root@localhost ~]# date +%m 11 [root@localhost ~]# date +%d 29 [root@localhost ~]# date +%H 04 [root@localhost ~]# date +%M 09 [root@localhost ~]# date +%S 54 [root@localhost ~]# date +%s 1511899796 [root@localhost ~]# date +%A Wednesday [root@localhost ~]# date +%a Wed [root@localhost ~]# date +%F 2017-11-29 [root@localhost ~]# date +%D 11/29/17 [root@localhost ~]# date +%T 04:10:35設定時間:
設定2012年12月1日11點11分30秒
[root@localhost ~]# date 120111112012.30
Sat Dec 1 11:11:30 CST 2012clock、hwclock命令:硬件時間
- 顯示硬件時鐘:# hwclock 或 # clock
- 系統與硬件時鐘同步:
- 修改系統時間:hwclock -s
- 修改硬件時間:hwclock -w
clock是hwlock的軟鏈接
[root@localhost ~]# which clock /sbin/clock [root@localhost ~]# file /sbin/clock /sbin/clock: symbolic link to `hwclock'顯示硬件時鐘:
[root@localhost ~]# hwclock Wed 29 Nov 2017 04:13:01 AM CST -0.877406 seconds [root@localhost ~]# clock Wed 29 Nov 2017 04:13:03 AM CST -0.737419 seconds修改系統時鐘:
[root@localhost ~]# date Sat Dec 1 11:14:04 CST 2012 [root@localhost ~]# hwclock -s [root@localhost ~]# date Wed Nov 29 04:13:51 CST 2017
5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
內建命令:用戶接口內置的命令,在文件系統路徑下沒有與命令同名的文件;
外部命令:在文件系統上有與命令同名的程序文件
1、獲取命令的類型‘
- 內建命令:顯示builtin
- 外部命令:顯示命令的絕對路徑或命令的別名;如果別名同原名,原名會被隱藏,此時要執行原命令: \COMMNAD
[root@localhost ~]# type cd cd is a shell builtin[root@localhost ~]# type grep grep is /bin/grep[root@localhost ~]# type ls ls is aliased to `ls --color=auto'[root@localhost ~]# ls[root@localhost ~]# \ls2、內建命令
[root@localhost ~]# help cd3、外部命令
[root@localhost ~]# ls --help [root@localhost ~]# man ls4、官方文檔
5、命令自帶文檔(/usr/share/doc/app-VERSION/{README,ChangeLog,INSTALL})
- REDME:程序相關信息
- ChangeLog: 版本迭代時的改動信息
- INSTALL: 安裝幫助
- COPYING: 版本信息
6、Google
man章節
- 系統調用(man2)
- 庫調用(man3)
- 用戶命令(man1)
- 管理命令(man8)
- 設備文件(man4)
- 配置文件(man5)
- 雜項(man6)
- 游戲(man7)
獲取命令在哪些章節下有幫助:
whatis COMMAND獲取命令在指定章節下的幫助
man CHAPTER COMMAND [root@localhost ~]# whatis passwd passwd (1) - update user's authentication tokens passwd (5) - password file passwd [sslpasswd] (1ssl) - compute password hashes [root@localhost ~]# man 5 passwd
6、請羅列Linux發行版本的基礎目錄名稱命名法則及功用規定。
Filesystem Hierarchy Standard?http://www.pathname.com/fhs/pub/fhs-2.3.html
/bin
所有用戶可用的二進制程序;
/sbin
系統管理員可用的二進制程序;
/boot
引導加載器的靜態文件;kernel: vmlinuz, initramfs(initrd), grub等;
/dev
當前系統所識別到的所有硬件設備的設備文件或特殊文件;黑底色黃前景色;
特殊文件:由軟件模擬文件為設備文件;
- 設備類型:
- 字符:線性存儲,以字符為單位進行交換數據;
- 塊:? ?隨機存儲,以塊為單位進行交換數據;
/etc
純文本的配置文件,控制程序運行特性,運行哪段代碼。多個選項時保存于配置文件中;
/home
用戶的家目錄,站點特有的目錄,任何程序不應該依賴于此目錄;
/root
root用戶的家目錄,可選;管理員不應該登陸系統;
/lib
基本共享庫和內核模塊;系統啟動時/bin, /sbin下的程序所依賴的庫;
- libc.so.* 動態鏈接的C庫
- ld* 運行時加載器
- modules:? ?可裝載的內核模塊
/lib64
64位系統特有的存放64位共享庫的路徑;
/media
便攜式設備掛載點;
/mnt
文件系統的臨時掛載點;
/opt
第三方應用程序的安裝位置;logstash, oracle。。
- 類似于Windows中的 Program Files目錄;
/src
當前主機為服務提供的數據;
/tmp
為那些會產生臨時文件的程序提供的用于存儲臨時文件的目錄,可供所有用戶使用,有特殊權限;
/usr
universal share read-only data;只讀,任何兼容FHS的發行版彼此間可共用usr目錄;
- bin, sbin系統運行過程中附加功能;
- lib 為/usr/{bin,sbin}提供
- include C程序的頭文件
- share 架構特有的文件存放路徑;
- man 命令手冊頁
- doc 命令自帶文檔
- X11R6:x window程序安裝位置
- src 程序源碼文件的存放位置
/usr/local
第三方應用程序的安裝位置,新版本在?usr/local下老版本在/usr下,不能覆蓋程序;老版本可能會被其他程序依賴;
- bin, sbin, lib, lib64, etc, share, include, man, share, src, games
/var
var Hierarchy,經常發生變化數據的目錄
- cache 緩存數據
- lib? ? ? 變化狀態數據
- local? 為/usr/local下提供經常發生變化的數據
- opt? ? 為/opt下提供經常發生變化的數據
- lock? ?鎖文件
- log? ? ?日志文件
- run? ? 運行中的進程相關的信息:pid
- spool? 暫存
- tmp? ? 重啟后留存的數據
虛擬文件系統:基于內存的文件系統,開機存在,關機不存在;
- /proc,? proc, 內核及進程信息,內核參數映射;net.ipv4.ip_forward抽象為目錄,其存儲于/proc/sys目錄下,因此完整路徑為/proc/sys/net/ipv4/ip_forward;
- /sys? ? sysfs, 內核中硬件設備抽象為統一接口映射;
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89247
贊~命令的使用總結的很詳細,繼續加油