Shell Scripting Part 3
Shell Scripting Part 3
PART-3
Task Scheduler Shell Scripts
Here are several Task Scheduler Shell Scripts that help automate
various tasks on Linux using cron jobs or a custom scheduling
mechanism:
TASK_LOG="/var/log/task_scheduler.log"
TASK_COMMAND="tar -czf /backup/my_backup.tar.gz
/important_data"
log_task() {
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - Task started" >> "$TASK_LOG"
$TASK_COMMAND
echo "$TIMESTAMP - Task completed" >> "$TASK_LOG"
}
log_task
LOG_DIR="/var/log/myapp"
LOG_FILE="/var/log/task_scheduler.log"
cleanup_logs() {
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - Starting log cleanup" >> "$LOG_FILE"
find $LOG_DIR -type f -name "*.log" -mtime +7 -exec rm {} \;
echo "$TIMESTAMP - Log cleanup completed" >> "$LOG_FILE"
}
cleanup_logs
BACKUP_DIR="/home/user/backups"
SOURCE_DIR="/home/user/data"
BACKUP_LOG="/var/log/backup_task.log"
perform_backup() {
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - Starting backup" >> "$BACKUP_LOG"
cp -r $SOURCE_DIR $BACKUP_DIR
echo "$TIMESTAMP - Backup completed" >> "$BACKUP_LOG"
}
perform_backup
THRESHOLD=90
ALERT_EMAIL="[email protected]"
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
TASK_LOG="/var/log/task_every_15min.log"
TASK_COMMAND="python3 /path/to/script.py"
log_task() {
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - Task started" >> "$TASK_LOG"
$TASK_COMMAND
echo "$TIMESTAMP - Task completed" >> "$TASK_LOG"
}
log_task
TASK_LOG="/var/log/random_task.log"
TASK_COMMAND="echo 'Random task executed'"
run_random_task() {
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - Task started" >> "$TASK_LOG"
$TASK_COMMAND
echo "$TIMESTAMP - Task completed" >> "$TASK_LOG"
}
RANDOM_INTERVAL=$(( ( RANDOM % 10 ) + 1 )) # Random
between 1 and 10 minutes
sleep $((RANDOM_INTERVAL * 60)) # Sleep for random minutes
run_random_task
Usage: You can run this script using a simple cron job that keeps
executing it:
bash
Copy code
* * * * * /path/to/your/script.sh
HEALTH_LOG="/var/log/system_health.log"
check_system_health() {
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%*
id.*/\1/" | awk '{print 100 - $1}')
MEM_USAGE=$(free -m | grep Mem | awk '{print $3/$2 * 100.0}')
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
Usage: This will output the basic system information for a quick
overview.
2. CPU Information Script
This script displays detailed information about the CPU, including its
model, cores, and clock speed.
bash
Copy code
#!/bin/bash
# CPU Information
echo "CPU Information:"
echo "================"
lscpu | grep -E 'Model name|CPU(s)|Thread|Core|Socket'
echo "CPU Usage: $(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-
9.]*\)%* id.*/\1/" | awk '{print 100 - $1 "%"}')"
# Memory Usage
echo "Memory Information:"
echo "===================="
free -h | awk 'NR==2 {print "Total: "$2 " Used: "$3 " Free: "$4 "
Buffers/Cache: "$6}'
# Disk Usage
echo "Disk Usage Information:"
echo "========================"
df -h | grep -vE '^Filesystem|tmpfs|cdrom' # Exclude tmp and
cdrom
Usage: This will output disk space usage for all mounted
filesystems, excluding temporary filesystems and CD-ROMs.
# Network Information
echo "Network Information:"
echo "====================="
echo "IP Address: $(hostname -I)"
echo "Netmask: $(ifconfig | grep -w inet | awk '{print $4}')"
echo "Gateway: $(ip route | grep default | awk '{print $3}')"
Usage: This will output the usage of all critical system resources.
Here are some Disk Space Monitoring Shell Scripts that can help
you track the available space on your system and send alerts when
disk usage exceeds a certain threshold.
1. Basic Disk Space Monitoring Script
This script checks the disk space usage and reports if any
filesystem exceeds the 90% usage threshold.
bash
Copy code
#!/bin/bash
THRESHOLD=90
ALERT_EMAIL="[email protected]"
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
THRESHOLD=90
ALERT_EMAIL="[email protected]"
THRESHOLD=90
ALERT_EMAIL="[email protected]"
REPORT_FILE="/tmp/disk_space_report.txt"
# Generate Report
echo "Disk Space Usage Report - $(date)" > $REPORT_FILE
echo "=============================" >> $REPORT_FILE
df -h | grep -vE '^Filesystem|tmpfs|cdrom' >> $REPORT_FILE
# Send Report
cat $REPORT_FILE | mail -s "Disk Space Report for $(hostname)"
"$ALERT_EMAIL"
rm $REPORT_FILE
THRESHOLD=90
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
THRESHOLD=90
ALERT_EMAIL="[email protected]"
LOG_FILE="/var/log/disk_space_alert.log"