Linux基本命令詳細講解和擴充套件

*感悟人生*發表於2024-06-21

1. 基本命令和操作

檔案和目錄操作
  • ls:列出目錄內容
    • 示例:ls -l /etc 列出 /etc 目錄的詳細內容。
  • cd:更改目錄
    • 示例:cd /var/log 切換到 /var/log 目錄。
  • cp:複製檔案或目錄
    • 示例:cp file1.txt file2.txt 複製 file1.txtfile2.txt
  • mv:移動或重新命名檔案或目錄
    • 示例:mv oldname.txt newname.txt 重新命名 oldname.txtnewname.txt
  • rm:刪除檔案或目錄
    • 示例:rm file.txt 刪除 file.txt
  • mkdir:建立目錄
    • 示例:mkdir newdir 建立名為 newdir 的目錄。
  • rmdir:刪除空目錄
    • 示例:rmdir olddir 刪除名為 olddir 的空目錄。
  • touch:建立空檔案或更新檔案時間戳
    • 示例:touch newfile.txt 建立 newfile.txt 檔案。
檔案內容檢視和編輯
  • cat:連線並顯示檔案內容
    • 示例:cat /etc/passwd 顯示 /etc/passwd 檔案內容。
  • less:分頁顯示檔案內容
    • 示例:less /var/log/syslog 分頁檢視 syslog 日誌檔案。
  • more:類似 less,但功能較少
    • 示例:more /var/log/syslog 分頁檢視 syslog 日誌檔案。
  • head:顯示檔案的前幾行
    • 示例:head -n 10 /var/log/syslog 顯示 syslog 檔案的前10行。
  • tail:顯示檔案的最後幾行
    • 示例:tail -n 10 /var/log/syslog 顯示 syslog 檔案的最後10行。
  • nano:簡易文字編輯器
    • 示例:nano /etc/hosts 編輯 hosts 檔案。
  • vim:功能強大的文字編輯器
    • 示例:vim /etc/hosts 編輯 hosts 檔案。
檔案許可權和所有權
  • chmod:修改檔案許可權
    • 示例:chmod 755 script.shscript.sh 的許可權設為 755。
  • chown:修改檔案所有者
    • 示例:chown user:group file.txtfile.txt 的所有者改為 user,組改為 group
  • chgrp:修改檔案所屬組
    • 示例:chgrp group file.txtfile.txt 的所屬組改為 group
搜尋和查詢
  • find:查詢檔案或目錄
    • 示例:find / -name "file.txt" 從根目錄開始查詢名為 file.txt 的檔案。
  • grep:在檔案中搜尋字串
    • 示例:grep "root" /etc/passwdpasswd 檔案中搜尋包含 root 的行。
  • locate:快速查詢檔案
    • 示例:locate file.txt 查詢系統中所有名為 file.txt 的檔案。

2. 使用者和組管理

使用者管理
  • useradd:新增使用者
    • 示例:sudo useradd -m newuser 新增一個新使用者 newuser 並建立主目錄。
  • usermod:修改使用者
    • 示例:sudo usermod -aG sudo newuser 將使用者 newuser 新增到 sudo 組。
  • userdel:刪除使用者
    • 示例:sudo userdel -r olduser 刪除使用者 olduser 並刪除其主目錄。
  • passwd:修改使用者密碼
    • 示例:sudo passwd newuser 為使用者 newuser 設定密碼。
組管理
  • groupadd:新增組
    • 示例:sudo groupadd newgroup 新增新組 newgroup
  • groupmod:修改組
    • 示例:sudo groupmod -n newgroupname oldgroupname 將組 oldgroupname 重新命名為 newgroupname
  • groupdel:刪除組
    • 示例:sudo groupdel oldgroup 刪除組 oldgroup
許可權管理

理解檔案和目錄的許可權位:讀(r)、寫(w)、執行(x)。

  • 設定特殊許可權
    • SUID:在檔案上設定SUID(Set User ID),執行檔案時臨時獲得檔案所有者的許可權。
      • 示例:chmod u+s /usr/bin/someprogram 設定 someprogram 的SUID位。
    • SGID:在檔案或目錄上設定SGID(Set Group ID),執行檔案時臨時獲得檔案所屬組的許可權,在目錄上設定時,新建立的檔案和子目錄繼承目錄的組。
      • 示例:chmod g+s /usr/local/somedir 設定 somedir 的SGID位。
    • 粘滯位:通常設定在目錄上,防止使用者刪除或重新命名其他使用者的檔案。
      • 示例:chmod +t /usr/local/somedir 設定 somedir 的粘滯位。

3. 軟體包管理

Red Hat系(如CentOS、Fedora)
  • yum:軟體包管理器
    • 示例:sudo yum install httpd 安裝 httpd 包。
  • dnf:新的包管理器,替代yum
    • 示例:sudo dnf install httpd 安裝 httpd 包。
