Linux 基礎
一.計算機組成及其功能
當今計算機采用馮·諾依曼架構,必須具備的五大基本組成部件,包括:
1.輸入數據和程序的輸入設備
2.記憶程序和數據的存儲器
3.完成數據加工處理的運算器
4.控制程序執行的控制器
5.輸出處理結果的輸出設備
計算機基本組成結構圖
二.Linux的發行版,不同發行版之間的聯系與區別
1.Linux
嚴格來說Linux是指Linux內核,建立起計算機軟件與硬件之間通訊的平臺,提供系統服務,Linux內核最早由Linus Torvalds在1991年開始編寫。
2.GNU
GNU 是 “GNU's Not Unix” 的遞歸縮寫,?是由理查德·斯托曼在1983年9月27日公開發起的。它的目標是創建一套完全自由的操作系統。GNU是一個類Unix操作系統。它是由多個應用程序、系統庫、開發工具乃至游戲構成的程序集合。GNU的開發始于1984年1月,稱為GNU工程。GNU的許多程序在GNU工程下發布;我們稱之為GNU軟件包。
3.Linux發行版
一個完整的Linux操作系統包含Linux內核,GNU程序庫和工具,命令行shell,圖形界面的X Window系統和相應的桌面環境,如KDE或GNOME,發行版就是個人,各組織及各大廠商根據各自不同的目的將Linux內核及GNU程序整合編譯為一個完整的操作系統(GUN/Linux)。
Linux主流發行版有:Redhat,Debian,Slackware,Gentoo,ArchLinux等系列
Redhat系:
Redhat Linux 是有紅帽公司開發的Linux發行版,自從自從RedHat9.0版本發布后,RedHat公司就不再開發桌面版的Linux發行套件,RedHatLinux停止了開發,而將全部力量集中在服務器版的開發上,也就是RedHat Enterprise Linux版。2004年4月30日,RedHat公司正式停止對RedHat9。0版本的支援,標志著RedHatLinux的正式完結。原本的桌面版RedHatLinux發行套件則與來自開源社區的Fedora計劃合并,成為FedoraCore?發行版本。Centos是RedHat Enterprise Linux的社區版,Centos與RedHat Enterprise Linux具有相同的功能及性能。
Debian系:
Debian?系包括Debian和Ubunt等,Debian 首次發布于 1993 年 9 月,是由社區維護,是一個自由,穩定和功能強大的Linxu操作系統。Ubuntu是一個以桌面應用為主的開源GNU/Linux操作系統,Ubuntu 是基于DebianGNU/Linux
Slackware系:
Slackware Linux是由Patrick Volkerding開發的GNU/Linux發行版,與很多其他的發行版不同,它堅持KISS(Keep It Simple Stupid)的原則。SUSE?Linux是以Slackware Linux為基礎衍生而來,現在的 SUSE Linux 由 Novell公司的openSUSE 項目所維護,openSUSE 也算是Linux操作系統發行版之一。
Gentoo系:
Gentoo是一個基于Linux的自由操作系統,它能為幾乎任何應用程序或需求自動地作出優化和定制。追求極限的配置、性能,以及頂尖的用戶和開發者社區,都是Gentoo體驗的標志特點。 Gentoo的哲學是自由和選擇。得益于一種稱為Portage的技術,Gentoo能成為理想的安全服務器、開發工作站、專業桌面、游戲系統、嵌入式解決方案或者別的東西
ArchLinux:
Arch Linux(或稱Arch)是一種以輕量簡潔為設計理念的Linux發行版。其開發團隊秉承簡潔、優雅、正確和代碼最小化的設計宗旨
三.Linux的哲學思想
1.一切皆文件
Linux把幾乎所有的資源抽象為文件形式,包括硬件設備,通信接口等
2.由眾多功能單一的程序組成;一個程序只做一件事,并且做好
3.盡量避免跟用戶交互
目標:易于以編程的方式實現自動化任務;
4.使用文本文件保存配置文件
四.Linux系統命令的使用格式
1.命令的語法通用格式:
#COMMAND OPTIONS ARGUMENTS
COMMAND:命令
OPENTIONS:指定命令的運行特性
選項有兩種表現形式:
短選項:如:-l -d; 可合并
長選項:--word:不可合并
ARGUMENTS:
命令的作用對象:命令對什么生效
2.常用命令介紹:
ifconfig
功能:配置網絡接口
使用格式:
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address ...
常用選項:
-a: 顯示所有網絡端口信息
-s: 顯示簡要信息
up:啟用網卡
down:停用網卡
示例:
[root@localhost ~]# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.121 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe22:ebf7 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:22:eb:f7 txqueuelen 1000 (Ethernet)
RX packets 746106 bytes 951171006 (907.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 135554 bytes 11006185 (10.4 MiB)
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 26 bytes 2056 (2.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 26 bytes 2056 (2.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 00:00:00:00:00:00 txqueuelen 0 (Ethernet)
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
virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:e9:15:76 txqueuelen 500 (Ethernet)
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
echo
功能:回顯文本
命令格式:
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
常用選項:
-n : 回顯之后不換行
-e : 生效轉義符
轉義符:
\n 換行
\t 制表符
[root@localhost ~]# echo -e "hello\nwhat your name?"
hello
what your name?
[root@localhost ~]# echo -e "hello\tworld"
hello world
單引號:強引用,變量引用不執行替換
[root@localhost ~]# echo '$SHELL'
$SHELL
雙引號:弱引用,變量引用會被替換
[root@localhost ~]# echo "$SHELL"
/bin/bash
tty
功能:打印連接到標準輸入的終端的文件名
命令格式:
tty [OPTION]
[root@localhost ~]# tty
/dev/pts/1
startx
功能:啟用X會話
命令格式
startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]
export
功能:設置或顯示環境變量
命令格式:
export [-fn] [name[=value]
export -p
參數:
-f 代表[變量名稱]中為函數名稱。?
-n 刪除指定的變量。變量實際上并未刪除,只是不會輸出到后續指令的執行環境中。?
-p 列出所有的shell賦予程序的環境變量。
[root@localhost ~]# export -p
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
pwd
功能:打印工作目錄
命令格式:
pwd [OPTION]
[root@localhost zach]# pwd
/home/zach
history
功能:用于顯示歷史記錄和執行過的指令命令
命令格式:
History [OPTION]
-c clear the history list by deleting all of the entries
-d offset delete the history entry at offset OFFSET.
history -d 61
-a append history lines from this session to the history file
-n read all history lines not already read from the history file
-r read the history file and append the contents to the history list(內存中)
-w write the current history to the history file and append them to the history list
-p perform history expansion on each ARG and display the result without storing it in the history list
-s append the ARGs to the history list as a single entry
history # ;顯示最近的#條命令:
調用命令歷史列表中的命令:
!# :再次執行歷史命令列表中的第#條命令;
!!:執行上一次命令
!STRING :再一次執行命令歷史列表中最近一個以STRING開頭的命令
調用上一條命令的最后一個參數
快捷鍵:Esc .
字字符串:!$
定制history的功能,可通過環境變量實
HISTSIZE : shell進程可保留的命令歷史條數
HISTFILE : 持久保存命令歷史的文件
[root@localhost ~]# echo $HISTFILE
/root/.bash_history 用戶家目錄下.bash_history,保存歷史命令
HISTFILESIZE: 命令歷史文件中能保存的命令大小
HISTCONTROL:控制命令歷史記錄的方式
ignorespace:忽略以空白字符開頭的命令
ignoredups:忽略重復的命令;
ignoreboth:以上兩者同時生
which
功能:顯示命令的全路徑
命令格式:
which [options]
參數:
--skip-alias 跳過顯示命令別名
whereis
功能:定位命令二進制文件,源文件和手冊頁文件
命令格式:
whereis [options] name.
參數:
-b Search only for binaries.
-m Search only for manuals.
-s Search only for sources
who
功能:顯示登錄用戶
命令格式:
who [OPTION]
參數
-b, --boot
time of last system boot 最近一次啟動時間
-r, --runlevel
print current runlevel 運行級別
w
Show who is logged on and what they are doing
增強版的who命令
shutdown
功能:關閉電源或重新啟動機器
命令格式:
shutdown [OPTIONS...] [TIME] [WALL...]
[OPTIONS...]
-h:halt
-r:reboot
-c:cancel
[TIME]
hh:mm
now
+m
[root@localhost zach]# shutdown -h +50
Shutdown scheduled for Sat 2018-05-12 16:13:30 CST, use 'shutdown -c' to cancel.
[root@localhost zach]# shutdown -c
Broadcast message from root@localhost.localdomain (Sat 2018-05-12 15:23:48 CST):
The system shutdown has been cancelled at Sat 2018-05-12 15:24:48 CST!
poweroff
功能:關閉系統
命令格式:
poweroff [OPTIONS...]
選項:
--help Show this help
--halt Halt the machine
-p --poweroff Switch off the machine
--reboot Reboot the machine
-f --force Force immediate halt/power-off/reboot
-w --wtmp-only Don't halt/power-off/reboot, just write wtmp record
-d --no-wtmp Don't write wtmp record
--no-wall Don't send wall message before halt/power-off/reboot
reboot
功能:重啟系統
命令格式:
reboot [OPTIONS...] [ARG]
選項:
--help Show this help
--halt Halt the machine
-p --poweroff Switch off the machine
--reboot Reboot the machine
-f --force Force immediate halt/power-off/reboot
-w --wtmp-only Don't halt/power-off/reboot, just write wtmp record
-d --no-wtmp Don't write wtmp record
--no-wall Don't send wall message before halt/power-off/reboot
hwclock
功能:顯示或設定硬件時鐘
命令格式:
hwclock [function] [option...]
常用選項:
-s, --hctosys:以硬件時鐘為準,把系統時鐘調整為與硬件時鐘一樣
-w, --systohc:以系統時鐘為準,把硬件時鐘調整為與系統時鐘一樣
date
功能:顯示系統日期時間
命令格式:
date [OPTION]...[+FORMAT]
FORMAT:格式符
%F : 顯示年月日
[root@localhost ~]# date +%F
2018-05-10
%T :顯示時間
[root@localhost ~]# date +%T
21:07:52
%Y : 顯示年份
[root@localhost ~]# date +%Y
2018
%m : 顯示月份
[root@localhost ~]# date +%m
05
%d :顯示日
[root@localhost ~]# date +%d
10
%H :顯示小時
[root@localhost ~]# date +%H
21
%M :顯示分鐘
[root@localhost ~]# date +%M
10
%S :顯示秒
[root@localhost ~]# date +%S
22
%s :從1970年(unix元年)到執行命令的那一刻經過的秒數。
設定時間:date [MMDDhhmm[[CC]YY][.yy]
月日時分 年 秒
[root@localhost ~]#date 051020552018.50
Thu May 10 20:55:50 CST 2018
五.Linux系統上獲取命令的幫助信息
1.內部命令:
help COMMAND
2.外部命令:
(1)命令自帶簡要格式的使用幫助幫助
~]#COMMAND --help
(2)使用手冊:manual
位置:/usr/share/man
~]#man COMMAND
使用手冊:壓縮格式的文件,有章節之分
/usr/share/man
man1,man2,....
1:用戶命令
2:系統調用
3:C庫調用
4:設備文件及特殊文件
5:文件格式:(配置文件格式)
6:游戲使用幫助
7:雜項
8:管理工具及守護進程
~]#man [1-8] COMMAND
~]#whatis COMMAND 可查看哪些章節下有幫助手冊
注意:其執行過程是查詢數據庫進行的
手動更新數據庫
~]#makewhatis
man 命令打開手冊以后操作方法
翻屏
空格:向下翻
b鍵:向上翻
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏
回車鍵:向文件尾部翻一行
k:向文件首部翻一行
G:跳轉至最后一行
1G:跳轉至文件首部
文本搜索:
/keyword:向下
?keyword:向上
n:與查找方向相同方向跳
N:與查找方向相反方向跳
(3)info COMMAND
獲取命令的在線信息
(4)很多應用程序自帶幫助文檔:/usr/share/doc/APP-VERSION
README:程序相關的信息
INSTALL:安裝幫助
CHANGES:版本迭代時的改動信息
(5)主流發行版官方文檔
(6)程序官方的文檔
(7)google
六.Linux發行版的基礎目錄名稱命名法則及功用規定
1.命名規則:
(1)嚴格區分大小寫
(2)目錄也是文件,在同一路徑下,兩個文件不能同名
(3)支持使用出/以外的任意字符
(4)最長不能超過255個字符
2.Linux 發行版基礎目錄
/bin:供所有用戶使用的基本命令程序文件
/sbin: 供系統管理使用的工具程序
/boot: 引導加載器必須用到的各靜態文件,kernel,initramfs(initrd),grub等
/dev/: 存儲特殊文件或設備文件
設備:
字符設備:線性設備
塊設備:隨機設備
/etc:系統程序的配置文件目錄,只能為靜態
/home:普通用戶家目錄集中目錄
/root :管理員的家目錄;可選;
/lib: 為系統啟動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及為內核提供內核模塊
libc.so.*:動態鏈接的C庫
ld*:運行時連接器/加載器
moduls/:用戶存儲內核模塊的目錄
/lib64 :64位系統特有的存放64位共享庫的目錄
/media :便攜式設備的掛載點,cdrom,
/mnt : 其他文件系統的臨時掛載點
/opt : 附加應用程序的安裝位置:可選目錄;
/srv : 當前主機為服務提供的數據;
/tmp : 為那些會產生臨時文件的程序提供用于存儲臨時文件的目錄,可供所有用戶寫入操作
/usr :全局共享的只讀數據路徑
bin
lib
sbin
lib64
include :C 程序頭文件
share : 命令手冊業和自帶文檔等架構特有的文件存放位置
local :讓系統管理員安裝本地應用程序,也用于安裝第三方應用程序
src :程序源碼文件的存放位置
x11R6:X-Window程序存放位置
/var : 存儲常發生變化的數據目錄
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots
/proc :虛擬文件系統,內核及進程存儲其相關信息,它們多為內核參數
/sys :sysfs虛擬文件系統提供一種比/proc更為理想的訪問內核數據的途徑,主要作用為管理linux設備提供統一模型的接口.
/sys/devices 這是內核對系統中所有設備的分層次表達模型,也是 /sys 文件系統管理設備的最重要的目錄結構,下文會對它的內部結構作進一步分析;
/sys/dev 這個目錄下維護一個按字符設備和塊設備的主次號碼(major:minor)鏈接到真實的設備(/sys/devices下)的符號鏈接文件,它是在內核 2.6.26 首次引入;
/sys/bus 這是內核設備按總線類型分層放置的目錄結構, devices 中的所有設備都是連接于某種總線之下,在這里的每一種具體總線之下可以找到每一個具體設備的符號鏈接,它也是構成 Linux 統一設備模型的一部分;
/sys/class 這是按照設備功能分類的設備模型,如系統所有輸入設備都會出現在 /sys/class/input 之下,而不論它們是以何種總線連接到系統。它也是構成 Linux 統一設備模型的一部分;
/sys/block 這里是系統中當前所有的塊設備所在,按照功能來說放置在 /sys/class 之下會更合適,但只是由于歷史遺留因素而一直存在于 /sys/block, 但從 2.6.22 開始就已標記為過時,只有在打開了 CONFIG_SYSFS_DEPRECATED 配置下編譯才會有這個目錄的存在,并且在 2.6.26 內核中已正式移到 /sys/class/block, 舊的接口 /sys/block 為了向后兼容保留存在,但其中的內容已經變為指向它們在 /sys/devices/ 中真實設備的符號鏈接文件;
/sys/firmware 這里是系統加載固件機制的對用戶空間的接口,關于固件有專用于固件加載的一套API,在附錄 LDD3 一書中有關于內核支持固件加載機制的更詳細的介紹;
/sys/fs 這里按照設計是用于描述系統中所有文件系統,包括文件系統本身和按文件系統分類存放的已掛載點,但目前只有 fuse,gfs2 等少數文件系統支持 sysfs 接口,一些傳統的虛擬文件系統(VFS)層次控制參數仍然在 sysctl (/proc/sys/fs) 接口中中;
/sys/kernel 這里是內核所有可調整參數的位置,目前只有 uevent_helper, kexec_loaded, mm, 和新式的 slab 分配器等幾項較新的設計在使用它,其它內核可調整參數仍然位于 sysctl (/proc/sys/kernel) 接口中 ;
/sys/module 這里有系統中所有模塊的信息,不論這些模塊是以內聯(inlined)方式編譯到內核映像文件(vmlinuz)中還是編譯為外部模塊(ko文件),都可能會出現在 /sys/module 中:
/sys/power 這里是系統中電源選項,這個目錄下有幾個屬性文件可以用于控制整個機器的電源狀態,如可以向其中寫入控制命令讓機器關機、重啟等。
/sys/slab (對應 2.6.23 內核,在 2.6.24 以后移至 /sys/kernel/slab) 從2.6.23 開始可以選擇 SLAB 內存分配器的實現,并且新的 SLUB(Unqueued Slab Allocator)被設置為缺省值;如果編譯了此選項,在 /sys 下就會出現 /sys/slab ,里面有每一個 kmem_cache 結構體的可調整參數。對應于舊的 SLAB 內存分配器下的 /proc/slabinfo 動態調整接口,新式的 /sys/kernel/slab/<slab_name> 接口中的各項信息和可調整項顯得更為清晰。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98313
命令可以用專門的命令行 格式寫。