Linux基礎知識
======================
##1、計算機的組成及其功能
計算機五大組成部件:運算器、控制器、存儲器、輸入設備和輸出設備。
下面分別介紹這五大組件的主要功能:
1)、運算器:實現算術運算和邏輯運算的部件。
2)、控制器:計算機的指揮系統??刂破魍ㄟ^地址訪問存儲器,從存儲器中取出指令,經譯碼器分析后,根據指令分析結果產生相應的操作控制信號作用于其他部件,使得各部件在控制器控制下有條不紊地協調工作。
3)、存儲器:是計算機中用來存放所有數據和程序的記憶部件,它的基本功能是按指定的地址存(寫)入或者?。ㄗx)出信息。
4)、輸入設備:是向計算機中輸入信息(程序、數據、聲音、文字、圖形、圖像等)的設備。常見的輸入設備有:鍵盤、鼠標、圖形掃描儀、觸摸屏、條形碼輸入器、光筆等。 外存儲器也是一種輸入設備。
5)、輸出設備:主要有顯示器、打印機和繪圖儀等。外存儲器也當作一種輸出設備。
##2、Linux發行版
Linux發行版就是由Linux內核與各種常用軟件的集合產品,如今全球大約有數百款的Linux發行版本(如下圖部分Linux發行版)。
**1)、發行版之間聯系**
既然同屬這個Linux大家族,那么其必然遵循“萬變不離其宗”的關系,即它們的身上都流淌著相同的”血脈” —- “Linux內核”。
– Linux內核指的是一個由Linus Torvalds負責維護,提供硬件抽象層、硬盤及文件系統控制及多任務功能的系統核心程序;
– 不同發行版的定位無非兩種,致力于個人桌面或企業服務。
**2)、發行版之間區別**
不同linux發行版之間主要區別如下兩點:
– Linux這個生態環境中,內核有不同的版本,相應內核驅動也要配合不同版本內核安裝;
– 不同發行版有自己專用的包管理器。
##3、Linux哲學思想
Linux哲學思想:
**1)、一切皆文件**
普通的文件,目錄、字符設備、塊設備、 套接字等在 Unix/Linux 中都是以文件被對待;它們雖然類型不同,但是對其提供的卻是同一套操作界面。
**2)、小型,單一用途的程序**
程序和可執行文件不要太復雜,這樣才能保證了linux內核的高效運行。
**3)、連接程序,共同完成復雜功能**
復雜的任務可以通過連接多個簡單的程序實現復雜的功能。
**4)、避免令人困惑的用戶界面**
linux是開源的,無論什么問題都可以通過簡潔的命令行實現 排錯,修改系統的配置,一切都是簡潔明了為基礎。
**5)、配置數據存儲在文本中**
linux所有的配置文件都存放在文本配置文件當中,無論什么配置修改都只需修改其配置文件即可。
##4、Linux常用命令介紹
Linux命令是在SHELL的命令提示符“#”或“$”后輸入,命令格式如下:
**命令** **[選項]** **[參數]**
下面介紹幾個常用命令:
**1)、ifconfig**
ifconfig命令用于顯示或設置網絡設備。
ifconfig可設置網絡設備的狀態,或是顯示目前的設置。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>語法</font></td></tr></table>
“`
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address …
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>參數說明</font></td></tr></table>
“`
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地址。
[網絡設備] 指定網絡設備的名稱。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
“`
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>? mtu 1500
inet 192.168.0.106? netmask 255.255.255.0? broadcast 192.168.0.255
inet6 fe80::e9a2:388b:e4ed:b9d5? prefixlen 64? scopeid 0x20<link>
inet6 fe80::88b:45f3:ca4e:9586? prefixlen 64? scopeid 0x20<link>
inet6 fe80::609c:f17d:a461:bca? prefixlen 64? scopeid 0x20<link>
ether 00:0c:29:f8:80:43? txqueuelen 1000? (Ethernet)
RX packets 232? bytes 47329 (46.2 KiB)
RX errors 0? dropped 0? overruns 0? frame 0
TX packets 85? bytes 32435 (31.6 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 1? (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
“`
**2)、echo**
echo命令用于字符串的輸出。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>語法</font></td></tr></table>
“`
echo [SHORT-OPTION]… [STRING]…
echo LONG-OPTION
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>參數說明</font></td></tr></table>
“`
-n 不要在最后自動換行
-e 若字符串中出現以下字符,則特別加以處理,而不會將它當成一般
若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出:
\a 發出警告聲;
\b 刪除前一個字符;
\c 最后不加上換行符號;
\f 換行但光標仍舊停留在原來的位置;
\n 換行且光標移至行首;
\r 光標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\\ 插入\字符;
\nnn 插入nnn(八進制)所代表的ASCII字符;
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
“`
[root@localhost ~]# echo -n test
test[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# echo -e “a\bdddd”?? #”\b”參數忽略前面的字母
dddd
“`
**2)、tty**
tty命令用于打印標準輸入的文件名稱。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>語法</font></td></tr></table>
“`
tty [OPTION]…
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>參數說明</font></td></tr></table>
“`
-s或–silent或–quiet 不顯示任何信息,只回傳狀態代碼。
–help 在線幫助。
–version 顯示版本信息。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
顯示當前終端
“`
# tty
/dev/pts/4
“`
**3)、startx**
startx命令初始化一個X會話。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>語法</font></td></tr></table>
“`
startx [OPTION]…
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>參數說明</font></td></tr></table>
“`
-d Display :0 指定在啟動過程中傳遞給 X 客戶機的 X 服務器的顯示名稱。
-m Window_Manager 當未找到 startup 腳本時,啟動窗口管理器。
-r Resources 當未找到 startup 腳本時,裝入資源文件。
-t 為一個 X 終端啟動 X 客戶機。
-w 為工作站上的 X 窗口會話啟動 X 服務器和 X 客戶機。
-wait 當 xdm 命令調用 startx 時,防止重新啟動 X 會話。
-x Startup 使用 startup 腳本啟動 X 窗口會話。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
要在工作站上或 X 終端上啟動 X 會話,請輸入:
“`
startx
“`
要在工作站上強制啟動 X 會話,請輸入:
“`
startx -w
“`
**4)、export**
export命令用于設置或顯示環境變量。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>語法</font></td></tr></table>
“`
export [-fnp][變量名稱]=[變量設置值]
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>參數說明</font></td></tr></table>
“`
-f 代表[變量名稱]中為函數名稱。
-n 刪除指定的變量。變量實際上并未刪除,只是不會輸出到后續指令的執行環境中。
-p 列出所有的shell賦予程序的環境變量。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
列出當前的所有環境變量:
“`
# export -p //列出當前的環境變量值
declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=“| /usr/bin/lesspipe %s“
declare -x LOGNAME=“root“
declare -x LS_COLORS=““
declare -x MAIL=“/var/mail/root“
declare -x OLDPWD
declare -x PATH=“/opt/toolchains/arm920t-eabi/bin:/opt/toolchains/arm920t-eabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“
declare -x PWD=“/root“
declare -x SHELL=“/bin/bash“
declare -x SHLVL=“1“
declare -x SPEECHD_PORT=“6560“
declare -x SSH_CLIENT=“192.168.1.65 1674 22“
declare -x SSH_CONNECTION=“192.168.1.65 1674 192.168.1.3 22“
declare -x SSH_TTY=“/dev/pts/2“
declare -x TERM=“XTERM“
declare -x USER=“root“
declare -x XDG_SESSION_COOKIE=“93b5d3d03e032c0cf892a4474bebda9f-1273864738.954257-340206484“
“`
**5)、pwd**
export命令用于顯示工作目錄。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>語法</font></td></tr></table>
“`
pwd [–help][–version]
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>參數說明</font></td></tr></table>
“`
–help 在線幫助。
–version 顯示版本信息。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
查看當前目錄:
“`
# pwd
/root
“`
**6)、history**
history命令用于顯示指定數目的指令命令。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>語法</font></td></tr></table>
“`
history(選項)(參數)
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>參數說明</font></td></tr></table>
“`
-c:清空當前歷史命令;
-a:將歷史命令緩沖區中命令寫入歷史命令文件中;
-r:將歷史命令文件中的命令讀入當前歷史命令緩沖區;
-w:將當前歷史命令緩沖區命令寫入歷史命令文件中。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
打印最近N條命令:
“`
# history 5
998? ll
999? pwd
1000? cd
1001? cat fstab.patch
1002? history 5
“`
**7)、shutdown&poweroff&reboot**
這些命令用于設備關機或重啟。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
shutdown命令會給系統計劃一個時間關機。它可以被用于停止、關機、重啟機器。:
“`
# shutdown
# shutdown now
# shutdown 13:20
# shutdown -p now? ### 關閉機器
# shutdown -H now? ### 停止機器
# shutdown -r09:35 ### 在 09:35am 重啟機器
“`
poweroff命令會發送一個 ACPI 信號來通知系統關機:
“`
# poweroff?????????? ### 關閉機器
# poweroff –halt??? ### 停止機器
# poweroff –reboot? ### 重啟機器
“`
reboot命令通知系統重啟:
“`
# reboot?????????? ### 重啟機器
# reboot –halt??? ### 停止機器
# reboot -p??????? ### 關閉機器
“`
**7)、hwclock&date**
linux的時間分為 硬件時間 和 系統時間。
硬件時間 就是指RTC中的時間,hwclock命令就是對這個時間操作。
系統時間 是系統開機時讀取硬件時間作為系統的時間,此后系統時鐘獨立運作,在系統關機時再將系統時間寫回RTC。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
 ;hwclock顯示硬件時間:
