Portál AbcLinuxu, 20. listopadu 2025 06:15
#!/bin/bash
LOGFILE="/var/log/stopstart.log"
DATE=/bin/date
FORMAT="+%Y-%m-%d %H:%M:%S"
case $1 in
start)
$DATE "$FORMAT Started" >> $LOGFILE
;;
stop)
$DATE "$FORMAT Stopped" >> $LOGFILE
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
nastav mu prava, aby byl spustitelny
chmod 755 /etc/init.d/stopstartloga udelej linky do rc.d, napr. v debianu to je
update-rc.d stopstartlog defaultspak by ti to melo hezky logovat :)
/var/log/stopstart.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
}
kdy by nejlepe mohl spocitat jak dlouho byl pocitac spusteny.
OnSuspend 20 /etc/init.d/stopstartlog stop OnResume 20 /etc/init.d/stopstartlog start
echo "start" >> soubor.txt date +"%d.%m.%Y %H:%M" >> soubor.txtA při ukončení taky
echo "stop" >> soubor.txt date +"%d.%m.%Y %H:%M" >> soubor.txtA >> zajistí že se to do souboru bude připisovat pořád na konec. (semtam ten soubor budeš muset smazat) No a kam to dát pro start a konec je trochu závislé na distribuci takže pokud napíšeš jaká distribuce tak ti poradí přesněji.
Jinak /etc/init.d/ není v každé distribuci, ovšem já ho mám takže bych to u sebe řešil jako v příkladu nademnou.
update-rc.d stopstartlog defaultsinitskript:
#!/bin/bash
# cesta k logu
LOGFILE="/var/log/stopstart.log"
# cesta k programu date
DATE=/bin/date
# format data
FORMAT="+%Y-%m-%d %H:%M:%S"
# case, proste vezmi $1 (prvni parametr) a zkousej ruzne moznosti
# taky by se to dalo udelat pres if, ale takhle je to prehlednejsi
case $1 in
# je to 'start'?
start)
# pokud ano, spust date se spravnym formatem
# vystup je presmerovan do logu
$DATE "$FORMAT Started" >> $LOGFILE
;;
# je to 'stop'?
stop)
# pokud ano, spust date se spravnym formatem,
# vystup je presmerovan do logu
$DATE "$FORMAT Stopped" >> $LOGFILE
;;
# neni to ani 'start' ani 'stop'?
*)
# vypiseme pouziti
# $0 je 'nulty parametr', coz je nazev programu, ktery spoustime
echo "Usage: $0 {start|stop}"
;;
# konec toho case
esac
logrotate:
# ktere soubory rotovat:
/var/log/stopstart.log {
# rotovat tydne:
weekly
# pokud ten log chybi, tak nam to nevadi, proste nerotujeme:
missingok
# po 52. zarotovani se log maze. tzn. po roce
rotate 52
# komprimuj zarotovane logy
compress
# tohle presne nevim, mam pocit, ze je to to, aby se komprimoval
# az po dvou dnech - prvni se "jen" zarotuje a dalsi zakomprimuje
# radsy se kouknete do manualu ;)
delaycompress
# pokud je log prazdny, nema cenu ho rotovat:
notifempty
# po zarotovani (prejmenovani) opet vytvorit puvodni soubor
create 640 root adm
}
#!/bin/bash -> kterým programem ten skript bude interpretován
LOGFILE="/var/log/stopstart.log" -> kam ukládat data
DATE=/bin/date -> kde je program date
FORMAT="+%Y-%m-%d %H:%M:%S" -> formát data jak se bude ukládat
case $1 in -> podle toho co je uvedené jako parametr skriptu
spustím příslušný řádek dále
start)
$DATE "$FORMAT Started" >> $LOGFILE -> tento řádek se spustí
při parametru start
a vlastně se spustí
/bin/date "+%Y-%m-%d %H:%M:%S Started" >> /var/log/stopstart.log
;;
stop)
$DATE "$FORMAT Stopped" >> $LOGFILE -> při stop
;;
*)
echo "Usage: $0 {start|stop}" -> při jiném parametru
;;
esac -> konec
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.