1. 程式人生 > 實用技巧 >Linux常用命令歸類總結

Linux常用命令歸類總結

檔案相關

建立檔案

  • touch: touch README.md
  • ">"重定向: echo 'study and share' > README.md
  • vi && vim: vim README.md, vim是vi的升級版,直接用它吧,有些系統裝好後只有vi,這裡提一下。

刪除檔案

  • 刪除檔案 rm README.md,如果是多個檔案你就往後面補檔名。

  • 自信地強制刪除:rm -rf README.md, 資料無價,慎用。

linux最佳文字編輯器vim

# vim file: 有則開啟檔案,沒則建立檔案

# 三種模式: 插入模式(按i進入,或者o下一行)、可視模式(CTRL + V)、命令模式(預設)

# 關於儲存: :q 退出、 :q! 退出不儲存、 :wq 退出並儲存

資料夾的相關操作

  • 建立資料夾:mkdir app

    • -p 建立多層巢狀資料夾,例子mkdir -p a/b/c
  • 刪除資料夾:rmdir app, 多層巢狀的話rm -rf app

  • 檢視資料夾相關資訊:ls app

    • -a: 列舉所有檔案(包含隱藏的)
    • -l列表形式展示
  • 檢視資料夾樹結構:tree app

     [email protected] ? ~/linux ? mkdir -p a/b/c/d/e/f/g/h
    [email protected] ? ~/linux ? tree a
    a
    `-- b
    `-- c
    `-- d
    `-- e
    `-- f
    `-- g
    `-- h 7 directories, 0 files
    [email protected] ? ~/linux ?
  • 進入資料夾:cd app, .表示當前目錄,那麼返回上一級就是cd ..

複製、修改、移動、檔案(夾)

  • 複製檔案(夾): cp file1 file2

    • -r: 複製巢狀資料夾,例如cp -r a b, 其中a的結構是a/b/c,即多層時。
  • 修改和移動:mv app ppa, mv這個命令承載了重新命名檔案(夾)和拷貝的重任。

硬連結和軟連結

  • 硬連結: ln ataola zjt
    ,佔用空間
  • 軟連結: ln -s ataola zjt, 相當與快捷方式,不佔空間

壓縮與解壓縮

tar

  • 將ataola檔案壓縮稱ataola.tar.gz: tar -czvf ataola.tar.gz ataola
  • 將ataola.tar.gz檔案解壓縮到當前目錄: tar -zxvf ataola.tar.gz
    • -c 建立
    • -z gzip壓縮
    • -v顯示細節
    • -f 檔案
    • -x 解壓縮

zip

  • 壓縮: zip ataola.zip ataola
  • 解壓:unzip ataola.zip ataola
  • 加密壓縮:zip -re ataola.zip ataola

網路相關

檢視網路資訊

  • 檢視本機網路資訊:ip addr
  • 檢視本機網路資訊:ifconfig

網路通訊

  • 檢測與外界通訊是否正常:ping xxx, 例如:ping zhengjiangtao.cn
  • 檢視本機相關埠暴露情況:netstat, 推薦使用netstat -tlunp,顯示正在監聽的tcp和udp資訊,清爽一點。
    • -u (udp): 僅顯示udp相關選項
    • -n: 顯示全名。
    • -l: 僅列出有在 Listen 的服務狀態
    • -p: 顯示建立相關連結的程式名
  • 檢視TCP UDP相關服務 lsof -i

防火牆

  • 安裝:yum install iptables iptables-services -y

  • 開啟:service iptables start

  • 關閉:service iptables stop

  • 儲存: service iptables save

  • 檢視狀態:service iptables status

  • 開啟某個埠(80為例): iptables -I INPUT -p tcp --dport 80 -j ACCEPT,iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT

  • 關閉某個埠(80為例):iptables -I INPUT -p tcp --dport 80 -j DROP, iptables -I OUTPUT -p tcp --sport 80 -j DROP

    • -I: 將在指定鏈的指定編號位置插入一個規則
    • -F:清除預設的所有規則
    • -A : 將一個規則新增到鏈末尾
    • -p tcp: 指定協議為tcp
    • -s: 指定源地址或地址段
    • -j ACCEPT: 允許
    • -j DROP: 拒絕
    • -d: 指定目標地址或地址段
    • -m limit : 限制單位時間訪問頻率
    • --dport port: 指定目標TCP/IP埠, 如 –dport 80
    • --sport port: 指定來源TCP/IP埠, 如 –dport 80
    • -L -n: 檢視防火牆配置資訊
    • -L -n --line-number : 顯示規則和相應編號
    • -t nat -L: 列出所有NAT鏈中所有規則
    • INPUT: 處理資料輸入包
    • OUTPUT: 處理資料輸出包
[email protected]  ~/tmp  iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80
[email protected]  ~/tmp 
  • 遮蔽某IP: 例如:ptables -A INPUT -p tcp -m tcp -s 218.109.192.109 -j DROP
  • 阻止window蠕蟲攻擊:iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe"
  • 防止SYN洪水攻擊:iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT

使用者相關

  • 組資訊存放位置:/etc/group, 格式:使用者組名:密碼:使用者組ID:組內使用者名稱
  • 新增使用者組: groupadd usergroup
    • -g: 自定義組ID, 例如groupadd -g 613 sanguo
  • 修改使用者組: groupmod usergroup
    • -g: 修改使用者組ID
    • -n: 修改使用者組名
  • 刪除使用者組:groupdel usergroup

使用者

  • 使用者資訊存放位置:/etc/password,格式:使用者名稱:密碼:使用者ID:使用者組ID:註釋:家目錄:直譯器shell

  • 使用者密碼存放位置: /etc/shadow

  • 新增使用者: useradd user

    • -m: 自動建立家目錄

    • -g: 指定使用者主組

    • -G: 指定使用者附加組

    • -u: 指定使用者預設uid

    • -c: 新增註釋

    • -s: 指定登入後的shell

    • -d: 指定使用者登入時的啟動目錄

    • -n: 取消建立使用者同名稱組

    • 修改使用者密碼: passwd user, root使用者可以重置其他使用者密碼

      [[email protected] nginx]$ passwd caocao
      passwd: Only root can specify a user name.
      [[email protected] nginx]$ passwd
      Changing password for user caocao.
      Changing password for caocao.
      (current) UNIX password:
      New password:
      Retype new password:
      Sorry, passwords do not match.
      New password:
      Retype new password:
      passwd: all authentication tokens updated successfully.
      [[email protected] nginx]$
      • -l: 鎖定口令,即禁用賬號。
      • -u: 口令解鎖。
      • -d : 使賬號無口令。
      • -f: 強迫使用者下次登入時修改口令

    我們來實踐下,在三國組下建立使用者曹操,指定使用者uid為1997,登入的shell為/bin/bash

      [email protected]  ~/tmp  useradd -m -g sanguo -s /bin/bash -u 1997 caocao
    [email protected]  ~/tmp  cat /etc/passwd | grep caocao
    caocao:x:1997:613::/home/caocao:/bin/bash
    [email protected]  ~/tmp 
  • 刪除使用者:userdel user

    • -r: 連家目錄一起刪除
  • 切換使用者:su user

    [email protected]  ~/docker/nginx  su caocao
    [[email protected] nginx]$ pwd
    /root/docker/nginx
    [[email protected] nginx]$

許可權問題

這個地方我糾結了一下,到底時放在檔案相關還是使用者相關講,最後我選擇這裡。對於使用者而言,其操作一個檔案,有可讀可寫可執行否這麼多種可能對吧,那麼我們接下來討論下。

對於一個檔案而言,其與使用者的關係,不外乎所有者(建立者)、組內成員、其他組或者使用者,這裡root使用者時linux最高許可權的使用者,簡言之,沒有它幹不了的事。

u g o a
所有者 同組使用者 其他組 所有

字母表示

我們來看這樣一個例子

  [email protected]  ~  ls -l /home/caocao
total 4
-rw-r--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
[email protected]  ~ 

單獨把b前面的這一坨東西拎出來講:drwxr-xr-x,

  • 第一個字母d,表示它是一個資料夾,而a第一個字母是-,表示它是一個檔案
  • 第一組rwx, 表示其建立者caocao擁有可讀可寫可執行的許可權
  • 第二組r-x: 表示其所在sanguo組其他使用者有可讀可執行的許可權
  • 第三組r-x: 表示其他組或者使用者有可讀可執行的許可權

實踐一下

  • 對於a檔案給同組使用者增加可寫可執行許可權, chmod g+wx a

    [[email protected] ~]$ ls -l
    total 4
    -rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [[email protected] ~]$ chmod g+wx a
    [[email protected] ~]$ ls -l
    total 4
    -rwxrwxr-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [[email protected] ~]$
  • 之後曹操有點小情緒,決定移除同組的可執許可權chmod u-x a

    [[email protected] ~]$ chmod g-x a
    [[email protected] ~]$ ls -l
    total 4
    -rwxrw-r-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [[email protected] ~]$
  • 再之後,曹操他瘋了,他決定移除自己的可寫可執行許可權chmod u-wx a

    [[email protected] ~]$ chmod u-wx a
    [[email protected] ~]$ ls -l
    total 4
    -r--rw-r-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [[email protected] ~]$

數字表示

​ 除了樓上的字母表示,也是可以用數字進行相關許可權設定

字母與數字的對應關係如下:

r w x
4 2 1

那我們接著實踐。

  • 曹操後來又自己給自己治好了,決定收回撤銷的a檔案的可寫可執行的許可權,並設定其他人都只可讀chmod 744 a

    [[email protected] ~]$ chmod 744 a
    [[email protected] ~]$ ls -l
    total 4
    -rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [[email protected] ~]$

這裡的744, 第一個代表所有者,4 + 2 + 1 = 7。 第二個代表所屬組 ,第三個代表其他選手。

更改檔案使用者組

這裡我們建立一個魏國的group,然後將曹操家目錄下的b資料夾歸屬與魏國這個組chgrp weiguo b, 這裡如果加個引數-R的話,其內部的所有檔案都會跟著變成魏國這個組,而不是三國,執行這個命令的是root使用者。

  [email protected]  /home/caocao  ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
[email protected]  /home/caocao  chgrp weiguo b
[email protected]  /home/caocao  ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-xr-x 3 caocao weiguo 4096 Jul 18 18:17 b
[email protected]  /home/caocao 

更改檔案所屬使用者

之後root使用者,決定幹掉曹操,自己掌管b檔案,那麼可以這麼做chown root b, 相關引數同樓上的chgrp

  [email protected]  /home/caocao  chown root b
[email protected]  /home/caocao  ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-xr-x 3 root weiguo 4096 Jul 18 18:17 b
[email protected]  /home/caocao  ls -l b
total 4
drwxr-xr-x 2 caocao sanguo 4096 Jul 18 18:17 c
[email protected]  /home/caocao 

root使用者想了想,狠人做到底,回收了其他人的可讀可執行許可權chmod o-rx b

  [email protected]  /home/caocao  chmod o-rx b
[email protected]  /home/caocao  ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-x--- 3 root weiguo 4096 Jul 18 18:17 b
[email protected]  /home/caocao 

此時曹操登入後想進入b目錄,哈哈,是不可能的了。

[[email protected] ~]$ cd b
bash: cd: b: Permission denied
[[email protected] ~]$ ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-x--- 3 root weiguo 4096 Jul 18 18:17 b
[[email protected] ~]$

程式相關

檢視程式(ps)

  • a 顯示所有程式
  • -a 顯示同一終端下的所有程式
  • -A 顯示所有程式
  • c 顯示程式的真實名稱
  • -N 反向選擇
  • -e 等於“-A”
  • e 顯示環境變數
  • f 顯示程式間的關係
  • -H 顯示樹狀結構
  • r 顯示當前終端的程式
  • T 顯示當前終端的所有程式
  • u 指定使用者的所有程式
  • -au 顯示較詳細的資訊
  • -aux 顯示所有包含其他使用者的行程
  • -C<命令> 列出指定命令的狀況
  • –lines<行數> 每頁顯示的行數
  • –width<字元數> 每頁顯示的字元數
  • –help 顯示幫助資訊
  • –version 顯示版本顯示

例如說我要檢視docker的相關資訊,你可以這樣寫ps -aux | grep docker | tail, 因為資料量很大,tail就是隻看檔案尾部。

[[email protected] ~]$ ps -aux | grep docker | tail
root 16970 0.0 0.0 264800 428 ? Sl May31 0:03 /usr/bin/docker-containerd-shim-current 0e4ef69c19b981163067ec8af0c38b6fa84c380855c22309a884f0a0ed691912 /var/run/docker/libcontainerd/0e4ef69c19b981163067ec8af0c38b6fa84c380855c22309a884f0a0ed691912 /usr/libexec/docker/docker-runc-current
root 19417 0.0 0.0 188476 1636 ? Sl May31 0:04 /usr/libexec/docker/docker-proxy-current -proto tcp -host-ip 0.0.0.0 -host-port 3307 -container-ip 172.19.0.3 -container-port 3306
root 19422 0.0 0.0 272996 488 ? Sl May31 0:04 /usr/bin/docker-containerd-shim-current 6de60216270a3b6f5bfbe5d94d40fa2449e443eb77b67d4bf005061dd4ff412e /var/run/docker/libcontainerd/6de60216270a3b6f5bfbe5d94d40fa2449e443eb77b67d4bf005061dd4ff412e /usr/libexec/docker/docker-runc-current
root 22621 0.0 0.1 111092 2000 ? Sl Jul14 0:00 /usr/libexec/docker/docker-proxy-current -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.3 -container-port 80
root 22626 0.0 0.0 272996 1732 ? Sl Jul14 0:00 /usr/bin/docker-containerd-shim-current 52fca7d70916037e865da9ad1dfbf330e39be4a1a72c3a05ba1d862dff8cb563 /var/run/docker/libcontainerd/52fca7d70916037e865da9ad1dfbf330e39be4a1a72c3a05ba1d862dff8cb563 /usr/libexec/docker/docker-runc-current
root 29722 0.0 0.0 110036 1108 ? Sl May30 0:03 /usr/libexec/docker/docker-proxy-current -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.20.0.2 -container-port 6379
root 29727 0.0 0.0 264800 340 ? Sl May30 0:03 /usr/bin/docker-containerd-shim-current 5c8daf272042ad0396924e6cd1f3d936e4c5f0280401861983316707c5ab9e75 /var/run/docker/libcontainerd/5c8daf272042ad0396924e6cd1f3d936e4c5f0280401861983316707c5ab9e75 /usr/libexec/docker/docker-runc-current
root 30185 0.0 0.0 264800 324 ? Sl May30 0:03 /usr/bin/docker-containerd-shim-current 5c8daf272042ad0396924e6cd1f3d936e4c5f0280401861983316707c5ab9e75 /var/run/docker/libcontainerd/5c8daf272042ad0396924e6cd1f3d936e4c5f0280401861983316707c5ab9e75 /usr/libexec/docker/docker-runc-current
root 30607 0.2 1.4 763120 26556 ? Ssl May30 186:57 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json --selinux-enabled --log-driver=journald --signature-verification=false --storage-driver overlay2
root 30612 0.0 0.2 501356 4432 ? Ssl May30 41:51 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc --runtime-args --systemd-cgroup=true
[[email protected] ~]$

當然啦,根據上面的命令引數,你也可以ps -ef | grep mysql,打出mysql的相關資訊

[[email protected] ~]$ ps -ef | grep mysql
1001 3471 3455 0 May30 ? 03:38:23 mysqld --wsrep_start_position=52a382bb-a27b-11ea-867f-c364b5a6fb0a:18
caocao 5928 16797 0 19:05 pts/0 00:00:00 grep --color=auto mysql
1001 6247 6231 0 May30 ? 03:38:57 mysqld
1001 7553 7537 0 May30 ? 03:38:59 mysqld
1001 8697 8679 0 May30 ? 03:38:07 mysqld
1001 19439 19422 0 May31 ? 03:33:23 mysqld --wsrep_start_position=52a382bb-a27b-11ea-867f-c364b5a6fb0a:23
[[email protected] ~]$

殺掉程式(kill)

根據檢視程式得到的最前面的pid,殺掉一個程式是kill xxx, 例如殺掉mysqld的pid為1001的程式kill 1001, 可能運氣不好會有殺不掉的情況,kill -9 xxx,強制殺掉,慎用。

記憶體CPU和硬碟相關

記憶體

  • 粗略 free

    [[email protected] ~]$ free
    total used free shared buff/cache available
    Mem: 1882192 454268 69256 2212 1358668 1238236
    Swap: 4194300 1242368 2951932
    [[email protected] ~]$
  • 詳細 /proc/meminfo這個檔案裡面,太長了,這裡就顯示最後十行意思下

    [[email protected] ~]$ tail -10 /proc/meminfo
    AnonHugePages: 4096 kB
    CmaTotal: 0 kB
    CmaFree: 0 kB
    HugePages_Total: 0
    HugePages_Free: 0
    HugePages_Rsvd: 0
    HugePages_Surp: 0
    Hugepagesize: 2048 kB
    DirectMap4k: 88056 kB
    DirectMap2M: 2009088 kB
    [[email protected] ~]$

CPU

  • 檢視cpu詳細資訊: cat /proc/cpuinfo

    [[email protected] ~]$ cat /proc/cpuinfo
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 6
    model : 79
    model name : Intel(R) Xeon(R) CPU E5-26xx v4
    stepping : 1
    microcode : 0x1
    cpu MHz : 2394.454
    cache size : 4096 KB
    physical id : 0
    siblings : 1
    core id : 0
    cpu cores : 1
    apicid : 0
    initial apicid : 0
    fpu : yes
    fpu_exception : yes
    cpuid level : 13
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch bmi1 avx2 bmi2 rdseed adx xsaveopt
    bogomips : 4788.90
    clflush size : 64
    cache_alignment : 64
    address sizes : 40 bits physical, 48 bits virtual
    power management: [[email protected] ~]$

硬碟

檢視硬碟使用情況df

[[email protected] ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 930176 0 930176 0% /dev
tmpfs 941096 24 941072 1% /dev/shm
tmpfs 941096 2224 938872 1% /run
tmpfs 941096 0 941096 0% /sys/fs/cgroup
/dev/vda1 51473868 14918560 34358064 31% /
tmpfs 188220 0 188220 0% /run/user/0
[[email protected] ~]$

綜合檢視(vmstat)

[[email protected] ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 1242368 85884 103628 1240960 0 0 13 42 5 6 2 3 95 0 0
[[email protected] ~]$

實時檢視(top)

top - 19:16:16 up 52 days, 18:17,  3 users,  load average: 0.58, 0.23, 0.25
Tasks: 149 total, 1 running, 148 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.0 us, 3.0 sy, 0.0 ni, 93.6 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 1882192 total, 82052 free, 454844 used, 1345296 buff/cache
KiB Swap: 4194300 total, 2951932 free, 1242368 used. 1237660 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6247 1001 20 0 1385620 37224 1844 S 0.7 2.0 218:59.15 mysqld
7553 1001 20 0 1385644 38936 1860 S 0.7 2.1 219:01.83 mysqld
16104 polkitd 20 0 1583856 72124 4756 S 0.7 3.8 28:45.69 mongod
3471 1001 20 0 1414336 28812 2684 S 0.3 1.5 218:25.69 mysqld
7924 root 20 0 35632 3088 720 S 0.3 0.2 116:41.86 redis-server
8249 root 20 0 33464 2096 748 S 0.3 0.1 113:38.97 redis-server
8631 root 20 0 33464 1616 708 S 0.3 0.1 111:53.89 redis-server
10370 root 20 0 160080 8448 1384 S 0.3 0.4 60:37.62 barad_agent
10371 root 20 0 677032 8004 1492 S 0.3 0.4 344:28.10 barad_agent
19439 1001 20 0 1394932 22712 2656 S 0.3 1.2 213:25.65 mysqld

環境變數相關

臨時

直接命令列裡敲export xxx, 例如

[[email protected] ~]$ export NODE_ENV=production
[[email protected] ~]$ echo $NODE_ENV
production
[[email protected] ~]$

setunset也是可以的。

永久

  • /etc/profile: 對所有使用者生效
  • .bashrc | .zshrc | .bash.profile: 對當前使用者生效

問題思考

如果我把一個組刪了,但是這個組裡面有使用者,是不是意味著他們將成為殭屍使用者?

怎麼可能。。。它會提示你先清使用者,有使用者就刪不掉

  [email protected]  /home/caocao  groupdel sanguo
groupdel: cannot remove the primary group of user 'caocao'
[email protected]  /home/caocao  ls /

建立使用者不指定組,預設行為是什麼?

如果不指定,預設建立一個和使用者相同名字的組

使用useradd 命令,使用者有哪些可以解析器shell(-s 後面可以跟哪些選擇)?

/bin/zsh
/bin/bash
/sbin/nologin

這裡/sbin/nologin就是不讓其登入,沒有登入許可權

參考文獻

iptables命令:https://wangchujiang.com/linux-command/c/iptables.html

ps 程式檢視器: https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ps.html


本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。