**內容介紹前端
***基礎: - 入門、vm和Linux安裝、目錄結構; - Linux Shortcut keys: -- CTRL+A/E行首行尾; -- ctrl+U/k:擦除光標到行首/行尾; -- CTRL+Y:回退擦除的文本; ***實際操做: - 遠程登陸(xshell xftp)|vi和vim編輯器|開機、重啓、用戶登陸註銷|用戶管理 - 實用指令|定時任務調度|磁盤分區、掛載|網絡配置|進程管理|RPM和YUM ***python定製 - python專業開發平臺Ubuntu、python開發環境、APT軟件管理和遠程登陸
**學習方向java
***Linux運維工程師 ***Linux嵌入式工程師-驅動開發 ***Linux下開發項目:Java、python、bigdata、PHP、c/c++
**應用領域python
***我的桌面領域 ***服務器領域 ***嵌入式領域
**進階之路mysql
***基本操做命令:文件操做(rm,mkdir,chmod,chown)、vi/vim使用、Linux用戶管理 ***linux各類配置:環境變量、網絡配置、服務配置; ***搭建相關語言的開發環境(java、python); ***shell腳本編寫,Linux服務器維護;[必會] ***安全設置,防止攻擊,保障運行,系統調優;√ ***深刻了解Linux系統[對內核有研究],熟練大型網站應用架構組成,熟悉各環節的部署和維護;√
**學習方法linux
***高效愉快學習; ***先總體框架,再細節; ***指令; ***"know how,know why" ***"作中學" ***適當囫圇吞棗 ***重點實際操做
** Linux介紹c++
***操做系統,免費,開源,安全,高效,穩定,處理高併發強悍,企業級項目部署到Linux/Unix服務器運行; ***創始人:Linus Torvalds - Linux kernel;吉祥物:企鵝 - Tux; ***主要發行版:內核基礎上包裝定製,Centos、Redhat[Redhat公司]|Ubuntu|Suse、openSuse[歐洲]|紅旗Linux ***主要操做系統:Windows、Android、iOS、macOS、車載系統、Linux等 ***Linux和Unix: - Ken Tompson|Dennis Richres 貝爾實驗室 > B語言|C語言|Unix > Minix > Linux[GNU計劃的一部分] - Richard Stallman:GNU計劃 --- 人機互動 > application > GNU shell > OS[linux kernel] > hardware - Linux:GNU/Linux < Minix
**VM和Linux(CentOS)的安裝sql
*** virtual machine,vm12; *** Linux(CentOS、Ubuntu); *** 原理:Windows[local] > VM > CentOS[文件,可移植] - vm:經過VM建立一個虛擬機空間(CentOS);再空間內安裝操做系統; - vm installation:去BIOS修改設置開啓虛擬化設備支持(F2/F10);安裝vm; - centos installation:相關軟件和服務選擇,例如開發工具、辦公套件等; - booting > kdump:內核崩潰轉儲機制 - terminal and link network; *** Network conf: - 橋接:直連物理網絡,Linux能夠和其餘的系統通訊,可是可能形成IP衝突; - NAT:網絡地址轉換方式;Linux能夠訪問外網,不會形成IP衝突;可是同一網絡內的Windows沒法訪問到vm; - 主機模式:Linux是一個獨立的主機,不能訪問外網; ***vmtools:宿主機和vm之間直接複製粘貼命令;設置共享文件夾;
**linux目錄結構:shell
***windows: 平行的C盤、D盤 ***Linux:/根目錄 > boot/;bin/;home/;root/; - 只有一個根,採用層級式的樹狀目錄結構; - 「在Linux世界中,一切皆文件」;包括硬件管理:例如:/dev管理設備;/media;etc/配置文件;bin/命令;home/家;lib/動態庫; *** Linux的目錄中有且僅有一個根目錄:/ *** Linux各個目錄存放的內容是提早規劃好的,不能亂髮文件; *** Linux是以文件的形式管理咱們的設備,所以Linux系統,一切皆文件; *** Linux各個文件目錄下存放什麼內容,必須清楚知曉;
**sshd服務:數據庫
***遠程鏈接:xshell;mobaxterm; ***遠程文件傳輸:sftp; - scp; ***前提:sshd服務開啓 - sudo apt-get update - sudo apt-get install openssh-server - sudo /etc/init.d/ssh start - sudo service ssh status
**ftp服務:基於Windows平臺的SFTP、FTP文件傳輸工具;ubuntu
- xftp:sftp協議;port:22;
**vi/vim編譯器
*** vi:全部Linux系統內建的文本編譯器; *** vim:程序編輯能力,vi的加強版本;字體顏色、代碼補全; *** 模式:通常模式、插入模式、命令行模式 *** 快捷鍵: - copy/paste:yy/p,5yy; - delete: dd,5dd; - find:/hello > n; - line num: :set nu; - 文檔首行/尾行:通常模式下執行gg/G; - 撤銷:通常模式下輸入u; - 編輯:光標移動到指定行:1,:set nu;2,input 20;3,shift + g;
**開機/重啓/同步/用戶登陸註銷
*** shutdown: - shutdown -h now:當即關機; - shutdown -h 1:1分鐘後關機; - shutdown -r now:當即重啓; *** halt:關機; *** reboot:重啓計算機; *** sync:關機或重啓以前運行,把內存的數據同步到磁盤; *** 登陸儘可能少用root帳號,權限不足時用「su - username」切換 *** logout:註銷用戶;圖形運行級別無效,在「運行級別」3一下有效;
**用戶管理
***Linux用戶管理規則: - Linux:多用戶多任務的操做系統;任何一個要使用系統資源的用戶,都必須向系統管理員申請一個帳號,而後以我的帳號進入系統; - 用戶、用戶組;每一個用戶至少屬於一個組; - 用戶家目錄:/home/該目錄下有各個建立的用戶對應的家目錄,用戶登陸時自動進入到本身的家目錄; *** 添加用戶:useradd [選項] username; - 建立用戶成功後,自動建立和用戶同名的家目錄; - useradd -d 指定[目錄] username; - Ubuntu系統建立用戶時必須帶-m參數,不然不會建立用戶家目錄; *** 設置/修改用戶密碼: - passwd username:; *** 刪除用戶: - userdel username:刪除用戶,但保留家目錄; - userdel -r username刪除用戶已經用戶主目錄; - 工做中通常保留家目錄,可能存在代碼或文檔; *** 查詢用戶信息: - id username; - uid=0(root) gid=0(root) groups=0(root) - 用戶id 用戶組id 組名稱 *** 切換用戶:su - username - 高權限用戶切換到低權限用戶,不須要密碼;反之須要; - 返回原用戶,exit; *** 查看當前用戶/登陸用戶 - whoami *** 用戶組 - 相似於角色,系統可對擁有共性的多個用戶進行管理 - groupadd 組名:增長組; - groupdel 組名:刪除組; - useradd -g 用戶組 用戶名:增長用戶時直接加上組; -- useradd -m -g wds zwj [ubuntu] - usermod -g 用戶組 用戶名:修改用戶組; *** 用戶和組相關的權限: - /etc/passwd:用戶配置文件,用戶信息; - /etc/group:組配置文件,組信息; - /etc/shadow:口令配置文庫(密碼和登陸信息,加密)
** 實用指令:
*** 運行級別 - linux系統共7個運行級別:0-關機,1-單用戶(找回丟失密碼),2-多用戶無網絡服務;3-多用戶網絡服務;4-保留級別;5-圖形界面;6-重啓; - 經常使用運行級別:3和5; - 系統的運行級別配置文件:/etc/inittab [Ubuntu無該文件] - 切換到指定運行級別的指令: init [0/1/2/3/4/5/6] *** 如何找回root密碼? - 進入到單用戶模式,而後修改root密碼;由於進入單用戶模式,root不須要密碼就能夠登陸。 - sudo passwd root > sudo 輸入當前用戶密碼 *** 幫助指令:man/--help - man: [命令或配置文件]; - help:help cd; *** 文件目錄類: - cd:change directory > cd ~ - pwd:當前工做目錄的絕對路徑 - ls/ll:ls -a/-l - mkdir/rmdir[空目錄]/rm - r:-p遞歸建立/-rf:非空目錄強制刪除 - touch/cp:建立空文件/拷貝(-r 遞歸cp) > \cp -r:強制覆蓋 - mv/rm:移動或重命名文件/刪除 > -r[遞歸]\-f[強制] - 絕對路徑/相對路徑:從/home根目錄開始定位/從工做目錄定位須要去的目錄 - cat/more/less: -- cat:查看文件[不能修改],-n:顯示行號;> 配合 | more:分頁顯示;> cat -n test.txt | more -- more:文本過濾器,全屏分頁顯示文本內容;> space/enter/q/ctrl+F/ctrl+B/=/ -- less:分屏查看文件內容,比more強大;根據顯示須要加載內容,對大文件比較友好;-N/pgup/pgdn; - > / >>:輸出重定向[覆蓋]/輸出追加劇定向 - echo/head/tail: --echo:echo $PATH;echo "hello"; --head:head -n 5 test/log.txt;默認顯示10行; --tail: -n 指定尾部5行內容;-f:實時追蹤文檔的更新; - ln:軟連接,相似於Windows快捷方式;> ln -s [源文件或目錄] [軟連接名] - history:查看/執行歷史指令 -- history 10;!178:執行歷史編號爲178的歷史指令; *** 時間日期類 - date: -- 查看日期:date "+%Y/%m/%d/%Y-%m-%d %H:%M:%S" -- 設置日期:date -s 字符串時間 > "2018-7-28 16:36:45" - cal: --cal 2020 *** 搜索查找類 - find: find [搜索範圍] [選項] > -name/-user/-size:-size +20M(-20k/=20k) - locate:速度快,使用事先創建的系統中全部文件和路徑的locate數據庫實現快速定位文件,無須遍歷整個文件系統;爲了保證準確率,必須按期更新locate時刻; -- 第一次執行前,必須使用updatedb指令建立locate數據庫; -- locate 路徑 文件 - grep和|: -- |:將前面指令的結果輸出傳遞給後面的指令; -- grep [-n行號/-i忽略大小寫] 查找內容 源文件;> cat /home/lindToScott/test/log.txt | grep -n "2019"; *** 壓縮和解壓類: -gzip/gunzip: -- gizp:壓縮文件,源文件消失;test.txt => test.txt.gz -- gunzip:解壓縮 --zip/unzip: -- zip [選項-r] xxx.zip 路徑或文件 -- unzip:-d - tar:打包指令 -- tar -zcvf xxx.tar.gz 文件或目錄 -- tar -zxvf tar包 -C 目標目錄 *** 組管理和權限管理 - Linux中每一個用戶必須屬於一個組;每一個文件有全部者、所在組、其餘組的概念; - 文件:全部者[通常是文件的建立者]、所在組、其餘組 - groupadd police > useradd -g police -m tom > passwd tom - 修改文件全部者:su - root > chown user_name file_name - 修改文件所在組:chgrp group_name file_name - 其餘組:除文件的全部者和所在組的用戶外,系統的其餘用戶都是文件的其餘組; -- usermod -g group_name user_name -- usermod -d 目錄名 用戶名 改變該該用戶登陸的初始目錄 - chmod: -- l rwx rwx rwx 1 root root 16 7月 28 15:27 lindToScott -> /home/scott/code/ >> l:文件類型:-[普通文件]/d[文件夾]/l[軟連接]/c[字符設備]/b[塊文件,硬盤] >> u:文件全部者權限;g:文件所在組的用戶權限;o:文件其餘組用戶的權限;a:全部用戶 >> 1若是是文件,表示硬連接數,若是是目錄,表示該目錄的子目錄數; >> 文件大小 >> 文件最後修改時間 -- 目錄文件大小所有是4096 > chmod u+[-]r/w/e > chmod u=rwx,g=rx,o=r abc > 4 2 1 - 修改文件全部者 -- chown newowner file_name -- chown newowner:newgroup file_name -- chown -R user_name directory_name:目錄,遞歸更高子文件或子目錄 - 修改文件所在組:chgrp -- chgrp [-R] newgroup file_name *** crond任務調度 - crontab:進行定時任務的設置;系統在某個時間執行特定的命令或者程序: - 任務調度分類: -- 系統工做:某些重要的工做周而復始的執行,如病毒掃描; -- 個別用戶工做:如MySQL數據庫備份; - crontab: -- -e:編輯crontab定時任務 >> CTRL+O:寫入;> enter > CTRL+x退出 -- -i:查詢crontab任務 -- -r:刪除當前用戶全部的crontab任務 r=remove -- -l:列出當前有哪些任務調度 -- service crond restart:重啓任務調度 - 參數說明 -- * * * * *:分、時、天、月、周; -- *:一小時中每分鐘執行一次; -- ,: 0 8,12,16 * * * > 天天的8點0分、12點0分、16點0分執行一次; -- -:0 5 * * 1-6 > 週一到週六五點0分執行一次; -- */n:每隔n分鐘/時/天/月/周執行一次;
** 磁盤分區和掛載
*** 分區 - 分區方式: -- 1.mbr分區: --- 最多支持四個主分區; --- 系統只能安裝在主分區; --- 擴展分區要佔一個主分區; --- MBR最大支持2TB,但擁有最好的兼容性; -- 2.gtp分區 --- 支持無限多個主分區(但操做系統限制,Windows下最多128個分區); --- 最大支持18EB的大容量(EB=1024PB,PB=1024TB); --- windows7 64位之後支持gtp; - linux分區 -- 不管幾個分區,只有一個根目錄,一個獨立且惟一的文件結構;Linux每一個分區都是用來組成整個文件系統的一部分; -- Linux 」載入「的處理方法,整個文件系統包含了一整套的文件和目錄,且將一個分區和一個目錄聯繫起來; - mount/unmount -- 磁盤[硬盤] > 分區 --- mount/unmount > Linux文件系統 -- linux對硬盤的分區如何標識? --- Linux硬盤分IDE硬盤和SCSI硬盤,目前基本都是SCSI硬盤; --- IDE:驅動器標識符爲"hdx~"; "並口"; > hda3 = 第一個(a)IDE硬盤的第三個分區; --- SCSI:"sdx~"; "串口"; *** lsblk -f:查看系統的分區和掛載的狀況 *** 如何給vm增長一塊硬盤?並掛載到Linux的文件結構中? - 虛擬機添加硬盤; vm >> settings - 分區; >> fdisk /dev/sdb >> 按照提示操做 - 格式化; >> mkfs -t ext4 /dev/sdb1 - 掛載; >> mkdir /home/newdisk >> /home/newdis [mount 設備名 掛載點] - 設置能夠自動掛載;>> vim /etc/fstab >> add dev/sdb1相關信息 >> mount -a >> [不執行該步驟,重啓後,掛載關係消失] - 解除掛載關係: umount /dev/sdb1 / umount /home/newdisk *** 磁盤狀況查詢 - 查詢系統總體磁盤使用狀況:df -h - 查詢指定目錄的磁盤佔用狀況:du -h /目錄 >> du -ach --max-depth=1 目錄 - 磁盤狀況-實用指令: -- 統計文件夾下文件的個數:ls -l 目錄 | grep "^-" | wc[統計] -l -- 統計目錄的個數:ls -l | grep "^d" | wc -l -- 統計文件夾下文件的個數,包含子文件夾:ls -lR | grep "^-" | wc -l -R:遞歸 -- 統計目錄的個數,包含子目錄:ls -lR | grep "^d" | wc -l -- 樹狀顯示目錄結構:tree >> CentOS須要安裝:yum install tree
** 網絡配置
*** NAT模式網絡環境: - *** 橋接模式:爲何Linux ping不通Windows的ip? - 查看使用的網卡VMnet8/VMnet1; *** 查看網絡IP和網關 - vm查看虛擬網絡編輯器 - 修改IP地址(修改虛擬網絡的ip) - 查看網關 *** linux網絡環境配置 - 經過系統的網絡鏈接設置網絡ip,linux啓動後自動獲取IP,可是每次自動獲取的IP可能不同,不適用於服務器. - 指定固定ip:直接修改配置文件來指定IP,並能夠鏈接到外網. -- CentOS: vim /etc/sysconfig/network-scripts/ifcfg-eth0; -- Ubuntu:/etc/network/interfaces; -- 將IP地址配置爲靜態的;
**進程管理
*** 進程介紹: - linux中每一個執行的程序都成爲一個進程;每一個進程都分配一個id號; - 每一個進程都對應一個父進程,而這個父進程能夠複製多個子進程; - 每一個進程均可能以2種方式存在,前臺和後臺 - 用戶屏幕是否可操做; - 通常系統的服務都之後臺進程的方式存在,通常常駐系統中; *** ps: PID、TTY、TIME、CMD - ps -a:顯示當前終端的全部進程信息; - ps -u: 以用戶的格式顯示進程信息; - ps -x: 顯示後臺進程運行的參數; - ps -ef|more: 查看父進程; *** kill(pid)/killall(pname) - -9:強制 *** pstree: -p | -u > 查看進程樹 *** 服務(service)管理 - service本質就是進程,運行在後臺,一般監聽某端口,等待其餘程序的請求,如mysql; - 一般稱爲守護進程,如防火牆:iptables - service 服務名 start|stop|restart|reload|status ||| systemctl > chkconfig - telnet:檢查Linux的某個端口是否在監聽,而且能夠訪問; > telnet ip port - setup > 系統服務;||| /etc/init.d/; - 服務運行級別[runlevel]:開機>BIOS>/boot>init進程1>運行級別>運行級對應的服務; - chkconfig:能夠給每一個服務的各個運行級別設置自啓動/關閉; -- chkconfig --list|grep xxx; -- chkconfig 服務名 --list; -- chkconfig --level 5 服務名 on/off ***動態監控進程:top *** 監控網絡狀態:netstat -an:按順序排列輸出;-p:顯示哪一個進程調用;
**rpm:redhat package manager,軟件包管理工具; - suse|centos|redhat使用;
*** centos:RPM包;ubuntu:deb包; *** rpm -qa|grep firefox; *** rpm -qi firefox; *** rpm -ql firefox; *** rpm -qf /etc/passwd; *** rpm -e rpm_name:刪除; *** rpm -ivh rpm_name:安裝;
**yum:
*** shell前端軟件包管理器,基於rpm包管理,可以從指定服務器自動下載日拍賣包並安裝,能夠自動處理依賴關係; *** 前提:聯網; *** yum list|grep xxx:軟件列表; *** yum install xxx:安裝; *** yum -e xxx:卸載;
**apt:Advanced Packaging Tool
***軟件管理:軟件包的安裝、刪除、清理等; *** /etc/apt/sources.list:指定官方的軟件倉庫地址; *** echo '' > sources.list:清空文件 *** example: - sudo apt-get remove vim - sudo apt-get install vim - sudo apt-cache show vim - sudo apt-get update *** ubuntu默認沒有安裝sshd服務: - sudo apt-get install openssh-server; - service sshd restart;