Debian系(如Ubuntu)
  • apt:高階包工具
    • 示例:sudo apt update && sudo apt install apache2 更新軟體包列表並安裝 apache2 包。
  • dpkg:Debian軟體包管理工具
    • 示例:sudo dpkg -i package.deb 安裝本地 package.deb 包。
原始碼安裝
  • tar:解壓縮tar包
    • 示例:tar -xzvf package.tar.gz 解壓 package.tar.gz 檔案。
  • configure:配置原始碼包
    • 示例:./configure 配置原始碼包。
  • make:編譯原始碼
    • 示例:make 編譯原始碼。
  • make install:安裝編譯好的程式
    • 示例:sudo make install 安裝編譯好的程式。

4. 系統監控和管理

系統資源監控
  • top:動態檢視系統資源使用情況
    • 示例:執行 top 並檢視CPU、記憶體使用情況。
  • htop:更友好的top替代工具
    • 示例:執行 htop 檢視系統資源使用情況。
  • free:顯示記憶體使用情況
    • 示例:free -h 顯示記憶體的詳細使用情況。
  • df:顯示磁碟使用情況
    • 示例:df -h 顯示磁碟空間的使用情況。
  • du:檢視目錄或檔案的磁碟使用情況
    • 示例:du -sh /home/user 檢視 user 目錄的大小。
  • iostat:顯示CPU和I/O統計資訊
    • 示例:iostat 檢視CPU和I/O的統計資訊。
  • vmstat:顯示系統虛擬記憶體統計
    • 示例:vmstat 檢視虛擬記憶體的統計資訊。
程序管理
  • ps:顯示當前程序
    • 示例:ps aux 顯示所有程序的資訊。
  • kill:終止程序
    • 示例:kill 1234 終止PID為 1234 的程序。
  • pkill:按名稱終止程序
    • 示例:pkill firefox 終止所有 firefox 程序。
  • pgrep:查詢程序ID
    • 示例:pgrep sshd 查詢 sshd 程序的PID。
  • jobs:顯示當前shell中的後臺任務
    • 示例:jobs 檢視當前shell中的任務。
  • bg:將任務放到後臺執行
    • 示例:bg %1 將任務編號為1的任務放到後臺執行。
  • fg:將任務放到前臺執行
    • 示例:fg %1 將任務編號為1的任務放到前臺執行。
日誌管理
  • 日誌檔案位置:大多數日誌檔案位於 /var/log 目錄下。
    • 示例:`/

var/log/syslog/var/log/messages` 是系統日誌檔案。

  • 實時檢視日誌
    • tailtail -f /var/log/syslog 實時檢視 syslog 日誌檔案。
    • lessless +F /var/log/syslog 實時檢視 syslog 日誌檔案。

5. 網路管理

網路配置
  • ifconfig:顯示或配置網路介面
    • 示例:ifconfig eth0 檢視 eth0 介面的配置。
  • ip:顯示或配置網路介面
    • 示例:ip addr show 顯示所有網路介面的IP地址。
  • nmcli:NetworkManager命令列工具
    • 示例:nmcli device status 檢視所有網路裝置的狀態。
  • nmtui:NetworkManager圖形介面工具
    • 示例:執行 nmtui 進行網路配置。
  • systemctl:管理系統服務
    • 示例:systemctl restart network 重啟網路服務。
網路測試和診斷
  • ping:測試網路連通性
    • 示例:ping google.com 測試到 google.com 的連通性。
  • traceroute:顯示到目的主機的路由
    • 示例:traceroute google.com 檢視到 google.com 的路由。
  • netstat:顯示網路連線、路由表、介面統計等
    • 示例:netstat -tuln 顯示所有監聽的TCP和UDP埠。
  • ss:類似netstat,但功能更強大
    • 示例:ss -tuln 顯示所有監聽的TCP和UDP埠。
  • curl:傳輸資料
    • 示例:curl http://example.com 下載網頁內容。
  • wget:網路下載工具
    • 示例:wget http://example.com/file.zip 下載檔案。

6. 安全和許可權管理

防火牆配置
  • iptables:設定Linux核心中的資料包過濾規則
    • 示例:sudo iptables -L 檢視當前的防火牆規則。
  • firewalld:動態管理防火牆
    • 示例:sudo firewall-cmd --list-all 檢視當前的防火牆設定。
SSH管理
  • 配置和使用SSH:透過SSH進行安全遠端登入和傳輸檔案。
    • sshssh user@hostname 遠端登入到主機 hostname
    • scpscp file.txt user@hostname:/path/to/destination 複製檔案到遠端主機。
    • rsyncrsync -avz file.txt user@hostname:/path/to/destination 同步檔案到遠端主機。
使用者許可權控制
  • sudo:以超級使用者或其他使用者許可權執行命令。
    • 示例:sudo command 以超級使用者許可權執行 command
    • 配置sudoers檔案:使用 visudo 命令編輯 /etc/sudoers 檔案,配置使用者的sudo許可權。

