No description
Find a file
2026-06-13 02:37:05 +00:00
bin 添加 bin/clean-expired-files.sh 2026-04-29 08:21:51 +00:00
config 添加 config/disk-alert.env.example 2026-04-29 08:24:50 +00:00
lib 添加 lib/notify.sh 2026-04-29 08:19:42 +00:00
install.sh 添加 install.sh 2026-04-29 08:18:16 +00:00
README.md 更新README.md 2026-06-13 02:37:05 +00:00

git clone https://git.forge.st/ops/ops-scripts.git /opt/ops-scripts
cd /opt/ops-scripts
sudo ./install.sh

Add crontab:

touch /var/log/disk-alert.sh
touch /var/log/clean-expired-files.log

crontab -e
0 16 * * * DRY_RUN=0 NTFY_URL=https://ntfy.1bps.io NTFY_TOPIC=1bps_server_nodes NTFY_TOKEN=<NTFY_TOKEN> /usr/local/sbin/clean-expired-files.sh --dir /root/backup/databases --filter "*.sql.tar.gz" --days 180 >> /var/log/clean-expired-files.log 2>&1

*/10 * * * * NTFY_URL=https://ntfy.1bps.io NTFY_TOPIC=1bps_server_nodes NTFY_TOKEN=<NTFY_TOKEN> /usr/local/sbin/disk-alert.sh --mounts / --thresholds 60,80,90,99 >> /var/log/disk-alert.log 2>&1

Or with env:

*/10 * * * * . /etc/ops/disk-alert.env; /usr/local/sbin/disk-alert.sh >> /var/log/disk-alert.log 2>&1

Logs

logrotate

sudo vi /etc/logrotate.d/disk-alert
/var/log/disk-alert.log {
    daily                  # 每天滚动
    rotate 7               # 保留7天
    compress               # gzip 压缩
    delaycompress          # 延迟压缩(避免正在写的文件问题)
    missingok              # 文件不存在不报错
    notifempty             # 空文件不滚动
    copytruncate           # 关键:不中断写入
}

Test

sudo logrotate -f /etc/logrotate.d/disk-alert

logger + syslog

Cron

*/10 * * * * /usr/local/sbin/disk-alert.sh 2>&1 | logger -t disk-alert

Syslog

sudo vi /etc/rsyslog.d/disk-alert.conf
if $programname == 'disk-alert' then /var/log/disk-alert.log
& stop
sudo systemctl restart rsyslog

Update

cd /opt/ops-scripts
git pull
sudo ./install.sh