Untitled
#!/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