“`
# hwclock
2018年05月25日 星期五 14時36分47秒? -0.662200 秒
# hwclock -r
2018年05月25日 星期五 14時36分51秒? -0.566999 秒
# hwclock –show
2018年05月25日 星期五 14時36分56秒? -0.513618 秒
“`
date命令顯示系統時間,并可以按需求輸出特定格式時間:
“`
# date
2018年 05月 25日 星期五 15:11:28 CST
date +”%Y-%m-%d”
2015-12-07
“`
##5、如何查看命令幫助
**1)、help Command**
適用于內部命令,舉例如下:
“`
# type cd
cd is a shell builtin
# help cd
# help cd
cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR.? The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR.? Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory.? If DIR begins
with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars’ is set,
the word is assumed to be? a variable name.? If that variable has a value,
its value is used for DIR.
Options:
-L????? force symbolic links to be followed
-P????? use the physical directory structure without following symbolic
links
-e????? if the -P option is supplied, and the current working directory
cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L’ were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when
-P is used; non-zero otherwise.
“`
**2)、Command –help/-h**
適用于外部命令,舉例如下:
“`
# ls –help
用法:ls [選項]… [文件]…
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor –sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, –all???????????????????? 不隱藏任何以. 開始的項目
-A, –almost-all????????????? 列出除. 及.. 以外的任何項目
–author????????????????? 與-l 同時使用時列出每個文件的作者
-b, –escape????????????????? 以八進制溢出序列表示不可打印的字符
“`
**3)、man Command**
適用于外部命令,舉例如下:
“`
# man cd
注manual 手冊是分章節的;man # Command (#表示章節號)
1、所有用戶可以使用的命令
2、系統內核調用,不是每個命令都有系統調用(如:man 2 read)
3、庫調用
4、特殊文件,如:/dev/tty1
5、文件格式(命令配置文件的語法,如:man 5 passwd)
6、游戲相關
7、雜項
8、管理員命令,如:fdisk
“`
**4)、info Command**
有超鏈接穩文檔,info是信息頁,提供作者、版本,什么時候發布等更詳細信息,man手冊是告訴你怎么用
**5)、README**
絕大多數程序都有相應的幫助文檔,保存在/usr/share/doc文件夾中。
**6)、Google**
學會在搜索引擎上使用關鍵字查找遇到的問題。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99321