Skip to main content

Linux 常用指令

常用的 Linux 指令小抄

文件移動

mv source/ dest/        # 搬移整個資料夾
cp -rfp source/ dest/ # 複製並保留文件屬性
# r: 包含子目錄
# f: 強制複製
# p: 保留原始文件屬性
cp source/* dest # 只搬資料夾內檔案

縮寫指令✨

如果要把 hugo new content 縮寫成 hnc

echo "alias hnc='hugo new content'" >> ~/.bashrc
source ~/.bashrc

macOS 使用 zsh,所以改為 zshrc。

設定系統可執行文件搜尋路徑

假設要把下載的可執行文件加到系統路徑中

export PATH="$PATH:/directory/to/bin/path"

檢視硬碟容量

du /home -h | sort -nr | tail
df -h
sudo ncdu -x /path # ncdu 好用「非常多」

也可使用 gdu 作為 ncdu 替代品,速度更快。

檢視記憶體佔用

列出前十大記憶體使用

ps aux --sort=-%mem | head -n 10

開機自動執行

這裡用docker-compose示範,五步驟分別是建立.service檔、reload .service、啟用、開始、查看狀態。

sudo nano /etc/systemd/system/stirling-pdf.service
# 建立完成再執行以下指令
sudo systemctl daemon-reload
sudo systemctl enable stirling-pdf.service
sudo systemctl start stirling-pdf.service
sudo systemctl status stirling-pdf.service

其中.service指令為:

[Unit]
Description=Docker Compose app
Requires=docker.service
After=docker.service

[Service]
Type=simple
Restart=always
RestartSec=3
StartLimitInterval=1200
StartLimitBurst=10
TimeoutStartSec=1200
WorkingDirectory=/home/yourname/yourapp
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down

[Install]
WantedBy=multi-user.target

開機自動化也可以使用以下方式:

# nano /etc/rc.local
mount /path/mount
exit 0

設定開機自動掛載smb。

SMB 掛載

/etc/fstab 最下方新增:

# 格式
<IP>/<遠端資料夾> <掛載本地資料夾> cifs credentials=<證書路徑>,_netdev,x-systemd.automount,file_mode=0777,dir_mode=0777 0 0
# 範例
//192.168.50.98/immich/external-lib /home/leo/photo cifs credentials=/home/leo/.cifs,_netdev 0 0
# _netdev: 強制系統辨識成網路硬碟
# x-systemd.automount: 自動掛載
# file_mode/dir_mode: 文件權限
# 0 0: dump備份和fsck檢查

逗號後面可選但兩個零要保留,分別代表避免 dump 備份還有避免 fsck 檢查。證書格式為:

username=遠端SMB帳戶
password=密碼

SSH 金鑰登入

# 生成密鑰,接著會要你輸入密碼,如果不需要可以直接enter
ssh-keygen -t ed25519 -f ~/.ssh/id_rsa

# 修改設定檔,貼上以下區塊
vim ~/.ssh/config
# =================
Host {alias name}
HostName {server IP}
User {user name}
IdentityFile ~/.ssh/id_rsa
# =================

# 上傳公鑰到伺服器
ssh-copy-id {user name}@{server IP}

# 連線
ssh {alias name}
  • -t: algorithm
  • -f: file

一般來說名稱使用 id_rsa 就可以了,要不要在不同服務使用不同 ssh 看你個人,我分過一次發現完全記不起來哪個是哪個,最後還是統一用同一把金鑰。

列出系統時間

date
timedatectl
hwclock
cal -H
uptime
who -b