1. 程式人生 > >Linux伺服器開發一(基礎)

Linux伺服器開發一(基礎)

Linux

  • 1、Linux介紹
    • Linux是類Unix計算機作業系統的統稱。
    • Linux作業系統的核心的名字也是“Linux”。
    • Linux這個詞本身只表示Linux核心,但在實際上人們已經習慣了用Linux來形容整個基於Linux核心的系統。
    • Linux是由芬蘭大學Linus Torvalds於1991年編寫的。
  • 2、Linux發行版組成
    • Linux核心
    • 應用軟體
      • 一些GNU程式庫和工具
        • emacs
        • GCC
        • GNOME
      • 命令列shell
      • 圖形桌面環境
        • KDE(qt編寫)
        • GNOME(GTK編寫)
        • Unity
      • 一些辦公軟體
        • OpenOffice
      • 編譯器
        • gcc
        • g++
      • 文字編輯器到科學工具的應用軟體
        • vi
        • gedit
  • 3、Linux版本
    • 商業公司維護的發行版本
      • RedHat(REHL)包管理方式採用基於RPM包的YUM包管理方式
    • 社群組織維護的發行版本
      • Debian 包管理方式採用的是:apt-get/dpkg xxx.deb
    • RedHat系列
      • RHEL(RedHat Enterprice Linux, 也就是所謂的RedHat Advance Server收費版本),穩定。
      • CentOS(RHEL的社群克隆版本,免費),穩定。
      • FedoraCore(由原來的RedHat桌面版本發展而來,免費版本),穩定性差,最好只用於桌面應用。
    • Debian系列
      • Debian
      • Ubuntu
        • 命名規則
          • 前兩位數字:發行時的年份的最後兩位數字
          • 後兩位數字:發行的月份
        • 版本
          • 桌面版(Desktop):至少三年的技術支援
          • 伺服器版(Server):至少五年的技術支援
          • LTS版本(Long Term Support)
        • 版本釋出頻率,一年兩次
          • 主版本號(年份)
            • 單數年:短期支援版
            • 雙數年:長期支援版(LTS)
          • 副版本號(月份)
            • 四月份(xx.04):該年度的穩定版
            • 十月份(xx.10):該年度的測試版

學習方法

  • 要求
    • 記好課堂筆記
    • 只聽不練學不會Linux,多動手實踐
    • 課上跟上思路,簡單的命令跟著敲,多思考
    • 分清主次,重點記憶重要命令
  • 資料
    • Linux自帶幫助文件 - man
    • 鳥哥和私房菜

