Linux經常使用指令以及入門介紹

Linux - 穩定、安全、多併發

section1:

**內容介紹前端

***基礎:
    - 入門、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"
***"作中學"
***適當囫圇吞棗
***重點實際操做

section2:Linux基礎

** 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各個文件目錄下存放什麼內容,必須清楚知曉;

section3: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:顯示哪一個進程調用;

section4:RPM和YUM

**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;
相關文章
相關標籤/搜索