week1作業: 1.描述計算機的組成及其功能。 計算機的組成: CPU:控制器、運算器、寄存器、CPU緩存(RAM,一級、二級、三級緩存) 控制器(Control):是整個計算機的中樞神經,其功能是對程序規 定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算各部分工作及內存與外設的訪問等。 運算器(Datapath):其功能是對數據進行各種算術運算和邏輯運算,即對數據進行加工處理。 寄存器:用來暫存指令、數據和地址; 分類: 指令寄存器(IR) 程序寄存器(PC) CPU緩存:RAM,數據交換的緩沖區; 由于CPU的運算速率遠遠高于內存的讀寫速率,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存, CPU緩存就是為了緩減這種矛盾而出現;CPU緩存中的數據是內存中的一小部分,但是這一部分是CPU能夠短時高速訪問的; 當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快CPU讀取速率,因此,CPU緩存能夠大幅提高CPU的性能; 存儲器:內存,RAM(Random Access Memory,隨機訪問存儲器) 其功能是存儲程序、數據和各種信號、命令等信息; Input設備:輸入設備,下指令,提供數據等; 其功能是將程序、原始數據、文字、字符、控制命令等各種數據信息輸入到計算機;常見的輸入設備有鍵盤、鼠標等; Output設備:輸出數據加工的結果; 其功能是把計算機處理的各種結果(如,中間數據、最后數據、控制信號等)輸出出來;常見的輸出設備有顯示器、打印機等; 備注: 程序=指令+數據,存儲于內存中; CPU包含控制器和運算器; 外設(外部設備)=輸入設備+輸出設備 2.按系列羅列linux的發行版,并描述不同發行版之間的聯系與區別。 linux的發行版大體分為2類:商業版(Enterprise)和社區版(Community);商業版如Redhat、Solaris等,社區版如FreeBSD、Debian、CentOS等; Linux大體可以分為4大家族: (1)Redhat系列包括RHEL、Fedora、CentOS,使用Yum方式管理軟件包,使用人群較大,較為流行;RHEL有一套完善的認證體系; CentOS是其社區克隆版本,二者穩定性非常好,適合服務器使用;Fedora的穩定性較差; (2)Debian系列包括Debian和Ubuntu等,使用apt-get/dpkg 包管理方式; 據我所接觸到的很多游戲公司以及一些國外的軟件開發公司偏好使用。 ubuntu是基于debian發行版,是一個以桌面應用為主的linux操作系統,在桌面化linux操作系統上較為流行,目前ubuntu有一套完整的ubuntu生態體系(手機、平板、PC端、服務器端、云端); Linux Minit也是基于Debian的一個發行版; (3)SUSE系列包括SLES,openSUSE等,是Noverll公司產品;SLES是企業版,openSUSE是社區版; SUSE采用Yast包管理方式,是基于RPM為基礎的; (4)其它發行版本如Gentoo、Arch等,Gentoo、Arch定制性很強,上手比較困難; 3.描述linux的哲學思想,并按照自己的理解對其進行解釋性描述。 linux的哲學思想: (1)一切皆文件; linux系統上所有的東西都是以文件形式出現的;如磁盤設備、驅動、進程、管道等都被抽象成了文件; (2)能簡寫,絕不全寫; linux上很多命令基本上選項參數都帶有簡寫模式,設置一些"命令+參數"都被定義別名,使用一個命令來表示; (3)盡量避免捕獲用戶接口; (4)作用范圍越小的越是最終生效的; 在linux上很多服務配置文件中都分為全局配置和局部配置,如果有重復的參數配置時,通常都是以局部配置的參數配置為準,作用域小的最終生效; (5)組合小命令完成復雜任務; linux上的命令通過一些參數的配合具有很強大的能力,通過合適的命令組合通常都能夠完成非常復雜的任務; 如查看當前系統上tcp的連接情況: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 使用netstat和awk命令的組合就能快速地統計到結果; 4.說明linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。 (1)ifconfig命令 #ifconfig -a:列出所有接口的詳細信息; [root@director1 ~]# ifconfig -a eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.3 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::20c:29ff:fe59:396f prefixlen 64 scopeid 0x20<link> ether 00:0c:29:59:39:6f txqueuelen 1000 (Ethernet) RX packets 444 bytes 41402 (40.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 372 bytes 53149 (51.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.0.1 netmask 255.255.255.0 broadcast 172.16.0.255 inet6 fe80::20c:29ff:fe59:3979 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:59:39:79 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 12 bytes 888 (888.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #ifconfig <interface>:查看指定接口的網絡信息; [root@director1 ~]# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.3 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::20c:29ff:fe59:396f prefixlen 64 scopeid 0x20<link> ether 00:0c:29:59:39:6f txqueuelen 1000 (Ethernet) RX packets 482 bytes 44862 (43.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 404 bytes 59267 (57.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #ifconfig <interface> <address>[/<prefixlen>]|[netmask] [broadcast]:添加子網卡并配置臨時地址; [root@director1 ~]# ifconfig eth1:0 172.16.0.100/24 [root@director1 ~]# ifconfig eth1:0 eth1:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.0.100 netmask 255.255.255.0 broadcast 172.16.0.255 ether 00:0c:29:59:39:79 txqueuelen 1000 (Ethernet) #ifconfig <interface> up|down:臨時啟用或關閉網卡; [root@director1 ~]# ifconfig eth1 down [root@director1 ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.3 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::20c:29ff:fe59:396f prefixlen 64 scopeid 0x20<link> ether 00:0c:29:59:39:6f txqueuelen 1000 (Ethernet) RX packets 1150 bytes 106278 (103.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 913 bytes 129375 (126.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #ifconfig <address> mtu <NUM>:設置網卡的最大傳輸單元,默認是1500; [root@director1 ~]# ifconfig eth0 mtu 1460 [root@director1 ~]# ifconfig eth0|grep mtu eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460 (2)echo命令 用法:echo [參數] [字符串] 參數: -n:輸出不換行; -E:不啟用反斜杠轉義功能,默認; -e:啟用反斜杠轉義功能; \\:插入'\'字符; \a:發出警告聲; \b:刪除前一個字符; \c:最后不加入換行符號; \v|\f:換行但光標仍舊停留在原來位置; \n:換行且光標移至行首; \r:光標移至行首,但不換行; \t:插入tab符; 示例: [root@director1 ~]# echo 'hello \n world' hello \n world [root@director1 ~]# echo -e 'hello \nworld' hello world 特殊用法: 輸出顏色文本 [root@director1 ~]# echo -e "\033[44;31;1m HELLO \033[0m world" \033[44;31;1m HELLO:設置背景為藍色,前景為紅色,加粗的HELLO; \033[0m:重新設置屏幕到默認設置; (3)tty命令 打印連接到標準輸出的終端文件名稱 用法: tty [參數] 參數: -s,--slient,--quiet:不顯示輸出,指返回退出狀態碼; --help:顯示幫助信息; --version:顯示tty版本; 示例: [root@director1 ~]# tty /dev/pts/0 [root@director1 ~]# tty -s [root@director1 ~]# echo $? 0 [root@director1 ~]# tty --version tty (GNU coreutils) 8.22 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by David MacKenzie. (4)startx命令 啟動X Windows服務; 用法: startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ] (5) export命令 用法:export [-fn] [名稱[=值] ...] 或 export -p -f:指定shell函數 -n:刪除每個NAME名稱的導出屬性 -p:顯示所有導出的變量和函數的列表 (6) pwd命令 顯示出當前/活動目錄的名稱 示例: [root@kvm apache2]# pwd /usr/local/apache2 (7) history命令 顯示當前終端輸入過的歷史命令信息; 用法:history [參數] 參數: -c:清空歷史命令; -d offset:刪除offset位置的歷史條目; NUM:讀取最新的NUM個歷史命令; -r:讀取歷史文件的內容,使用它們作為當前歷史; -w:將當前歷史列表寫入到歷史文件,覆蓋原有內容; 示例: [root@kvm apache2]# history 4 1017 man history 1018 history -3 1019 history 1020 history 4 [root@kvm apache2]# history -c [root@kvm apache2]# history 22 history (8) shutdown命令: 用于關閉系統,可以指定立即或一段時間之后關閉系統; 用法:shutdown [-t sec] [-arkhncfF] time [warning-message] 參數: -a:使用 /etc/shutdown.allow 來驗證身份; -t sec:通知 init在轉換到其它運行級別前,發送警告 (warning) 信號后延時 (sec) 秒數后再發送關閉 (kill) 信號; -k:并非關機,只是向所有人顯示警告信息; -r:重啟; -h:停機; -f:重啟時跳過磁盤檢測; -F:重啟時強制磁盤檢測; -c:取消運行中的shutdown進程; time:指定關機時間 warning-message:指定發送所有用戶的告警信息; 示例: [root@kvm apache2]# shutdown -h +5 "shutdown after 5 minutes " Shutdown scheduled for 二 2016-08-09 14:12:39 CST, use 'shutdown -c' to cancel. [root@kvm apache2]# Broadcast message from root@kvm (Tue 2016-08-09 14:07:39 CST): shutdown after 5 minutes The system is going down for power-off at Tue 2016-08-09 14:12:39 CST! shutdown -c Broadcast message from root@kvm (Tue 2016-08-09 14:07:43 CST): The system shutdown has been cancelled at Tue 2016-08-09 14:08:43 CST! (9) poweroff命令 用來關閉系統并切斷電源; 用法:poweroff [參數] 可不加參數; 參數: -n:關閉操作系統時不執行sync操作; -w:不真正關閉操作系統,僅在日志文件“/var/log/wtmp”中; -d:關閉操作系統時,不將操作寫入日志文件“/var/log/wtmp”中添加相應的記錄; -f:強制關閉操作系統; -i:關閉操作系統之前關閉所有的網絡接口; -h:關閉操作系統之前將系統中所有的硬件設置為備用模式。 (10) reboot命令 用來重啟系統; 用法:reboot [參數] 可不加參數; 參數: -d:重新啟動時不把數據寫入記錄文件/var/tmp/wtmp; -f:強制重新開機,不調用shutdown指令的功能; -n:保存數據后再重新啟動系統; -w:僅做測試,并不真的將系統重新開機,只會把重開機的數據寫入/var/log目錄下的wtmp記錄文件; -h:在系統關機或poweroff之前,將所有的硬盤處于待機模式; -i:關閉網絡設置之后再重新啟動系統; (11) hwclock命令 可以顯示當前時間、設置硬件時鐘的時間和設置硬件時鐘為系統時間,也可設置系統時間為硬件時鐘的時間; 用法: hwclock [參數] 功能: -r:讀取硬件時鐘并打印結果; -s,--hctosys:從硬件時鐘設置系統時間; -w,--systohc:從當前系統時間設置硬件時鐘; -c:定期將系統時鐘與CMOS時鐘相比較; -v:顯示版本信息 (12) date命令 顯示或設置日期時間; 用法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] 常用參數: -u:顯示目前的格林威治時間 %H:小時(00..23) %M:分鐘(00..59) %S:秒(00..60) %T:相當于%H:%M:%S %Y:年份,如2016 %m:月份(01..12) %d:天,如01,11; %F:相當于%Y-%m-%d %D:直接顯示日期(mm/dd/yy) %a|%A:顯示星期 示例: [root@kvm apache2]# date +"%F %T" 2016-08-09 14:32:57 5.如何在linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。 獲取命令幫助信息的方法: (1)COMMAND -h (2)COMMAND --help (3)help COMMAND (4)man COMMAND (5)info COMMAND man文檔章節分類: 1:普通的命令; 2:系統調用; 3:庫函數; 4:特殊文件,如/dev目錄下各種文件; 5:文件格式; 6:游戲相關; 7:其它內容相關; 8:系統管理命令相關; 9:內核例程相關; 6.請羅列linux發行版的基礎目錄名稱法則及其功用規定。 [root@director1 ~]# tree -L 1 / / ├── bin -> usr/bin ├── boot ├── dev ├── etc ├── home ├── lib -> usr/lib ├── lib64 -> usr/lib64 ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── srv ├── sys ├── tmp ├── usr └── var /:根目錄,文件系統入口; /bin:存放一般用戶都可使用的二進制可執行命令; /boot:存放Linux內核及系統引導程序所需的文件; /dev:存放特殊設備文件; /etc:系統管理和配置文件; /home:普通用戶的家目錄; /lib:標準程序設計庫或動態鏈接共享庫,根文件系統上的程序所需的共享庫; /media:空目錄,可用于用戶臨時掛在其它文件系統; /mnt:空目錄; /opt:給主機安裝額外軟件預留的目錄; /proc:虛擬目錄,是系統內存的映射; /root:root用戶的家目錄; /sbin:超級管理命令,通常存放的是系統管理員使用的命令; /srv:服務啟動之后需要訪問的數據目錄; /sys:偽文件系統,是系統內核的映射; /tmp:臨時目錄; /usr:應用程序存放的目錄; /var:某些大文件的溢出區,如日志文件;
原創文章,作者:devon,如若轉載,請注明出處:http://www.www58058.com/32019
寫的很好,排版還可以在漂亮一點,加油,有些字都看不到了