Untitled

 avatar
unknown
sh
14 days ago
1.4 kB
4
Indexable
#!/bin/bash

OUTPUT_FILE="processes.txt"
C_PROGRAM="it2023135"
C_SOURCE="it2023135.c"

# Συνάρτηση καθαρισμού για ομαλό τερματισμό
cleanup() {
    echo "Terminating gracefully..."
    PID=$(pgrep -x "it2023135")  
    if [ -n "$PID" ]; then
        kill -SIGINT "$PID" 2>/dev/null
    fi
    exit 0
}

# Καταχώρηση signal SIGINT για καθαρό τερματισμό
trap cleanup SIGINT

while true; do
    # Εκτέλεση της εντολής ps και αποθήκευση των 10 διεργασιών με τη μεγαλύτερη χρήση CPU
    ps -eo pid,pcpu,pmem,rss,vsize,stat,ppid --sort=-%cpu | head -11 > "$OUTPUT_FILE"

    # Έλεγχος για zombie διεργασίες και τερματισμός του parent τους
    awk '$6 ~ /Z/ {print $7}' "$OUTPUT_FILE" | while read -r PPID; do
        if [ -n "$PPID" ]; then
            echo "ZOMBIE PROCESS ALARM: Parent process to kill: $PPID"
            kill -9 "$PPID" 2>/dev/null
        fi
    done

    # Μεταγλώττιση του προγράμματος σε C
    gcc -o "$C_PROGRAM" "$C_SOURCE" -lpthread -Wall -Wextra -g
    if [ $? -eq 0 ]; then
        ./"$C_PROGRAM"
    else
        echo "Compilation failed. Exiting..."
        exit 1
    fi

    sleep 30
done
Leave a Comment