一、檔案和目錄操作

  • 1、基本的shell操作
    • shell命令列快捷鍵

      • 編輯命令

        Ctrl + a          移到命令列首, ahead,與home鍵功能相同
        Ctrl + e          移到命令列尾, end, 與end鍵功能相同
        Ctrl + f          按字元前移(右向), forward, 與方向鍵left功能相同
        Ctrl + b          按字元後移(左向), back, 與方向鍵right功能相同
        Alt  + f          按單詞前移(右向)
        Alt  + b          按單詞後移(左向)
        Ctrl + xx         在命令列首和游標之間移動
        Ctrl + u          從游標處刪除至命令列首
        Ctrl + k          從游標處刪除至命令列尾
        Ctrl + w          從游標處刪除至字首
        Alt  + d          從游標處刪除至字尾
        Ctrl + d          刪除游標處的字元, 與delete鍵功能相同
        Ctrl + h          刪除游標前的字元, 與backspace鍵功能相同
        Ctrl + y          貼上至游標後, yank
        Alt  + c          從游標處更改為首字母大寫的單詞
        Alt  + u          從游標處更改為全部大寫的單詞, uppercase
        Alt  + l          從游標處更改為全部小寫的單詞, lowercase
        Ctrl + t          交換游標處和之前的字元
        Alt  + t          交換游標處和之前的單詞
        Alt  + Backspace  與 Ctrl + w 類似,分隔符有些差別
      • 重新執行命令

        Ctrl + r          逆向搜尋命令歷史
        Ctrl + g          從歷史搜尋模式退出
        Ctrl + p          歷史中的上一條命令, previous,與方向鍵up功能相同
        Ctrl + n          歷史中的下一條命令, next, 與方向鍵down功能相同
        Alt  + .          使用上一條命令的最後一個引數
      • 控制命令

        Ctrl + l          清屏, clear
        Ctrl + o          執行當前命令,並選擇上一條命令
        Ctrl + s          阻止螢幕輸出
        Ctrl + q          允許螢幕輸出
        Ctrl + c          終止命令
        Ctrl + z          掛起命令
      • Bang (!) 命令

        !!                執行上一條命令
        !blah             執行最近的以 blah 開頭的命令,如 !ls
        !blah:p           僅列印輸出,而不執行
        !$                上一條命令的最後一個引數,與 Alt + . 相同
        !$:p              列印輸出 !$ 的內容
        !*                上一條命令的所有引數
        !*:p              列印輸出 !* 的內容
        ^blah             刪除上一條命令中的 blah
        ^blah^foo         將上一條命令中的 blah 替換為 foo
        ^blah^foo^        將上一條命令中所有的 blah 都替換為 foo
    • 虛擬終端(VT)
      • 簡介

        英文:Virtual Terminal
        解釋:連線在遠地的分時共用計算機系統的遠端終端,它具有使使用者感到是在計算機旁使用終端的功能。
      • 常用工具

        XManager
        Putty
        SecureCRT
    • 命令和路徑補齊

      tab鍵按一次    當只有一個匹配時,自動補全命令或路徑
      tab鍵按兩次    當有多個匹配時,顯示命令或路徑列表
  • 2、Linux 標準目錄結構

    初學Linux,首先需要弄清Linux 標準目錄結構:

    /
        root --- 啟動Linux時使用的一些核心檔案。如作業系統核心、載入程式Grub等。
        home --- 儲存普通使用者的個人檔案
            ftp --- 使用者所有服務
            httpd
            samba
            user1
            user2
        bin --- 系統啟動時需要的執行檔案(二進位制)
        sbin --- 可執行程式的目錄,但大多存放涉及系統管理的命令。只有root許可權才能執行
        proc --- 虛擬,存在linux核心映象;儲存所有核心引數以及系統配置資訊
            1 --- 程序編號
        usr --- 使用者目錄,存放使用者級的檔案
            bin --- 幾乎所有使用者所用命令,另外存在與/bin,/usr/local/bin
            sbin --- 系統管理員命令,與使用者相關,例如,大部分伺服器程式
            include --- 存放C/C++標頭檔案的目錄
            lib --- 固定的程式資料
            local --- 本地安裝軟體儲存位置
            man --- 手工生成的目錄
            info --- 資訊文件
            doc --- 不同包文件資訊
            tmp
            X11R6 ---  該目錄用於儲存執行X-Window所需的所有檔案。該目錄中還包含用於執行GUI要的配置檔案和二進位制檔案。
            X386 --- 功能同X11R6,X11 發行版5 的系統檔案
        boot --- 引導載入器所需檔案,系統所需圖片保存於此
        lib --- 根檔案系統目錄下程式和核心模組的公共庫
            modules --- 可載入模組,系統崩潰後重啟所需模組
        dev --- 裝置檔案目錄
        etc --- 配置檔案
            skel --- home目錄建立,該目錄初始化
            sysconfig --- 網路,時間,鍵盤等配置目錄
        var
            file
            lib --- 該目錄下的檔案在系統執行時,會改變
            local --- 安裝在/usr/local的程式資料,變化的
            lock --- 檔案使用特定外設或檔案,為其上鎖,其他檔案暫時不能訪問
            log --- 記錄日誌
            run --- 系統執行合法資訊
            spool --- 印表機、郵件、代理伺服器等假離線目錄
            tmp
            catman --- 快取目錄
        mnt --- 臨時用於掛載檔案系統的地方。一般情況下這個目錄是空的。
                在我們將要掛載分割槽時在這個目錄下建立目錄,再將我們將要訪問的裝置掛載在這個目錄上,這樣我們就可訪問檔案了。
        tmp --- 臨時檔案目錄,系統啟動後的臨時檔案存放在/var/tmp
        lost+found --- 在檔案系統修復時恢復的檔案

    /

        根目錄,一般根目錄下只存放目錄,不要存放檔案。
        /etc、/bin、/dev、/lib、/sbin應該和根目錄放置在一個分割槽中。

    /bin, /usr/bin

        可執行二進位制檔案的目錄,如常用的命令ls、tar、mv、cat等。

    /boot

        放置linux系統啟動時用到的一些檔案。/boot/vmlinuz為linux的核心檔案,以及/boot/gurb。建議單獨分割槽,分割槽大小100M即可。

    /dev

        存放linux系統下的裝置檔案,訪問該目錄下某個檔案,相當於訪問某個裝置,常用的是掛載光碟機mount:
        /dev/cdrom、/mnt

    /etc

        系統配置檔案存放的目錄,不建議在此目錄下存放可執行檔案。
        重要的配置檔案有:/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
        修改配置檔案之前記得備份。
    
        注:/etc/X11存放與x windows有關的設定。

    /home

        系統預設的使用者家目錄,新增使用者賬號時,使用者的家目錄都存放在此目錄下。
        ~表示當前使用者的家目錄,~test表示使用者test的家目錄。
        建議單獨分割槽,並設定較大的磁碟空間,方便使用者存放資料。

    /lib,/usr/lib,/usr/local/lib

        系統使用的函式庫的目錄,程式在執行過程中,需要呼叫一些額外的引數時需要函式庫的協助,比較重要的目錄為/lib/modules。

    /lost+fount

        系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下,通常這個目錄會自動出現在裝置目錄下。
        如載入硬碟於/disk 中,此目錄下就會自動產生目錄/disk/lost+found

    /mnt,/media

        光碟預設掛載點,通常光碟掛載於/mnt/cdrom下,也不一定,可以選擇任意位置進行掛載。

    /opt

        給主機額外安裝軟體所擺放的目錄。
        如:FC4使用的Fedora 社群開發軟體,如果想要自行安裝新的KDE 桌面軟體,可以將該軟體安裝在該目錄下。
        以前的 Linux 系統中,習慣放置在 /usr/local 目錄下。

    /proc

        此目錄的資料都在記憶體中,如系統核心,外部裝置,網路狀態,由於資料都存放於記憶體中,所以不佔用磁碟空間。
        比較重要的目錄有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。

    /root

        系統管理員root的家目錄,系統第一個啟動的分割槽為/,所以最好將/root和/放置在一個分割槽下。

    /sbin,/usr/sbin,/usr/local/sbin

        放置系統管理員使用的可執行命令,如fdisk、shutdown、mount等。
        與/bin不同的是,這幾個目錄是給系統管理員root使用的命令,一般使用者只能"檢視"而不能設定和使用。

    /tmp

        一般使用者或正在執行的程式臨時存放檔案的目錄,任何人都可以訪問,重要資料不可放置在此目錄下。

    /srv

        服務啟動之後需要訪問的資料目錄,如www服務需要訪問的網頁資料存放在/srv/www內。

    /usr

        應用程式存放目錄。
        /usr/bin 存放應用程式。
        /usr/share 存放共享資料。
        /usr/lib 存放不能直接執行的,卻是許多程式執行所必需的一些函式庫檔案。
        /usr/local 存放軟體升級包。
        /usr/share/doc 系統說明檔案存放目錄。
        /usr/share/man 程式說明檔案存放目錄。
        使用 man ls時會查詢/usr/share/man/man1/ls.1.gz的內容。
        建議單獨分割槽,設定較大的磁碟空間。

    /var

        放置系統執行過程中經常變化的檔案。
        /var/log 隨時更改的日誌檔案。
        /var/log/message 所有的登入檔案存放目錄。
        /var/spool/mail 郵件存放的目錄。
        /var/run 程式或服務啟動後,其PID存放在該目錄下。
        建議單獨分割槽,設定較大的磁碟空間。
  • 3、檔案和目錄操作相關命令
    • 使用者目錄
      • 絕對路徑:從根目錄開始寫,如/usr/bin
      • 相對路徑:相對於當前的工作目錄而言
        • . 當前目錄
        • .. 當前目錄的上一級目錄
        • - 在臨近的兩個目錄直接切換
      • [email protected]:~#
        • root: 當前使用者名稱
        • @:at, 在
        • ubuntu:主機名
        • ~ : 當前使用者home目錄
        • #:超級使用者
        • $:普通使用者
    • ls

      ls -al
          -a, --all           不隱藏任何以. 開始的專案
          -l                  使用較長格式列出資訊
      
      -rw-r--r--  1 super root     3771 67  2016 .bashrc
      drwx------ 22 super root     4096 1215 08:02 .cache
      lrwxrwxrwx  1 super root       31 1123 07:42 .vimrc -> /home/super/.spf13-vim-3/.vimrc
      
      以最後一個為例:
      lrwxrwxrwx
      第1個字元:表示檔案型別
          -   普通檔案
          d   目錄
          l   連結符號
          b   塊裝置
          c   字元裝置
          s   socket檔案
          p   管道
      第2-4個字元:文件所有者許可權
      第5-7個字元:同組使用者許可權
      第8-10個字元:其他人許可權
      r: read 4
      w: write 2
      x: execute 1
      
      1               檔案的硬連結數
      super           該檔案或目錄的所有者
      root            該檔案或目錄所屬的組
      31              佔用的儲存空間
      1123 07:42   檔案最後建立或修改的時間
      .vimrc          檔名
    • cd

      cd ~        切換到使用者home目錄
      cd /        切換到根目錄
      cd          切換到使用者home目錄
      cd..        切換到上一級目錄
    • tree

      tree path   顯示指定路徑的目錄樹結構
    • 檔案或目錄顏色一般情況

      白色          普通檔案
      藍色          目錄
      綠色          可執行檔案
      紅色          壓縮檔案
      青色          連結檔案
      黃色          裝置檔案
      灰色          其他檔案
    • mkdir

      mkdir dirname               建立目錄。
      mkdir dir1/dir2/dir3 -p     按層次建立目錄。
    • rmdir

      rmdir dirname       目錄必須為空才能刪除,所以實際使用時不常用。
    • rm

      rm -rf dirname      遞迴強制刪除資料夾下的目錄和檔案,實際使用中常用。
      rm -ri dirname      遞迴刪除並提示使用者刪除了哪些目錄或檔案。
    • touch

      touch test.txt      建立檔案。
    • cp

      cp hello.c temp     在當前目錄下生成一個temp檔案,並把hello.c的內容寫入檔案。
                          如果temp不存在,則建立檔案;如果存在,則覆蓋已有檔案。
      
      cp mydir newdir -r  在當前目錄下生成一個newdir目錄,並把mydir目錄裡面的目錄或檔案拷貝過去。
                          如果目錄不存在,則建立;如果存在,則mydir目錄本身也拷貝到newdir目錄下。
    • cat

      cat test.txt        檢視檔案的內容,缺點內容太多時檢視困難。
    • more

      more stdio.h        分屏檢視檔案,Enter下翻一行,Space下翻一頁,缺點不能往回看。
    • less

      less stdio.h        分屏檢視檔案。比more更實用,可以來回翻頁。
                          ctrl + p    上翻一行
                          ctrl + n    下翻一行
                          ctrl + b    上翻一頁
                          ctrl + f    下翻一頁
                          q           退出
    • head

      head -5 stdio.h     檢視前五行內容,不加引數預設是10行。
    • tail

      tail -5 stdio.h     檢視後5行內容, 不加引數預設是10行。
    • mv

      mv test.c hello.c   移動到。多用於重新命名目錄或檔案。
    • ln

      ln -s ~/.vim/.vimrc .vimrc      建立軟連結,相當於windows下的快捷方式,可用於目錄或檔案。
                                      路徑要用絕對路徑,這樣軟連結拷貝到哪裡都是有效的。
                                      如果刪除原檔案,則軟連結失效。
      
      ln .vimrc .vimrc.hard           建立硬連結,只能用於檔案。不必使用絕對路徑。
                                      建立後生成的硬連結與原檔案引用同一個inode,硬連結本身不佔硬碟空間。
                                      如果刪除原檔案,硬連結仍然有效。
    • wc

      
                  
                 

      相關推薦

      Linux伺服器開發(基礎)

      Linux 1、Linux介紹 Linux是類Unix計算機作業系統的統稱。Linux作業系統的核心的名字也是“Linux”。Linux這個詞本身只表示Linux核心,但在實際上人們已經習慣了用Linux來形容整個基於Linux核心的系統。Linux是由芬蘭大學Linus Torvalds

      ssh連線上騰訊雲、華為雲Linux伺服器會就自動斷開

      客戶端向服務端傳送心跳 依賴 ssh 客戶端定時傳送心跳,putty、SecureCRT、XShell 都有這個功能。 Linux / Unix 下,編輯 ssh 配置檔案: # vim /etc/ssh/ssh_config 新增 ServerAliveInterval 20ServerAliveC

      Linux防火牆--iptables()基礎

      一.iptables 簡介       iptables防火牆是由Netfilter專案開發的,iptables提供了全面的協議狀態跟蹤、資料包的應用層檢查、速率限制、指定策略過濾等。而iptables使用Netfilter框架進行過濾。Netfilter本身不

      C++ Linux伺服器開發(1)——極速入門必備命令

      1.shell簡介 shell是運維和系統管理員操作Linux系統的首選,是一個命令直譯器 命令列---------------->解釋執行 命令列相關:        行首“$”或"#“---------------

      java伺服器開發()

      從零開始java伺服器開發之環境配置 1、安裝jdk並配置環境變數 - - -java執行環境 見:https://blog.csdn.net/u012934325/article/details/73441617 2、myeclipse安裝配置 - - -開發環境 見:

      Linux bash總結() 基礎部分(適合初學者學習和非初學者參考)

      歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯器進行了一些功能

      Linux伺服器開發/測試環境搭建流程

      1、MariaDB yum 安裝/初始化/授遠端許可權 yum安裝 進入目錄/etc/yum.repos.d/,建立MariaDB.repo,將以上內容Copy進去 執行以下命令 sudo yum install MariaDB-server MariaDB-clie

      動腦學院Linux伺服器開發學習資料

      Linux伺服器開發-深入理解檔案系統IO機制連結:https://pan.baidu.com/s/1zRja-YIrCwIB1WWU0iAV8w 密碼:ac3k老師帶你深入理解去中心化網路 連結:https://pan.baidu.com/s/1pMM0Swb 密碼:52n

      linux伺服器開發二(系統程式設計)--程序相關

      程序相關的概念 程式與程序 程式,是指編譯好的二進位制檔案,在磁碟上,不佔用系統資源(CPU、記憶體、開啟的檔案、裝置、鎖等等)。 程序,是一個抽象的概念,與作業系統原理聯絡緊密。程序是活躍的程式,佔用系統資源。在記憶體中執行(程式執行起來,產生一個程序)。 程式 --&g

      Linux伺服器分割槽鍵自動掛載硬碟工具

      最近發現很多使用者反饋的一些問題與磁碟掛載有關,1、安裝完面板後發現磁碟容量與實際購買容量不符2、重啟伺服器後面板無法訪問,網站、資料庫檔案丟失以上都是因為未掛載磁碟,或掛載操作不當引起的,為解決這個問題,我們製作了磁碟自動掛載工具,支援Centos、Ubuntu、Debia

      遠端ssh連線Linux伺服器,隔段時間就斷了

      有三種情況 1、server端 你修改/etc/ssh/sshd_config,增加ServerAliveInterval 60 2、client端,不修改伺服器或防火牆在客戶端自動發訊息最簡單 如果用SecureCRT可以在Options/SessionOptions/Terminal/Anti-idel

      linux伺服器開發需要掌握多少門語言

      今天看到一個話題,程式設計師需要掌握多少門語言為佳,這裡我以自身的經歷來談談這個問題, 首先,我們先定義伺服器開發:大部分時間都在寫伺服器程式碼,而大部分伺服器都是在linux下執行shell:li

      CLion 遠端Linux伺服器 開發除錯

      Linux 配置 為了使用CLion 進行開發除錯Linux相關的軟體版本推薦如下 Cmake 3.x 以上 gdb 7.8.x

      嵌入式Linux應用開發完全手冊()嵌入式Linux基礎知識

      嵌入式Linux應用開發完全手冊 3 嵌入式Linux基礎知識 3.1 交叉編譯工具 編譯工具鏈,編譯工作由幾個步驟完成,分別用到了不同的工具 PC端應用 gcc ld objcopy

      Java開發伺服器環境Linux系統

      一:安裝VMware 14,下載安裝包按指示順序下載安裝即可,安裝完成後百度搜索啟用碼啟用就可以免費使用。 硬體:因為是在宿主機上執行虛擬化軟體安裝centos,所以對宿主機的配置有一定的要求。最起碼I5CPU雙核、硬碟500G、記憶體4G以上。 2.虛擬機器

      linux下 c++ 伺服器開發

      苦逼的c++程式設計師還沒找到工作,所以順便開始寫伺服器練手。。     對內容不滿意不要噴我我是寫給自己看的(把自己犯得錯誤記下來) 1.我的電腦是win10的,所以先去網上下虛擬機器,我下載了 ,然後安裝了。 2.新建了一個ubuntu 32位的虛擬電腦。(我劃分的

      伺服器開發linux網路程式設計---學習章節(

      前言:    近期學習了伺服器相關的開發,平常主要擼c的程式,所以就下定決心研究了c的伺服器開發,目的也在與鞏固c的基本知識。詳細分享如下,若有錯誤請指正,希望與大家探討,共同學習進步。                                             

      嵌入式Linux開發——()開發環境基礎知識

      一、交叉編譯工具(編譯出能在ARM平臺上執行的程式) 1)檔案生成過程: ①預處理:事先將“#”開頭的檔案加入進去 ②編譯:C/C++ ----->彙編程式碼 ③彙編:彙編程式碼----->機器程式碼 ④連線:將生成的目標檔案(OBJ)和系統的OBJ檔案

      linux驅動開發之蜂鳴器驅動源碼分析(

      linux 蜂鳴器 驅動 蜂鳴器的驅動源碼在/driver/char/buzzer/x210-buzzer.c文件中,源碼如下#include <linux/module.h> #include <linux/kernel.h> #include <linux

      linux驅動開發之framebuffer應用編程實踐(

      linux驅動開發之framebuffer驅動 1、framebuffer應用編程 (1)打開設備文件 (2)獲取設備信息 宏定義的命令在/linux/fb.h中 不可變信息FSCREENINFO,使用ioctl參數有FBIOGET_FSCREENINFO宏名,表示用ioctl從