7. 自動化和指令碼編寫

Shell指令碼
  • 編寫基礎bash指令碼
    • 示例指令碼:
      #!/bin/bash
      echo "Hello, World!"
      
    • 變數
      • 示例:name="Linux" 定義變數 name
    • 條件判斷
      • 示例:
        if [ "$name" == "Linux" ]; then
          echo "Welcome to Linux!"
        fi
        
    • 迴圈
      • 示例:
        for i in {1..5}; do
          echo "Number $i"
        done
        
    • 函式
      • 示例:
        function greet() {
          echo "Hello, $1!"
        }
        greet "Linux"
        
任務排程
  • cron:定時任務排程
    • 示例:編輯 crontab 檔案,新增如下條目,每天凌晨2點執行備份指令碼:
      0 2 * * * /path/to/backup.sh
      
  • at:一次性任務排程
    • 示例:echo "backup.sh" | at now + 1 minute 一分鐘後執行備份指令碼。

8. 備份和恢復

備份工具
  • tar:建立歸檔檔案
    • 示例:tar -czvf backup.tar.gz /path/to/directory 備份目錄為 backup.tar.gz 檔案。
  • rsync:高效的檔案同步工具
    • 示例:rsync -avz /path/to/source /path/to/destination 同步檔案或目錄。
  • dd:進行低階別資料備份
    • 示例:dd if=/dev/sda of=/path/to/backup.img 備份整個硬碟。
恢復操作
  • 理解備份檔案的恢復過程
    • tartar -xzvf backup.tar.gz -C /path/to/restore 解壓並恢復檔案。
    • rsyncrsync -avz /path/to/backup /path/to/restore 恢復檔案或目錄。
    • dddd if=/path/to/backup.img of=/dev/sda 恢復硬碟映象。

9. 虛擬化和容器化

虛擬化
  • KVM:核心虛擬機器
    • 示例:安裝KVM並建立虛擬機器:
      sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
      sudo virt-install --name testvm --ram 2048 --disk path=/var/lib/libvirt/images/testvm.qcow2,size=10 --vcpus 2 --os-type linux --os-variant ubuntu20.04 --network bridge=br0 --graphics none --console pty,target_type=serial --location 'http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/'
      
  • VirtualBox:使用者友好的虛擬機器軟體
    • 示例:安裝VirtualBox並建立虛擬機器。
容器化
  • Docker:輕量級容器化技術
    • 示例:安裝Docker並執行容器:
      sudo apt install docker.io
      sudo systemctl start docker
      sudo systemctl enable docker
      sudo docker run -it ubuntu /bin/bash
      
  • docker-compose:定義和執行多容器Docker應用
    • 示例:編寫 docker-compose.yml 檔案,啟動多容器應用:
      version: '3'
      services:
        web:
          image: nginx
          ports:
            - "80:80"
        db:
          image: mysql
          environment:
            MYSQL_ROOT_PASSWORD: example
      

10. 常見服務配置

Web服務
  • Apache:安裝和配置Apache
    • 示例:sudo apt install apache2 安裝Apache。
  • Nginx:安裝和配置Nginx
    • 示例:sudo apt install nginx 安裝Nginx。
資料庫服務
  • MySQL:安裝和配置MySQL
    • 示例:sudo apt install mysql-server 安裝MySQL。
  • PostgreSQL:安裝和配置PostgreSQL
    • 示例:sudo apt install postgresql 安裝PostgreSQL。
檔案共享服務
  • Samba:安裝和配置Samba
    • 示例:sudo apt install samba 安裝Samba。
  • NFS:安裝和配置NFS
    • 示例:sudo apt install nfs-kernel-server 安裝NFS伺服器。

11. DevOps工具

版本控制
  • Git:基本操作
    • 示例:git clone https://github.com/user/repo.git 克隆倉庫。
CI/CD
  • GitLab CI/CD:瞭解GitLab CI/CD的基本使用
    • 示例:編寫 .gitlab-ci.yml 檔案,定義CI/CD流水線。
  • Jenkins:自動化構建工具
    • 示例:安裝Jenkins並配置流水線。
基礎設施即程式碼
  • Ansible:簡單的配置管理工具
    • 示例:編寫 playbook.yml,使用Ansible部署應用。
  • Terraform:基礎設施即程式碼工具
    • 示例:編寫 main.tf 檔案,使用Terraform管理基礎設施。

12. 雲端計算基礎

常見雲服務商
  • AWS:瞭解AWS的基本服務,如EC2、S3、RDS等。
  • Azure:瞭解Azure的基本服務,如VM、Blob儲存、SQL資料庫等。
  • GCP:瞭解GCP的基本服務,如Compute Engine、Cloud Storage、Cloud SQL等。

相關文章