## crontab 參考資料 : https://linux.vbird.org/linux_basic/centos7/0430cron.php * -u :只有 root 才能進行這個任務,亦即幫其他使用者建立/移除 crontab 工作排程; * -e :編輯 crontab 的工作內容 * -l :查閱 crontab 的工作內容 * -r :移除所有的 crontab 的工作內容,若僅要移除一項,請用 -e 去編輯。 ![](https://hackmd.io/_uploads/SJq-59D5h.png) ## screen 參考資料 : https://ithelp.ithome.com.tw/articles/10191930 https://hackmd.io/@NCUmsplab/Bk6BsFP3D * screen -S {screenName}: 幫 screen 命名 * screen -ls :查看所有在背景執行的screen * screen -r 3966559 :載入編號為 3966559 的 screen * Ctrl + a 與 d :將screen放到背景執行 :::spoiler ``` 說明 -c file 使定使用的設定檔(預設為 $HOME/.screenrc) -d [pid.tty.host] 強制將指定的 screen 工作環境卸離 -L 開啟自動紀錄功能 -ls 或 -list 列出目前所有執行中的 screen 工作環境 -r [pid.tty.host] 重新連接執行中的 screen 工作環境 -R 重新連接最近卸離的 screen 工作環境 -U 以 UTF-8 模式執行 -wipe [match] 將廢棄的 screen 工作環境清除 screen 操作指令表: screen 參數 說明 Ctrl + a 與 c 建立新 screen 視窗 Ctrl + a 與 Ctrl+ a 切換至上一個 screen 視窗 Ctrl + a 與數字鍵 0 到 9 切換至指定編號的 screen 視窗 Ctrl + a 與 n 切換至下一個的 screen 視窗 Ctrl + a 與 p 切換至下一個的 screen 視窗 Ctrl + a 與 w 列出目前所有的 screen 視窗 Ctrl + a 與 " 列出目前所有的 screen 視窗,並可用上下鍵選擇要切換的設窗 Ctrl + a 與 k 關閉目前的 screen 視窗 Ctrl + a 與 d 卸離 screen 工作環境 Ctrl + a 與 Esc鍵(或 Ctrl + a 與 [) 進入複製模式(copy mode),可用方向鍵操作捲軸,或用 / 與 ? 來搜尋,按下空白鍵開始選取要複製的內容,選取完成後再按下第二次空白鍵,即可複製,隨後使用 Ctrl + ] 可貼上複製的內容。 Ctrl + a 與 S 將畫面分割成上下兩個區域 Ctrl + a 與 Q 關閉分割畫面 Ctrl + a 與 Tab鍵 切換分割畫面 Ctrl + a 與 t 顯示目前系統的時間與負載狀況 Ctrl + a 與 a 送出 Ctrl + a Ctrl + a 與 ? 顯示說明 Ctrl + a 與 v 顯示版本資訊 Ctrl + a 與 x 鎖定 screen 螢幕 Ctrl + a 與 H 開啟或結束 screen 紀錄功能 Ctrl + a 與 C 清除 screen 視窗中的內容 Ctrl + a、D 與 D 強力卸離,卸離 screen 工作環境之後,直接登出 Ctrl + a 與 Ctrl+ g 視覺化鈴聲(visual bell)切換 Ctrl + a 與 i 顯示目前 screen 視窗的資訊 Ctrl + a 與 l 重繪目前 screen 視窗的內容 ``` ::: ## netstat -tlnp|grep 8778 > OSError: [Errno 98] error while attempting to bind on address ('140.115.70.218', 8778): address already in use > ![image](https://hackmd.io/_uploads/HJOR5_ln6.png) # linux 權限相關 ## linux 更改主機名稱 sudo hostname {{slurm-login}} sudo hostnamectl set-hostname 新的主機名稱 https://magiclen.org/linux-change-hostname/ ## linux chmod 設定存取權限 - 777 : 讓任何使用者可以讀與寫入 - -R: 一次讓所有子物件都有相同的權限設定 ![image](https://hackmd.io/_uploads/H1KhOqntR.png) ## linux chown 更改檔案擁有者 sudo chown 901:901 /etc/munge/munge.key ![image](https://hackmd.io/_uploads/SybcqC-qC.png) # linux 升級 Ubuntu 版本 參考資料: https://www.kwchang0831.dev/dev-env/ubuntu/upgrade-from-20.04-to-22.04 :::spoiler > lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.4 LTS Release: 20.04 Codename: focal > sudo apt update -y && sudo apt upgrade -y > sudo apt dist-upgrade > sudo apt autoremove 安裝 **updrate-manager-core** 套件 > sudo apt install update-manager-core > sudo reboot > sudo do-release-upgrade --check-dist-upgrade-only > sudo do-release-upgrade > lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04 LTS Release: 22.04 Codename: jammy > sudo apt update -y && sudo apt upgrade -y > sudo apt --purge autoremove > sudo apt autoclean ::: # linux 儲存空間相關 ## 查看該目錄下「第一層」資料夾的用量 ``` du -h --max-depth=1 /workplace/zyxu ``` - 這會列出 /workplace/zyxu 底下每個資料夾的大小,方便你抓出佔用空間的元兇。 ## 查看資料夾大小:```du -sh``` • `du`:disk usage(磁碟使用量) • `-s`:summary,僅顯示總和 • `-h`:human readable,以 KB/MB/GB 顯示更直觀 ## 查看已掛載檔案系統的磁碟使用情況:```df -h``` ![image](https://hackmd.io/_uploads/rJsaZYb1kg.png) ```linux= # 查看根目錄(/)下 使用空間前20大的檔案位置 du -ahx / | sort -rh | head -n 20 ``` ```linux= nlplab@as-1:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 63.9M 1 loop /snap/core20/2318 loop1 7:1 0 87M 1 loop /snap/lxd/29351 loop2 7:2 0 38.8M 1 loop /snap/snapd/21759 sda 8:0 0 1.7T 0 disk ├─sda1 8:1 0 1G 0 part /boot/efi ├─sda2 8:2 0 2G 0 part /boot └─sda3 8:3 0 1.7T 0 part └─ubuntu--vg-ubuntu--lv 253:0 0 1.7T 0 lvm / sdb 8:16 1 0B 0 disk sr0 11:0 1 1024M 0 rom ``` ## 查看記憶體使用情況: ```nvidia-smi``` ![image](https://hackmd.io/_uploads/HyntMFWyJl.png) ## 查看 memory 大小: ```free -h``` https://pin-yi.me/blog/other/linux-clear-swap/ ![image](https://hackmd.io/_uploads/H16Hd-g11e.png) * Mem:記憶體的使用資訊 * Swap:交換空間的使用資訊 * total:系統總共的可用實體記憶體大小 * used:已被使用的實體記憶體大小 * free:還剩下多少可用的實體記憶體 * shared:被共享使用的實體記憶體大小 * buff/cache:被 buffer 和 cache 使用的實體記憶體大小 * available:可被 應用程式 使用的實體記憶體大小 ## 清除 Swap 使用空間 > [!Note] 清除 Swap 使用空間 > sync > swapoff -a && swapon -a # linux 使用者相關 ## linux 新增使用者 https://blog.gtwang.org/linux/linux-useradd-command-tutorial-examples/#google_vignette ```linux= useradd test2 -p test2 -d /home/test2 -u 1302 -s /bin/bash ``` ## linux 修改密碼 passwd test2 ## linux 刪除使用者 userdel -r test2 ## linux 查看使用者id https://officeguide.cc/linux-id-command-tutorial-examples/ ```linux= # 查詢目前使用者的帳號 ID 與各群組 ID 資訊 id ``` > uid=1600(zyxu) gid=1600(zyxu) groups=1600(zyxu ```linux= # 查看所有使用者 cat /etc/passwd ``` ### 修改使用者 uid 與 gid ```linux= usermod -u 1600 zyxu groupmod -g 1600 zyxu ``` # NFS(網絡文件系統)共享 可以讓不同機器存取同個資料夾 ### 使用 NFS(網絡文件系統)共享 * 在 **sm-1**(要共享的主機)上設定: * 安裝 NFS 服務端 : ```sudo apt install nfs-kernel-server``` * 配置要共享的目錄 : ```sudo nano /etc/exports``` * 輸入: /llm_model 140.113.30.219(rw,sync,no_subtree_check) :::info * /llm_model: 要共享的資料夾目錄。 * 140.113.30.219: 要共享的主機IP * rw: 允許讀寫。 * sync: 確保寫入操作立即同步到磁盤。 * no_subtree_check: 避免子目錄檢查,提升性能。 ::: * 重新啟動 NFS 服務 : ``` sudo exportfs -a sudo systemctl restart nfs-kernel-server ``` * 檢查 NFS 共享狀態 : ```sudo exportfs -v``` ![image](https://hackmd.io/_uploads/ryVrhLlkkl.png) * 在其他台主機上設定: * 安裝 NFS 客戶端: ```sudo apt install nfs-common``` * 掛載共享目錄 : ( 140.113.30.218為 **sm-1** 的 IP ) ``` sudo mkdir -p /llm_model sudo mount 140.113.30.218:/llm_model /llm_model ``` * 驗證掛載 使用 ```df -h``` 確認共享目錄是否成功掛載:```df -h``` * 永久掛載 : 在 ```vi /etc/fstab``` 中添加: ``` 140.113.30.218:/llm_model /llm_model nfs defaults 0 0 ``` # NAS 掛載方法 更新 nas ip ```bash= sudo umount -l /workplace vi /etc/fstab sudo mount -a ``` ## 相同區域網域下: ``` # Linux 掛載 NFS 分享 sudo mount -t nfs NAS_IP:/export/path /mnt/point sudo mount -t nfs 140.113.30.206:/volume1/homes /workplace ``` 輸入: ``` vi /etc/fstab ``` 之後加上 ``` 140.113.30.220:/volume1/homes /workplace nfs defaults 0 0 140.113.30.206:/volume1/homes /workplace nfs defaults 0 0 ``` ## 不同區域網域下 讓不同的機器能連結到固定ip的NAS ``` sudo mount -t cifs //140.113.30.220/homes /workplace -o username=NAS帳號,password=NAS密碼 ``` 你的指令 ```bash sudo mount -t cifs //NAS_IP/share /workplace -o username=帳號,password=密碼,vers=3.0,iocharset=utf ``` **只會在此開機階段有效**,**重開機後就會自動消失(解除掛載)**。 ### 為什麼? - mount 指令直接掛載(不論 nfs/cifs/ext4 都一樣),只是「暫時」的。 - Linux 系統每次開機都會重新建立掛載點,必須靠 `/etc/fstab` 來維持永久掛載設定。 - 除非有寫進 systemd 自動掛載服務、crontab 或桌面自動掛載軟體,否則手動 mount 只在這次開機有效。 ## 如何「開機自動掛載」? **要讓檔案系統每次自動掛載,請編輯 `/etc/fstab` 加入一行設定:** 1. 用 sudo 權限編輯 `/etc/fstab` ```bash sudo nano /etc/fstab ``` 2. 追加一行(將以下資訊根據實際情況改掉): ``` //NAS_IP/share /workplace cifs username=帳號,password=密碼,vers=3.0,iocharset=utf8 0 0 ``` - iocharset 用 utf8 沒錯!(最後不要打成 utf) - 若有安全顧慮,密碼區塊建議寫成 credentials=/path/to/你的密碼檔 ,參見下方補充 3. 儲存離開 4. 重新掛載(驗證語法沒打錯): ```bash sudo mount -a ``` ## 補充:密碼隱私寫法 不要在 fstab 直接寫明密碼,可用 credentials 檔: 建立一個檔案 `/home/你的用戶/.nas-cred`: ``` username=你的帳號 password=你的密碼 ``` 然後 fstab 寫: ``` //NAS_IP/share /workplace cifs credentials=/home/你的用戶/.nas-cred,vers=3.0,iocharset=utf8 0 0 ``` **設檔案權限避免其他人讀到:** ```bash chmod 600 /home/你的用戶/.nas-cred ``` ## 小結 - 用 mount 指令手動掛載,重開機就會消失。 - 寫進 /etc/fstab,重開機自動掛載(若掛載失敗不用緊張,會顯示開機警告)。 - 推薦用 credentials 檔案寫帳密,提高安全性。 - 語法建議用 iocharset=utf8(不要少 8)。 如需範例或特殊參數(如 nofail、自動絡斷重連等),再告知你的需求即可!