useful scripts

Backup MySQL

#!/bin/bash

# Load .env file from MY_APP folder
ENV_FILE="/var/www/html/MY_APP/.env"

if [ ! -f "$ENV_FILE" ]; then
    echo "The .env was not found on $(dirname "$0")"
    exit 1
fi

# Read .env
source "$ENV_FILE"

# Check if the necessary vars are defined
if [ -z "$DB_DATABASE" ] || [ -z "$DB_USERNAME" ] || [ -z "$DB_PASSWORD" ]; then
    echo "Error: Variable DB_DATABASE, DB_USERNAME or DB_PASSWORD not defined on .env"
    exit 1
fi

# Backup config
BACKUP_DIR="/home/dev/backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup_$DB_DATABASE_$DATE.sql"
ZIP_FILE="$BACKUP_DIR/backup_$DB_DATABASE_$DATE.zip"
MAX_BACKUPS=10

# Create folder if it does not exist
mkdir -p "$BACKUP_DIR"

# Dump data on the backup file
mysqldump -u "$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" > "$BACKUP_FILE"

# Check if the backup file was created
if [ $? -eq 0 ]; then
    echo "Backup of $DB_DATABASE created on: $BACKUP_FILE"
    
    echo "Zipping the .sql file..."
    zip "$ZIP_FILE" "$BACKUP_FILE"
    
    echo "Removing temporary file..."
    rm "$BACKUP_FILE"
    
    echo "Keeping only the last $MAX_BACKUPS..."
    ls -t "$BACKUP_DIR"/backup_$DB_DATABASE_*.zip | tail -n +$((MAX_BACKUPS + 1)) | xargs -I {} rm {}
else
    echo "Error on creating a security copy of $DB_DATABASE database!"
    exit 1
fi

Monitor open file descriptions

#!/bin/bash

echo '***************************************************'
echo $(git -C /var/www/html/py-ocpp rev-parse --abbrev-ref HEAD)

echo '***************************************************'

date

echo '***************************************************'

echo 'Print out nginx file descriptions:'
#pidof nginx
#echo 'Check how many nginx file descriptions are open'
for pid in $(pidof nginx); 
        do echo " - PID $pid: $(sudo ls /proc/$pid/fd | wc -l) FDs"; 
done

echo 'Print out py-ocpp (ocpp_server) file descriptions:'
#ps aux | grep py-ocpp | grep -v grep | awk '{print $2 " "}' | tr -d '\n'
#echo ' '
for pid in $(ps aux | grep py-ocpp | grep -v grep | awk '{print $2 " "}' | tr -d '\n'); 
        do echo " - PID $pid: $(sudo ls /proc/$pid/fd | wc -l) FDs"; 
done
echo 'Print out py-ocpp (ocpp_server) threads:'

for pid in $(ps aux | grep py-ocpp | grep -v grep | awk '{print $2 " "}' | tr -d '\n'); 
        do echo " - PID $pid: $(cat /proc/$pid/status | grep Threads)";
done


echo '***************************************************'

Last updated

Was this helpful?