Useful Linux Command

問題描述

這邊紀錄一些自己常用的 Linux 指令,方便日後查詢。指令都還有很多細節,這邊只列出常用的部分。

參考資料

[C]

chmod: 更改檔案權限 (此為目錄擁有者與群組)

1
2
3
4
5
6
$ chmod -R group:user <folder_path>
-R: 子目錄也一併更改
# 權限分數 r: 4, w: 2, x: 1
# 例如: rwxr-xr-x = 755
# rwx: 擁有者, r-x: 群組, r-x: 其他
# r: 讀取, w: 寫入, x: 執行

chronyc: 查看系統時間源

1
2
3
$ chronyc sources -v
sources: 狀態
-v: 顯示詳細資訊

crontab: 設定排程

1
2
3
4
$ crontab -e  # 編輯
$ crontab -l # 列出
$ crontab -r # 移除
$ crontab -u <user> -e # 編輯其他使用者的排程

[D]

du: 查看目錄所佔用大小並排序

1
$ du -chd 1 | sort -h

date: 查看系統時間

1
$ date -R # 顯示 RFC-2822 時間格式

[F]

file: 查看檔案 mime type

1
$ file --mime-type <file name>

[G]

grep: 搜尋檔案內容 (用來搜尋 nginx 設定值很好用)

1
2
$ grep -r <keyword> <folder path>
-r: 遞迴搜尋

[I]

id: 查看使用者資訊

1
2
3
4
$ id <username>
$ id -u <username> # 只顯示 UID
$ id -g <username> # 只顯示 GID
$ id -G <username> # 顯示所屬群組

iptables: 設定防火牆規則

1
2
3
4
5
6
$ sudo iptables -F # 清空所有規則
$ sudo iptables -L # 列出所有規則
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 新增規則 -A: append
$ sudo iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 27017 -j ACCEPT # 新增規則 -I: insert
# -p: 指定協定, -s: 指定來源, -dport: 指定目的, -j: 指定動作
$ sudo netfilter-persistent save # 最後記得儲存規則,不然重開機就會失效

[J]

journalctl: 查看系統日誌

1
2
3
$ journalctl -u <service name> -f
-u: 指定服務
-f: 跟著日誌輸出

[L]

lsof: 查看目前佔用中的 port

1
$ lsof -i -P

[N]

netstat: 查看目前佔用中的 port

1
2
3
4
5
6
$ netstat -tulpn
-t 代表找走 TCP 協定的
-u 代表找走 UDP 協定的
-l 代表找 LISTEN 的 socket
-n 代表顯示硬體名稱
-p 代表顯示 PID

[P]

ps: 查看目前執行中的 process

1
$ ps aux | grep <process name: keyword>

[S]

scp: 透過堡壘主機將檔案A從遠端主機複製到本地主機

1
2
3
$ scp -oProxyCommand = "ssh -W %h:%p bastion" user@host:/some/path/on/remote/A some/path/on/local/A

也可以使用 -oProxyJump = "bastion" 來代替 -oProxyCommand (OpenSSH 7.3+)

split: 將檔案分割成多個小檔案

1
$ split -b 100m <file name> <output file name>

sudo visudo: 編輯 sudoers 檔案

1
2
3
$ sudo visudo
經常用來設定不需要輸入密碼的指令
username ALL = NOPASSWD: /fullpath/to/command

[T]

truncate: 清空檔案內容

1
2
$ truncate -s 0 <file name>
想當於 `echo "" > <file name>` 的效果

timedatectl: 查看/設定系統時間

1
2
$ sudo timedatectl list-timezones # 列出所有時區 (搭配 grep 搜尋: | grep <keyword>)
$ sudo timedatectl set-timezone <timezone> # 設定時區

[Y]

yum: 系統套件管理工具

1
2
3
4
5
$ yum install <package name> # 安裝套件
$ yum remove <package name> # 移除套件
$ yum update <package name> # 更新套件
$ yum list installed # 列出已安裝的套件
$ yum search <keyword> # 搜尋套件