nano /usr/local/bin/ramcheck#!/bin/bash
# ===========================
# ramcheck - Clean RAM Report
# ===========================
# Lấy số liệu từ free -k
read _ total used free shared buff_cache available <<< "$(free -k | awk '/Mem:/ {print $1,$2,$3,$4,$5,$6,$7}')"
swap_used_kb=$(free -k | awk '/Swap:/ {print $3}')
# Đổi KB → MB/GB
fmt() { local kb=$1 if [ "$kb" -ge 1048576 ]; then awk -v v="$kb" 'BEGIN {printf "%.2f GB", v/1048576}' else awk -v v="$kb" 'BEGIN {printf "%.0f MB", v/1024}' fi
}
# Sum RSS theo pattern (case-insensitive)
sum_rss() { ps axo rss,args --no-headers | awk -v p="$1" 'BEGIN{IGNORECASE=1} $0 ~ p {sum+=$1} END{print sum}'
}
# MySQL
mysql_kb=$(sum_rss "mariadbd|mysqld")
# Node.js
node_kb=$(sum_rss " node ")
# PHP-FPM
php_kb=$(sum_rss "php-fpm")
# aaPanel – lọc đúng process, KHÔNG cộng trùng
aapanel_kb=$( ps axo rss,args --no-headers | awk ' BEGIN {sum=0} /\/www\/server\/panel\/pyenv\/bin\/python3/ {sum+=$1; next} /BT-Panel/ {sum+=$1; next} /BT-Task/ {sum+=$1; next} /spawn_main/ && /venv\/bin\/python/ {sum+=$1; next} END {print sum}'
)
# App RAM (không tính cache)
app_used_kb=$(( used - buff_cache ))
[ "$app_used_kb" -lt 0 ] && app_used_kb=0
# RAM unknown
known_kb=$(( mysql_kb + node_kb + php_kb + aapanel_kb ))
others_kb=$(( app_used_kb - known_kb ))
[ "$others_kb" -lt 0 ] && others_kb=0
# Bảng đẹp
line="──────────────────────────────────────────────"
printf "┌$line┬───────────────┐\n"
printf "│ %-44s │ %-13s │\n" "Thành phần" "RAM dùng"
printf "├$line┼───────────────┤\n"
printf "│ %-44s │ %-13s │\n" "MySQL / MariaDB" "$(fmt "$mysql_kb")"
printf "│ %-44s │ %-13s │\n" "Node.js (PM2 / node)" "$(fmt "$node_kb")"
printf "│ %-44s │ %-13s │\n" "PHP-FPM" "$(fmt "$php_kb")"
printf "│ %-44s │ %-13s │\n" "aaPanel Python (BT-Panel/Task)" "$(fmt "$aapanel_kb")"
printf "│ %-44s │ %-13s │\n" "Linux file cache" "$(fmt "$buff_cache")"
printf "│ %-44s │ %-13s │\n" "System + nền tảng khác" "$(fmt "$others_kb")"
printf "│ %-44s │ %-13s │\n" "Swap used" "$(fmt "$swap_used_kb")"
printf "├$line┼───────────────┤\n"
printf "│ %-44s │ %-13s │\n" "Tổng RAM used (theo free)" "$(fmt "$used")"
printf "└$line┴───────────────┘\n" Ctrl + O → Enter → Ctrl + Xchmod +x /usr/local/bin/ramcheckramcheckif ($uri = /.well-known/assetlinks.json) { break;
} if ($uri = /.well-known/apple-app-site-association) { break;
}
location = /.well-known/apple-app-site-association { default_type application/json;
} /www/backup/site/www/backup/database/mysqlmkdir -p /data/backup/sitemkdir -p /data/backup/database/mysqlrsync -aHAX --numeric-ids /www/backup/site/ /data/backup/site/rsync -aHAX --numeric-ids /www/backup/database/mysql/ /data/backup/database/mysql/mv /www/backup/site /www/backup/site.oldmv /www/backup/database/mysql /www/backup/database/mysql.oldln -s /data/backup/site /www/backup/siteln -s /data/backup/database/mysql /www/backup/database/mysqlls -ld /www/backup/sitels -ld /www/backup/database/mysql/www/backup/site -> /data/backup/site/www/backup/database/mysql -> /data/backup/database/mysql/data/backup/site/data/backup/database/mysqlfind /data/backup/site -type f -mmin -30find /data/backup/database/mysql -type f -mmin -30rm -rf /www/backup/site.oldrm -rf /www/backup/database/mysql.oldcat > ~/.keyremap.sh <<'EOF'
#!/bin/sh
MAP='{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000035,"HIDKeyboardModifierMappingDst":0x70000002A},{"HIDKeyboardModifierMappingSrc":0x700000031,"HIDKeyboardModifierMappingDst":0x70000002E}]}'
LAST=""
while true; do ID=$(/usr/bin/hidutil list 2>/dev/null | awk '/0xb377/ && /AppleUserHIDEventService/ {print $6; exit}') if [ -n "$ID" ] && [ "$ID" != "$LAST" ]; then sleep 1 /usr/bin/hidutil property --matching '{"ProductID":0xb377}' --set "$MAP" >/dev/null 2>&1 LAST="$ID" fi sleep 2
done
EOF
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.don.keyremap.plist 2>/dev/null
launchctl kickstart -k gui/$(id -u)/com.don.keyremap
sleep 3
launchctl list | grep keyremap