From 32a3cb52fac3900fdc2ace3008ee5ac71c1e2525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Drago=C8=99-Iulian=20ARGINT?= <dragosargint21@gmail.com> Date: Tue, 16 Apr 2024 22:47:02 +0300 Subject: [PATCH] Add daemon for logging dmesg output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add so2_vm_checker_logger.sh daemon which periodically saves the output of dmesg * Add the initialization in checker.sh for assginment 2 Signed-off-by: DragoČ-Iulian ARGINT <dragosargint21@gmail.com> --- checker/checker.sh | 26 ++++++++++----- .../checker_daemons/so2_vm_checker_logger.sh | 33 +++++++++++++++++++ 2 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 checker/checker_daemons/so2_vm_checker_logger.sh diff --git a/checker/checker.sh b/checker/checker.sh index 766abb9..dfab0ce 100755 --- a/checker/checker.sh +++ b/checker/checker.sh @@ -2,7 +2,7 @@ SO2_WORKSPACE=/linux/tools/labs SO2_VM_LOG=/tmp/so2_vm_log.txt - +DMESG_LOG="" ASSIGNMENT0_TIMEOUT=300 # 5 min ASSIGNMENT0_MOD=list.ko @@ -60,6 +60,13 @@ usage() } +configure_logger() +{ + DMESG_LOG="/linux/tools/labs/skels/log.txt" + cp ./checker/checker_daemons/so2_vm_checker_logger.sh /linux/tools/labs/rootfs/etc/init.d + chmod +x /linux/tools/labs/rootfs/etc/init.d/so2_vm_checker_logger.sh + chroot /linux/tools/labs/rootfs update-rc.d so2_vm_checker_logger.sh defaults 0 0 +} recover_grade_from_timeout() { @@ -83,10 +90,12 @@ timeout_exceeded() pkill -SIGKILL qemu echo "" echo "TIMEOUT EXCEEDED !!! killing the process" - echo "dumping SO2_VM_LOG=${SO2_VM_LOG} output" - echo "------------------------------------------------------" - cat $SO2_VM_LOG - echo "------------------------------------------------------" + if [[ $DMESG_LOG != "" ]]; then + echo "dumping DMESG_LOG=${DMESG_LOG} output" + echo ">>>>---------------DMESG_LOG_STARTS_HERE------------------<<<<<" + cat $DMESG_LOG + echo ">>>>----------------DMESG_LOG_ENDS_HERE-------------------<<<<<" + fi if [[ $RECOVER_GRADE_TIMEOUT == 0 ]]; then if [ -f $output ]; then @@ -94,8 +103,6 @@ timeout_exceeded() else cat $output fi - echo "dumping SO2_VM_LOG=${SO2_VM_LOG} output" - cat $SO2_VM_LOG echo "The Recover Grade Timeout option is not set! Please contact a teaching assistant!" else @@ -223,7 +230,7 @@ run_checker() if ((timeout >= TIMEOUT)); then if [ -f $output ]; then echo "" - dump_output $output + dump_output $output $timeout compute_total $output fi timeout_exceeded $output @@ -238,6 +245,8 @@ run_checker() popd &> /dev/null } + + case $1 in 0-list) TIMEOUT=$ASSIGNMENT0_TIMEOUT @@ -252,6 +261,7 @@ case $1 in 2-uart) TIMEOUT=$ASSIGNMENT2_TIMEOUT RECOVER_GRADE_TIMEOUT=1 # If set to 1, in case of a timeout, will calculate the total grade based on the output directory + configure_logger run_checker $ASSIGNMENT2_MOD $ASSIGNMENT2_DIR $ASSIGNMENT2_CHECKER_LOCAL_DIR $ASSIGNMENT2_CHECKER_DIR $ASSIGNMENT2_OUTPUT $ASSIGNMENT2_FINISHED $1 $ASSIGNMENT2_HEADER_OVERWRITE $ASSIGNMENT2_CHECKER_AUX_LIST ;; 3-raid) diff --git a/checker/checker_daemons/so2_vm_checker_logger.sh b/checker/checker_daemons/so2_vm_checker_logger.sh new file mode 100644 index 0000000..5d70125 --- /dev/null +++ b/checker/checker_daemons/so2_vm_checker_logger.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# THIS SCRIPT RUNS INSIDE THE SO2 VM + +LOG_FILE=/home/root/skels/log.txt + +start() +{ + set -x + echo "" > ${LOG_FILE} + while true + do + sleep 1 + echo ------------------START_HERE------------------ >> $LOG_FILE + dmesg >> $LOG_FILE + echo -------------------END_HERE------------------- >> $LOG_FILE + done +} + +# Carry out specific functions when asked to by the system +case "$1" in + start) + echo "Starting so2_vm_checker_logger.sh..." + start & # start in background + ;; + *) + echo "Usage: /etc/init.d/foo {start|stop}" + exit 1 + ;; + esac + +exit 0 + -- GitLab