《Linux從入門到精通》筆記

来源:https://www.cnblogs.com/fhwup/archive/2018/03/17/8587848.html
-Advertisement-
Play Games

第一篇 基礎篇 第1章 Linux概述 1.1 Linux的起源 1991年芬蘭學生Linus Torvalds寫的磁碟驅動和文件系統開源發佈,Linux即“Linus的Minix”。 1994年內核1.0版發佈,最新內核版本4.14.11。 1.2 追溯到Unix 1969年AT&T貝爾實驗室的一 ...


第一篇 基礎篇   第1章 Linux概述 1.1 Linux的起源 1991年芬蘭學生Linus Torvalds寫的磁碟驅動和文件系統開源發佈,Linux即“Linus的Minix”。 1994年內核1.0版發佈,最新內核版本4.14.11。   1.2 追溯到Unix 1969年AT&T貝爾實驗室的一個研究項目。 1977年加州大學伯克利分校基於源碼發佈了Berkeley Unix,發行版通稱為BSD(伯克利軟體發行版)。 1979年免費提供給各大學,但獲取源代碼需要繳納許可費。 1989年徹底移除AT&T代碼的BSD發佈。 1995年 4.4BSD-Lite發行,團隊解散,目前大多數BSD如FreeBSD,OpenBSD都從該版本發展而來。同時沿用AT&T代碼的Unix系統有HP-UX、Solaris等。   Linux由全球開發社區對Unix借鑒後重新實現,不屬於BSD和AT&T任何一種。   1.3 開源許可證協議 BSD、MIT、Apache 用戶可以修改並保留修改部分的源代碼版權。 GPL linux所遵守,更嚴格,要求用戶將所做的一切修改回饋社區,變成自由軟體。 上世紀80年代初期,Richard Stallman發起GNU計劃,即GNU's NOT Unix的縮寫。 GPL即GNU公共許可證(GNU Public License),包括四點內容: A、軟體最初的作者保留版權。 B、其他人可以修改、銷售該軟體,也可以此為基礎開發新軟體。但必須保證開源。 C、經過修改的軟體仍然受GPL約束。 D、軟體使用中引起的損失,開發人員不承擔責任。   1.4 Linux的發行版 Linux實際上只定義了一個操作系統內核,這個內核由kernel.org負責維護。不同企業和組織在此基礎上開發了一系列輔助軟體,打包發佈自己的“發行版本”。     第2章 Linux安裝 2.1 Grub Grub是linux預設的操作系統引導載入器,可以引導windows,linux、FreeBSD等多種操作系統。 安裝linux後再安裝windows會覆蓋原有的Grub引導程式。 Grub硬碟編號格式hd#(不區分硬碟類型),從數字0開始,如:hd0、hd1。 Grub硬碟分區格式(hd#,#),也從數字0開始,主分區為0-3,邏輯分區為4開始,如:(hd0,0)。   2.2 Linux硬碟分區 hd:IDE硬碟;sd:SCSI硬碟、SATA硬碟。 第一塊硬碟編號從小寫字母a開始,如:sda、sdb。 每塊硬碟只能存在4個主分區,即數字1-4,如:sda1、sda2、sda3、sda4。數字5開始的為邏輯分區,沒有個數限制,如sdb5。 操作系統主體可以安裝在主分區或邏輯分區,但引導程式必須安裝在主分區。 swap交換分區不需要掛載點,容量應該大於實際物理記憶體容量。     第3章 桌面環境 3.1 X視窗系統 X系統基於一種獨特的伺服器/客戶機架構。 X伺服器:實際控制輸入和輸出設備,並定義設備的抽象介面給X客戶端程式使用。設計意義:與平臺無關,讓用戶自由選擇來定製桌面。配置文件為 /etc/X11/xorg.conf 。 X客戶端程式:需要向X伺服器請求服務的程式,包括視窗管理器。 視窗管理器:負責控制應用程式視窗的各種行為。 顯示管理器:一個驗證用戶身份的登錄界面,並由它啟動包括X伺服器的所有圖形界面。若關閉,則只能startx命令啟動X伺服器。 widget庫:定義一套圖形用戶界面的編程介面。應用程式開發人員調用它來與X伺服器交互。 桌面環境:分為KDE(C++語言實現,基於Qt庫,華麗)和Gnome(C語言實現,基於GTK+widget庫,簡潔,自由,後誕生)兩大類,它將除X伺服器以外的上述所有與X有關的東西打包成大雜燴。但最後處理圖形輸出的仍然是X伺服器。   3.2 X系統啟動過程 X系統啟動由顯示管理器來完成,顯示管理器啟動後依次完成如下操作: A、啟動X伺服器。 B、提供登錄界面,等待驗證用戶身份。 C、執行用戶引導腳本Xsession,視窗管理器是Xsession啟動的唯一前臺程式。Xsession一直運行直到用戶退出。   3.3 啟動X程式 X伺服器接受來自多個應用程式(含遠程網路主機)的請求,併在本地顯示。 環境變數DISPLAY格式:DISPLAY=servername:X伺服器編號(從0開始). 屏幕編號(從0開始)。如:host:3.2,:0.0,:0 。     第二篇 系統管理篇   第4章 Shell基本命令 4.1 Shell簡介 Shell是一個命令解釋器程式,在用戶和操作系統之間提供一個面向行的可交互介面。 Shell種類有BASH、TCSH Shell、Z-Shell等,BASH是Linux預設安裝的,並預設有7個控制台,分別是Ctrl+Alt+F1~F7進入,第7個留給X伺服器。 Shell通配符為“ * ”,“?”," [ ] "。其中*匹配文件名中任意長度字元串,?匹配一個字元,[ ] 匹配所有出現在方括弧中的字元,可以用“-”指定一個字元集範圍。   4.2 常用命令 第一批:cd,ls,pwd,cat,more,head,tail,less,[ez]grep,find,location,whereis,who,whoami,uname,man,whatis,apropos,date,hostname,env。 第二批:groupadd,useradd,passwd,mkdir,touch,chown,chgrp,chmod,mv,cp,echo,rm,rmdir,ls,>,>>,<,<< EOF\n 。。。\nEOF,| 。 第三批:rpm,yum,apt,dpkg,./configure腳本生成makefile文件,make,make install。 第四批:mount,umount,df,fsck,mkfs,lsusb,gzip,gunzip,bzip2,bunzip2,rar,tar,dd,[r]dump,[r]restore,fdisk,mkswap 。 第五批:history,userdel,usermod,id,su,sudo。 第六批:ps,kill,top,lsof,nice,renice。 第七批:ifconfig,netstat,route。 第八批:cut,diff,sort,uniq,tr,wc,substr,seq,source,export。 第九批:exportfs,showmount,at,atq,atrm,iptables,nmap。   4.3 find命令 格式:find [路徑] [選項] -name 文件名,可含通配符。 -type 文件類型,取值:bcdfpl 。b塊設備文件,c字元設備文件,d目錄文件,f普通文件,p命名管道,l符號鏈接。 -atime n 最後一次使用在n天前;+n 大於等於n天前; -n 小於n天前。 -mtime n 最後一次修改在n天前。 -print 將結果輸出到標準輸出(屏幕)。   #查找當前目錄最後一天內修改過的名字尾碼zip的普通文件 $ find . -type f -name *zip -mtime -1 -print   location命令查找文件資料庫,速度很快,使用updatedb命令更新資料庫。如:location *.doc 。   4.4 uname命令 $uname -r #查看內核版本。 $uname -a #查看操作系統所有有用信息。   4.5 ln命令 格式:ln [-s] TARGET LINKNAME #預設建立硬鏈接,-s選項為符號鏈接。 兩者區別:硬鏈接是直接引用,符號鏈接通過名稱進行引用。     第5章 磁碟管理 5.1 ext3fs文件系統 ext3fs比ext2fs增加了日誌功能,用於災難恢復,提高文件系統可靠性。原理:文件寫操作時,先記錄寫前日誌文件,並將日誌保存到一塊專門區域。 swap交換分區,目的是通過操作系統的調度,程式實際可使用的記憶體空間遠遠超過物理記憶體。原理:當記憶體不足時,將暫時不用的數據取出,放到交換分區里,來為當前程式騰出記憶體空間。   5.2 設備文件 Linux中每個設備都映射為一個設備文件,使用時需先掛載到文件系統的一個目錄下。啟動時掛載 /etc/fstab 。 塊設備文件可以隨機讀寫,如磁碟。 字元設備文件只能按順序接收字元流,如印表機。   5.3 硬碟管理 RAID:獨立磁碟冗餘陣列。 LVM:邏輯捲管理器。     第6章 用戶管理 6.1 ID和文件 UID:用戶唯一標識,32位無符號整數,root用戶uid為0。 GID:用戶組唯一標識,32位無符號整數,root用戶組gid為0。 用戶信息文件為/etc/passwd,用戶口令文件為/etc/shadow。 用戶組文件為/etc/group。     第7章 進程管理 7.1 ID和文件 PID:進程唯一標識。 PPID:父進程的PID。 UID:只有進程的創建者和root用戶才能操作進程。 EUID:進程的有效用戶ID,用來確定進程對某些資源和文件的訪問許可權。場景:setuid類的程式passwd,當普通用戶修改只有root才能操作的shadow文件,臨時提高許可權。 GID:進程的組ID,場景:當進程需要創建一個新文件時,將採用該進程的GID。 EGID:進程的有效組ID。 謙讓度:與優先順序相反。 /PROC:一個特殊的“文件系統”目錄,存放內核有關係統狀態的各種有意義信息。     第8章 網路管理 8.1 文件 本地dns信息保存到/etc/hosts 。     第9章 傳輸文件 9.1 NFS NFS目前只用於Linux和UNIX主機間共用文件系統,首先要求對方主機開啟NFS伺服器,就可以掛載到本地 。 #掛載NFS共用目錄 mount -o rw,hard,intr,bg IP或host@path localpath/ #查看伺服器共用目錄 showmount -e IP或主機 #卸載NFS共用目錄 umount localpath/   9.2 Samba SMB:Server Message Block ,伺服器消息塊協議。微軟和英特爾共同研發的windows的共用文件系統協議。 CIFS:Common Internet File System , 公共Internet文件系統協議,是SMB的升級版本。 Samba:1991年澳大利亞人用逆向工程實行的CIFS協議。   Samba包含一個服務端程式和多個客戶端程式。安裝在Linux的服務端向windows提供共用,windows不用安裝任何工具。客戶端程式用於獲取windows的共用內容。 命令:smbtree,nmblookup,smbclient,smbmount,mount.cifs 。   9.3 FTP ftp:linux自帶的一個命令行的FTP工具,採用不加密傳輸方式,格式:ftp host|ip [port] 。 ftp>? 登錄後,用?列出所有ftp命令。 put 上傳文件,get 下載文件,cd,ls,pwd,mkdir,rm,quit等。   9.4 sftp和scp sftp:基於SSH的文件傳輸,首先確保遠程主機開啟了SSH守護進程,格式:sftp user@host|ip [port] 。 scp:基於SSH的文件複製,格式:scp user@host|ip:path localpath/ 。     第10章 遠程登錄 10.1 SSH telnet:採用明文口令,已廢棄。 SSH:secure shell,安全的shell。SSH會對用戶身份進行驗證,並加密兩台主機的通信。商業版本為SSH2。開源社區版本是OpenSSH,由FreeBSD負責維護。啟動SSH伺服器命令 /etc/init.d/ssh start 。 ssh -l user -p 22 ip|host #ssh登錄。 exit #ssh退出。   使用SSH秘鑰,客戶端使用rsa私鑰,服務端用公鑰驗簽。 ssh-keygen -t rsa #生成rsa密鑰對,id_rsa和id_rsa_pub兩個文件自動放到~/.ssh/目錄下。 ssh -l user2 host|ip #登錄到user2 mkdir .ssh chmod 700 .ssh exit scp ~/.ssh/id_rsa_pub user@host|ip:/home/user2/.ssh/authorized_keys #拷貝公鑰到伺服器登錄用戶名下。   10.2 VNC VNC:Virtual Network Computing,虛擬網路計算,用於圖形化的遠程登錄。要求伺服器端運行有X視窗系統,需要先用vncserver命令配置遠程訪問密碼。。 vncviewer是一款跨平臺的VNC客戶端工具,   10.3 跨平臺登錄 windows登錄linux:命令行用putty,圖形化用vncviewer。 linux登錄windows:命令行用rdesktop,圖形化用vnc(windows需裝vnsserver)。     第11章 Linux編程 11.1 編輯器 vim:vi的增強版本。分為插入和命令兩種模式。格式:vim file。 emacs:類似快捷方式,幾乎等價於一個操作系統,可以打開後完成所有工作,直到關機離開。 圖形化編輯器:gedit在gnome下,kate在KDE下。   11.2 gcc和gdb gcc:GUN Compiler Collection,可以編譯C、C++、OC、Java等語言。 g++:編譯C++時,可以完成編譯和連接,而gcc不能自動和cpp使用的庫連接。 gdb:程式調試工具。   11.3 常用shell命令 cut -c3-6 file #提取每一行的第3~6位置的字元,首字元位置從1開始。 cut -d" " -f2 file #提取每一行按空格分割的第2個欄位,沒有d,則預設TAB為分隔符。 sort -k2 -r file #按第2個欄位倒序排序。 uniq #從已排好序的輸入中刪除重覆行,必須在輸入已排序時才能正確工作。 source file #強行讓一個腳本文件影響其父shell環境。 export key=value #讓腳本可以影響其子shell環境。   11.4 個性化設置 alias ll='ls -l' #創建命令的別名。 ~/.bashrc文件是一個shell腳本,用戶登錄後自動執行。修改後$source .bashrc 立即生效。 /etc/bash.bashrc文件是全局定製shell。     第三篇 伺服器配置篇   第12章 伺服器基礎知識 12.1 系統引導 按下電源後啟動過程如下: ①執行存儲在ROM中的BIOS代碼,目的:根據BIOS設置來獲取引導設備位置。 ②載入引導設備開頭512個位元組段的MBR(Master Boot Record,主引導記錄),目的:根據MBR內容來獲取“引導載入程式”的位置,即Boot Loader,linux最著名的引導載入程式就是Grub。 ③載入並執行引導載入程式Grub,Grub負責載入操作系統內核。 ④Grub載入並初始化Linux內核, ⑤內核配置並檢測硬體設備。 ⑥內核創建自發進程。該進程只執行最基本的硬體操作和調度。 ⑦由用戶決定是否進入手工引導模式 ⑧由init進程執行系統啟動腳本。創建用戶級操作的進程最後都被內核下放給init進程完成。 ⑨進入多用戶模式。   12.2 init進程和運行級 幾乎所有的進程都是由init創建的。init的配置文件為/etc/inittab。 init有7個運行級,預設是5,伺服器設置為3。 0 系統關閉,1或S 單用戶模式,2 功能受限的多用戶模式,3 完整的多用戶模式,4 保留自定義,5 多用戶模式,運行X視窗系統,6 重新啟動。 telinit 6 #強制系統進入某個運行級,此處為重啟。 /etc/init.d/rc腳本,根據傳入運行級參數查找對應目錄,執行其中的腳本。 /etc/rc[0-6S].d目錄,保存各運行級腳本。 /etc/init.d,伺服器守護進程的啟動腳本全部位於該目錄下。   12.3 守護進程 守護進程daemon是一類在後臺運行的特殊進程。init是系統第一個啟動、也是最重要的守護進程。 守護進程兩種運行方式:standalone模式和inetd/xinetd模式。 standalone模式:隨系統啟動而啟動,並持續在後臺監聽連接請求,缺點:“沒有事做”的守護進程會大量消耗系統資源。 inetd/xinetd模式:接管其他守護進程使用的網路埠,在監聽到連接請求後啟動相應守護進程,建立到指定埠的IO通道,完成任務後再關閉守護進程。缺點:對於高併發的連接請求,頻繁啟動關閉守護進程會很糟糕。 /etc/xinetd.conf 配置文件,/etc/xinetd.d目錄保存要添加的守護進程服務。     第13章 伺服器搭建 13.1 FTP伺服器 vsftpd:一款安全性較高的FTP伺服器程式,ftp伺服器應儘量使用inetd/xinetd方式運行。缺點:使用明文口令。 FTP兩種連接模式 主動連接:預設21和20埠,21埠處理客戶端的命令,20埠文件傳輸。 被動連接:21埠和大於1024的非特權埠,21埠處理命令,另一個文件傳輸。   /etc/init.d/vsftpd start|stop|restart #啟動ftp服務   13.2 NFS NFS:Network File System,網路文件系統,基於伺服器/客戶機架構,需要安裝nfs-common,nfs-kernel-server軟體包。NFSv3協議增加非同步寫操作功能,但為無狀態不支持文件上鎖功能。NFSv4協議有狀態,增加鎖、支持windows客戶機、更高性能。 /etc/exports:NFS配置文件,用來設置NFS伺服器的共用文件列表。用exportfs -a使改動生效。showmount查看掛載情況。 NFS使用基於TCP協議的RPC作為傳輸協議。應該使用防火牆、壓制root和匿名映射等方法增加NFS伺服器安全性。 nfsstat -s #監視NFS伺服器相關信息。 nfsstat -c #監視NFS客戶機相關信息。     第三篇 系統安全篇   第14章 任務計劃cron 14.1 crontab /etc/crontab:全局任務計劃配置文件,格式為:分鐘 小時 日 月 星期 執行用戶 (執行命令) 。“*”為不限,“-”為連續整數區間,“,”為離散整數。 /etc/init.d/cron restart|start|stop:cron守護進程的啟動腳本。 /var/spool/cron/username.cron:用戶個性化cron配置文件。     第15章 防火牆iptables 15.1 iptables iptables是一種典型的包過濾防火牆。通過檢測到達的數據包頭中的信息,如:目的地址,埠,協議號等,來確定哪些數據包可以通過。 chain:鏈,一條防火牆規則。 table:表,一組功能相似的chain的集合。iptables預設表是filter(過濾器),其中預設包含3條鏈:FORWARD(轉發),INPUT(發入本機),OUTPUT(本機發出)。其他表還有nat和mangle兩個表。nat表用於網路地址轉換NAT,mangle則用於修改除了NAT和包過濾之外的網路包。   15.2 nmap nmap用於掃描一組主機的網路埠。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文目錄:1.vpn概述 1.1 vpn應用場景 1.2 隧道協議 1.3 SSL VPN和IPSEC VPN2.openvpn搭建client-to-site的vpn 2.1 安裝lzo和openvpn 2.2 創建CA和SSL證書 2.3 配置服務端 2.4 配置客戶端 2.5 查看vpn的連接 ...
  • 歸檔(tar) 將許多文件一起保存至一個單獨的磁帶或磁碟歸檔,並能從歸檔中單獨還原所需文件。歸檔不是壓縮!!!所謂歸檔,就是將一些文件歸到一起,並沒有對其進行壓縮的操作。 -c:創建歸檔文件 .tar -f:表示使用歸檔文件 -j:調用bzip2程式進行壓縮或解壓 用來壓縮的選項 -z:調用gzip ...
  • 前面小Alan給大家說了jdk的安裝,這篇跟大家聊聊redis非關係型資料庫在Linux伺服器的安裝。 redis簡單介紹 REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。 Redis是一個開源的使用AN ...
  • 原文鏈接:http://blog.csdn.net/qq_38646470/article/details/79564392 符號表示 和管道特別形象。 作用: & 160;& 160;& 160;& 160;管道是Linux中很重要的一種通信方式,是把一個程式的輸出直接連接到另一個程式的輸入,常說 ...
  • 1.將iso鏡像文件上傳到linux系統。註意要將文件放在合適的目錄下,因為後面機器重啟時還要自動掛載,所以此次掛載成功之後該文件也不要刪除。 2.將iso光碟掛載到/mnt/iso目錄下。 (1)先創建掛載的目標目錄/mnt/iso (2)接著使用mount -o loop /data/iso/r ...
  • 早上群上討論了一下systemd的作用,還導致了一個人的直接退群,出於求知心理,搜索了一些systemd,對此也作出了一些相應的整理; 一、systemd的誕生: 學習嵌入式bootloader與kernel銜接的時候,就入門了init進程;init進程也就是系統的第一個進程,PID號為1; ini ...
  • 在同一ip下添加多個功能變數名稱站點! 1.查看ip 命令:ifconfig 2.添加功能變數名稱 命令:vi /etc/hosts 輸入功能變數名稱:如 192.168.160.127 www.test.com 192.168.160.127 www.test2.com 3.創建要配置站點的文件夾及文件 .var/www ...
  • 本文目錄:1.簡介2.安裝heartbeat 2.1 編譯安裝Heartbeat3.heartbeat相關配置文件 3.1 配置文件ha.cf 3.2 配置文件authkeys 3.3 配置文件haresources4.示例:heartbeat為httpd提供高可用服務 1.簡介 heartbeat ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...