zanotuj czas emerge

checktime.sh

Czasem chciało by się wiedzieć ile tak na prawdę czasu zajmuje skompilowanie ze źródła różnych programów. Prezentowany poniżej skrypcik ten daje taką możliwość.

Uwaga !
Należy jednak zauważyć, że ów skrypcik ma jedną(przynajmniej) wadę – nie jest on w stanie zapisać czasów kompilacji poszczególnych programów kompilowanych przez emerge, a jedynie czas działania całego emerge-a. Jeżeli więc program ma wiele “zależności” które będą kompilować się przed nim, polecam emerge-nąć je wcześniej, tak by nie zakłócały pomiarów dotyczących programu docelowego.

Obsługa
Są dwie opcje:

  1. uruchamiamy emerge jak zwykle, tylko całą komendę poprzedzamy nazwą skryptu
    # checktime.sh emerge fasolka
  2. tworzymy alias który pomoże nam zapisywać czas każdej kompilacji
    alias emerge='checktime.sh emerge'
    … Alias ten możemy później dodać do .bashrc by działał również przy przyszłych logowaniach

checktime.sh


#!/bin/bash

log_file="/var/log/compilation_times.txt";

if [ "$1" = "emerge" ] || [ "$1" = "emerge_with_indexing_for_cfg-update" ]
then

    if [ "$2" = '-pv' ]
    then
        echo -ne "\n\t--pretend option used. Not counting time !!\n";
        $*;
        exit $?;
    fi

    echo -ne "Should I note compilation time? [Y/N] ";
    read -n1 one;

    while [ $one != 'Y' ] && [ $one != 'T' ] && [ $one != 'N' ] && [ $one != 'y' ] && [ $one != 't' ] && [ $one != 'n' ]
    do
    echo -ne "\n...Only N & Y are allowed, what it will be then? [Y/N] "
    read -n1 one;
    done
    echo -ne "\n\n";

    if [ $one == 'N' ] || [ $one == 'n' ]
        then
        $*;
        exit $?;
    fi
fi

job="$*";
start=`date`;
$*;
rret=$?;
stop=`date`;

echo ;
echo "Job: $job";
echo "Started at: $start";
echo "Ended   at: $stop";

if (( $rret ))
then
    echo -ne "\n\n\tWarning !! The JOB has retured an ERROR !! ($rret)\n\n";
    echo "Job: $job   !! FAILED !!"          >> $log_file
else
    echo "Job: $job"          >> $log_file
fi
echo "Started at: $start" >> $log_file
echo "Ended   at: $stop"  >> $log_file
echo                      >> $log_file

exit $rret;

#EOF

About this entry