顯示具有 Bash 標籤的文章。 顯示所有文章
顯示具有 Bash 標籤的文章。 顯示所有文章

星期二, 6月 17, 2025

防止 putty ssh timeout

我用 vast.ai 訓練 AI 對 ssh tunnel 有很大的依賴。一個困擾許久的問題是 TCP timeout,只要 ssh 一斷 tunnel 就跟著斷,然後透過 tunnel 跑的 notebook 就跟著死了。

用過 putty 內建的 TCP keepalive 完全沒用,後來寫 bash 腳本不停輸出資料,問題好像就改善了,紀錄一下 :P

#!/bin/bash

# Prevent TCP timeout by sending output every second
while true; do
    echo "Still alive: $(date)"
    sleep 1
done

2025/07/06 更新:結果這樣還是偶爾會斷線,該找別的方法了

全文連結

星期四, 9月 22, 2022

Docker 取回硬碟空間

sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"
Docker container 長時間執行後常遇到大量佔據硬碟空間,docker system prune 沒用,一個可能兇手就是大量 container log。用指令把冗餘 log file 清掉就能取回空間。新版 docker 好像有 log rotation 機制,有機會再研究 全文連結

星期六, 1月 22, 2022

Linux 監控 CPU 使用率腳本

Linode 寄信提示 CPU 異常使用率,超過 90% 使用率,一次好幾小時。根據網路拼湊、修改出腳本來定期監控 CPU 使用率。原則上五分鐘監控一次,使用率超過 70% 觸發 log,log 寫在監控腳本同目錄下。

cpuuse=$(cat /proc/loadavg | awk '{print $3}'|cut -f 1 -d ".")
if [ "$cpuuse" -ge 70 ]; then
MESSAGE=$(date +%s).log
  echo "CPU current usage is: $cpuuse%" >> $MESSAGE
  echo "" >> $MESSAGE
  echo "+------------------------------------------------------------------+" >> $MESSAGE
  echo "Top 20 processes which consuming high CPU" >> $MESSAGE
  echo "+------------------------------------------------------------------+" >> $MESSAGE
  echo "$(top -bn1 | head -20)" >> $MESSAGE
  echo "" >> $MESSAGE
  echo "+------------------------------------------------------------------+" >> $MESSAGE
  echo "Top 10 Processes which consuming high CPU using the ps command" >> $MESSAGE
  echo "+------------------------------------------------------------------+" >> $MESSAGE
  echo "$(ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10)" >> $MESSAGE

else
  echo "CPU usage OK"
fi

腳本存好,chmod +x 以後下 crontab

crontab -e
*/10 * * * * /bin/bash /opt/scripts/cpu-alert.sh

以目前使用者身份執行腳本一次(不一定跟 cron 同使用者!),確認腳本沒問題

crontab -l | grep -v '^#' | cut -f 6- -d ' ' | while read CMD; do eval $CMD; done
全文連結