Linux入門(二)
Linux常用的基礎命令
1.發行版本
2.CISC、RISC
3.編譯和反編譯(GPL、LGPL、BSD)
4.程序包管理
5.文件系統初步
終端設備
虛擬終端
圖形終端
串行終端
偽終端
Linux的哲學思想
6.開源協議GPL、LGPL、BSD、Apache
7.獲取命令的幫助
help內建命令
man命令
info在線幫助文檔
官方文檔
搜索引擎
8.google的高級用法
Linux常用的基礎命令
1.發行版本:
linux主要發行版:
debian:ubuntu,knopix
slackware:suse,opensuse
redhat:RHEL,fedora桌面版,centos
GNU/Linux ,GNU提供各種應用,
通常以源代碼(文本)方式提供:
自由、靈活
編譯器:源代碼--->二進制
Unix主要發行版:
HP:HPUX
MAC OS
IBM:AIX
Linux基礎:指令集是不同的
2.cpu架構
//主要分為CISC,RISC
CISC:{復雜指令集計算機}就是復雜指令集計算機,目前專指x86和x86_64兩類
RISC:{精簡指令集計算機}
X86-64:又叫AMD64,他的Intel版本叫做EM64T
現在基本上都是RISC,但是能夠接受CISC的復雜指令,也就是說這兩個趨於融合
x86 :
x64(amd64) :兼容x86
m6800,m68k:另外一種,機器的語言,
ultraparc ,solaris
arm:移動終端設備,最常用的CPU,設計上的,例如高通,華為,三星的
power //IBM的CPU,性能非常強悍,價格也非常高
powerpc //簡裝版的power
現在是可以在intel的cpu上安裝mac的,早期的mac使用的是power
HP:alpha,hp-ux
交叉編譯cross compile:告訴編譯器,程序編譯的時候,編譯到另外一個平臺
例如在x86的平臺上,編寫的軟件,編譯成在power上運行的軟件
-----------------
|程序員
-----------------
| 庫 | | //庫調用,把一些通用的system call封裝
-----------------
| kernel | //system call
-----------------
{powerpc,x86,arm}
//但是不同的OS,使用的庫是不同的,例如windows和linux的庫是不同的
//posix:portable 可移植的 system interface,規範了API
//API:應用程序接口,程序員的編程接口,除非遵循了posix才是兼容來的
//ABI:應用二進制接口,
例如nginx在linux上編譯,可以在linux上運行,在windows上編譯,可以在win上運行 //因為都遵循posix
但是一旦編譯完成後,就不兼容了
ABI 允許編譯好的目標代碼在使用兼容ABI的系統中,無需改動就能運行。
//編譯好後,可以直接在遵循該api的其他的平臺上運行
API 同樣的代碼可以在支持這個API的任何系統中編譯,
//例如nginx可以在windows中編譯,也可以在linux中編譯
Unix類的系統:
Linux,BSD,AIX,......Unix-like
Unix類的系統;
API://這一類的系統,在一個系統上編譯好的,也可以在另外一個系統上運行
ABI:
3.編譯和反編譯:
閉源:windows,不給你源代碼,也不會讓你輕易反編譯成功(加殼,加密)
開源:提供源代碼,//中間提供了漏洞,我是不保證的,
//你可以買我的服務,我保證你的。
//提供開源軟件的人的收入:{提供該軟件的服務支持,捐贈}
//很多大型公司,不必自己建立一個開發團隊,捐贈來支持,作者的後續努力
GPL:general public license
只要遵循GPL協定,那麽他的版權屬於GPL
任何其他人,只要參考了GPL程序,就必須遵循GPL協定,必須開源和免費
copyright,copyleft使用
linux的內核是支持GPL協定的
//這樣反而阻礙了GPL的發展
LGPL:lesser GPL更少要求的GPL協定
//調用我的庫接口的話,可以不開源
//GPLv2,GPLv3
FSF:free software foundation基金會負責
BSD:
Apache://這兩個都差不多
在做商業宣傳的時候,只要不以原作者的名義做宣傳就可以
ASF:apache software foundation基金會
雙線授權:
社區版:遵循開源協議,GPL或者BSD
商業授權:商業版本,不開源
4.程序包管理:
程序的組成部分:
二進制程序
配置文件
庫文件
幫助文件
程序包管理器:
x:
程序的組成文件打包成一個或有限幾個文件
安裝:把文件放到指定位置,
卸載:
//程序包管理器,是記錄了安裝的程序,以及生成的文件的所在地
debian:dpkg包管理器,apt-get
Redhat:RPM包管理器,yum,rpm//新版本叫做dnf
suse:rpm包管理,zypper前端工具
archlinux:port包管理
有專門的包轉換工具,但是一般作者都會提供兩種格式的包
Gentoo:安裝很難,很多需要編譯的
LFS:linux from scratch//從零構建linux
一本書,編譯安裝指南,拼湊成一個發行版本
//每一個程序運行的時候,都需要獨占硬件,後來為了讓多個程序同時運行
//把計算機的各種資源切割了,
CPU復用:按照時序,時間片
內存:空間切割復用
硬盤:空間復用
IO:時序復用
//從這個角度來說,OS其實就是一個虛擬機
虛擬化軟件程序:
vmware workstation:
virtualbox:SUN公司的
miscrosoft:Hyper-V
使用cobbler安裝linux //教師內部網絡
CD/DVD使用物理驅動器:自動檢測
只要網卡設置為橋接網卡,會自動連接cobbler
全程自動安裝:
root:mageedu
終端:terminal
centos7使用
localectl set-locale LANG=zh_CN.utf8=zh_CN.gb2312
locale //查看字符集
使用cobbler實現linux自動安裝:
http://blog.csdn.net/liangliangdetianxia/article/details/37605787
http://www.osyunwei.com/archives/7606.html
5.文件系統初步
硬盤大小:120G以上
網卡:橋接
vmware :編輯-->虛擬網絡編輯器-->編輯需要橋接的網卡
終端:terminal
用戶界面:
GUI:GNome KDE
bash,zsh,csh,tcsh,ksh
ssh協議:secure shell:
ss -tnl
查看系統是否監聽tcp協議的22號端口
ip addr list
ifconfig //查看ip地址
1.啟動或者關閉防火墻:
centos7 :
systemctl stop/start firewalld.service
systemctl disable/enable firewalld.service
centos6:
service iptables stop/start
chkconfig iptables on/off
iptables -F
2.查看自己的shell
echo $SHELL
3.終端設備:
多任務,多用戶
物理終端:控制臺,console//只在系統啟動的時候用
//當系統啟動之後,就會虛擬出多個虛擬終端
虛擬終端:tty,pts{xshell使用,圖形界面右鍵terminal} //默認驅動6個虛擬終端
ctrl+alt+f{1,2,,,6}
圖形終端://可以啟動多個
Centos 6:
ctrl+ALT+F7 //圖形終端
centos 7:
在哪個虛擬終端啟動,即位於哪個虛擬終端
串行終端{ttys}:
偽終端{pty}:例如通過ssh,telnet連接近來的
桌面右鍵:Konsole也是偽終端
4.linux的哲學思想之一:一切皆文件
表現之一:硬件設備也通過文件表示
物理終端:/dev/console
虛擬終端:/dev/tty{1-6}
圖形終端:tty7
串行終端:/dev/ttyS#
偽終端:/dev/pts/#{xshell,右鍵} //#代表一個數字
tty //查看自己使用的tty
註意:在啟動設備之後,在其上關聯一個用戶接口程序
即可實現與用戶交互
啟動GUI:startx
-------------
|1|2|3|.... //應用程序,其中shell是必須的
-----------
|庫 | //有的程序,不調用庫,直接交互內核
----------------|
|內核 |
----------------|
|硬件 |
-----------------
//用戶通過shell去管理其他程序
shell{庫{內核{硬件}}}
5.[[email protected] ~]# //prompt:提示符
~ 用戶家目錄 //工作{current,working}目錄
root 主機名
MT 主機名
# 管理員
$ 普通用戶
建議使用非管理賬號登錄,然後切換
echo $PS1 //查看命令提示符
ctrl +c //終止
//命令寫完了,但是不想執行該命令,也可以使用ctrl+C
6.常見命令
systemtl poweroff //CentOS 7的命令
poweroff //斷電
systemctl reboot
reboot
shutdown
halt
自由:
自由學習和修改:自由使用:自由分發:自由創建延伸板
debian之後又ubuntu,RHEL之後有CentOS,但是無能為力因為GPL
Linux的哲學思想:
1.一切皆文件
把所有的資源統統抽象為文件形式,包括硬件設備,甚至通信接口等
對文件的操作:open(),read(),write(),close(),delete(),create()
2.由眾多功能單一的程序組成:一個程序只做一件事,並且做好
組合小程序,完成復雜任務
3.盡量避免和用戶交互
目標:易於以編程的方式實現自動化任務
4.使用文本文件保存配置信息
7.文件是什麽,眾多文件如何有效組織起來
目錄:路徑映射
文件:磁盤上的一段數據流 對數據可以做到按名存取 //右邊界
文件系統:由目錄映射的各種路徑,是一種層級結構,有索引
/dev/pts/2 //一級一級映射的關系,所有的文件都從屬於 /
/ 原始起點:根目錄
第二層:子目錄,
第三層:
倒置的樹狀結構
文件系統:層級結構,有索引
/dev/pts/2
最左側/:表示根目錄
其他的/:表示路徑分隔符
linux的路徑分隔符 /
windows的分隔符 \
文件的路徑表示:
絕對路徑:從跟開始
相對路徑:從當前位置開始
./當前目錄
../ 父目錄
pwd 查看路徑
dirname 查看文件的絕對路徑
basename 查看文件的名字
用戶的家目錄:
用戶的起始目錄:普通用戶管理文件的位置
工作目錄:隨時變化
/etc/sysconfig/network-scripts/ifcfg-eno16777736
basename:ifcfg-eno16777736
dirname: /etc/sysconfig/network-scripts
小結:
1.物理終端console,圖形終端tty7,偽終端pts,虛擬終端tty1-6,串行終端ttyS
2.dirname,basename
3.pwd
6.開源協議:
GPL,LGPL,BSD,Apache
代碼的共產主義運動
BSD:
1.如果二次發布的產品中包含源代碼,則在源代碼中必須帶有原來的
代碼中的BSD協定
2.如果二次發布產品是二進制格式的,庫或者程序,則需要在
發布的文檔或者版權聲明中,說明包含原來的代碼中的BSD協定
3.不可以用開源代碼作者或組織,以及保護的產品的名字做市場推廣
文件系統、文件,目錄:
倒置的樹樁結構
目錄:
文件:
文件名:嚴格區分大小寫,路徑分隔符 /
路徑:
絕對路徑:從跟開始
相對路徑:從當前位置開始
程序的組成部分:二進制文件,庫文件,幫助文件,配置文件,
二進制、庫文件:可執行文件
//庫文件,只能在被調用的時候執行。
配置文件,幫助文件:可被查看其內容的文件
人機交互界面:
GUI:
CLI:
[email protected] workdir}#
Linux的基礎知識:
命令的語法通用格式:
COMMAND OPTIONS ARGUMENTS
命令:發起一個命令,請求內核將某個二進制程序運行為一個進程
程序:-->進程
靜態:-->動態(有生命周期)
命令本身是一個可執行的程序文件:二進制格式的文件,有可能會調用庫文件,有可能會調用共享庫文件
多數程序文件都存放在:/bin,/sbin,/usr/bin,/usr/sbin
普通命令:/bin,/usr/bin,/usr/local/bin
特權命令:/sbin,/usr/sbin,/usr/local/sbin
共享庫:/lib,/lib64,/usr/{lib,lib64},/usr/local/{lib,lib64}
32bit庫,64bit庫
命令必須遵循特定的規範,格式規範
.exe,.si,ELF(Linux)
file /bin/ls //查看遵循的命令格式
註意:並非所有的命令,都有一個在某目與之對應的可執行程序文件
命令分類:
由shell程序的自帶的命令:內置命令(builtin)
獨立的可執行程序文件:文件名即命令名:外部命令
1.PATH變量
shell程序是一個獨特的程序:負責解析用戶提供的命令
環境變量:PATH //自左往右,找到就挺停
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
查看命令類型:
type type //查看是否為內置命令
which type //找不到路徑,因為他是shell內置的命令
2.OPTIONS :指定命令的運行特性
ls -l /var/
選項的兩種表現形式:
短選項:- //可以合並
例如:-l,-d
長選項:-- //不可合並
例如:--help,--human-readable
註意:有些選項可以帶參數,此稱為選項參數
短選項的參數:一般空格分割
長選項:一般 = 等於
如果同一命令同時使用多個短選項,多數可合並:-l,-d
ls -l -d /var
ls -ld /var
3.arguments
命令的作用對象:
註意:不同的命令的參數,有些命令可同時帶多個參數
多個之間以空白符分割
例如: ls -ld /var /etc
7.獲取命令的使用幫助(man)
內部命令:內建命令
help COMMMAND //help type
//修改LANG可以修改幫助信息
外部命令:
(1) 命令自帶簡要格式的幫助
COMMAND --help //ls --help
(2) 使用手冊
位置:/usr/share/man
man 命令即可
whatis localectl //查看該文件的幫助信息
SECTION:
NAME:功能說明
SYNOPSIS:語法格式
DESCRIPTION:描述
OPTIONS:選項
EXAMPLES:使用示例
AUTHOR:作者
BUGS:報告程序bug的方式
SEE ALSO:參考
...
SYNOPSIS:語法格式
[] 可選內容
《 》 必須提供的內容//小於和大於
a|b|c 多選一
...同類內容可出現多個
{} 輔助性的標識
使用手冊:壓縮格式的文件,有章節之分;
/usr/share/man
man1,man2
1:用戶命令,普通用戶可以運行的命令
2:系統調用,
3:C庫調用
4:設備文件及特殊文件
5:文件格式:(配置文件格式)
6:遊戲使用幫助
7:雜項
8:管理工具及守護進程
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions),
e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard] ///內核例行公式,慣例
註意:並非每個COMMAND在所有章節下都有手冊
whatis COMMAND //查看幫助章節
whatis :是查詢數據庫進行的
makewhatis //更新數據庫
mandb //在centos7上更新,man數據庫
5.man命令打開手冊之後的操作方法
翻屏:
空格 b //一個屏幕,上下
ctrl + d 向尾部翻半屏
ctrl + u 回翻
回車 或者 j:一行
k:向上
G:最後一行
3G:跳轉到指定行
文本搜索:
/keyword 向下搜索,當前位置,不區分大小寫
?keyword 向上搜索,當年位置,無大小寫
n :與 查找命令方向相同
N:與查找命令方向相反
man -M /PATH/TO/SOMEWHERE :到指定目錄下去查看命令手冊並打開之
6.info COMMAND
獲取命令的在線文檔
7.很多應用程序會自帶幫助文檔:
/usr/share/doc/APP-VERSION
README:程序的相關的信息
INSTALL:安裝幫助
CHANGES:程序隨著版本更新,發生的改變
8.官方文檔
主流發行版官方文檔
http://www.redhat.com/doc
9.程序官方的文檔
官方站點上的“Document ”
centos filetype:pdf //查看所有的pdf文檔
10.搜索引擎:
zabbix site:baidu.com
zabbix filetype:pdf
書籍的出版社:
O‘Reiley
Wrox
機械工業出版社、電子工業、人郵、清華大學、水利水電
寫書要像老外一樣具有責任感:
8、google的高級用法
1.centos filetype:pdf,ps,dwf, kml, kmz, doc,xls,ppt,rtf,swf,all(所有上面的文檔格式)。
2.大熊貓 -百科 //空格 -排除關鍵詞
3.大熊貓 +百科 //必須出現
4.~搜索 //類似搜索
5.國家*匹夫* //統配
6.奧運會 2014 OR 2016 //或者and,or,not
7.手機 價格2000..5000
搜索結果中會出現價格是2000元至5000元的手機相關信息
8.zabbix site:baidu.com
9.視頻教程 inurl:video //在URL中出現video
10.出國留學 intitle:美國 //在網頁標題中出現
11.related:baidu.com //和百度相關的網站
小結:
1.BSD隨便商用,得說是BSD的,但是不能說我的名字
2.幫助 // whatis ls ;makedb 更新數據庫
help 內建命令
--help
man COMMAND
info COMMAND //在線幫助文檔
/usr/share/doc
該軟件的在線幫助信息
3.打開手冊之後的使用方法
整個屏幕:空格| b
半個屏幕:ctrl + d/u
一行:j/k
定行:#G
4.google的高級用法
aa +/-
fietype:pdf
zabbix 論文 or 設計
Linux入門(二)