Zbog prirode svog posla gotovo svakodnevno se bakćem sa raznoraznim php cli scriptovima. Često su u pitanju programi koji rade jako dugo (satima, neki čak i danima), ponekad praveći veliku količinu outputa, te zbog toga praktikujem da iste startujem unutar screen sesije, kako bih uvek mogao da se ponovo ulogujem u sesiju i bacim pogled kako stoje stvari.
Veoma je dobro logovati kompletan output skripta u fajl, za slučaj da je nešto pošlo naopako, ali nekako sam uvek voleo da onako “live” vidim na ekranu šta se dešava, umesto da mi ceo izlaz stoji u nekom tamo log fajlu. No, zahvaljući unix tee komandi i ovom postu, danas sam naučio da mogu imati obadva.
./script.php | tee out.log
Ovo će kreirati fajl out.log i usmeriti kompletan output scripta u njega, ali će isti biti prikazan i na ekranu (STDOUT). U slučaju da želite samo da dodate (append) output u postojeći log, nema problema:
./script.php | tee -a out.log
Ja guram sve u log file a onda po potrebi koristim
tail -f filename.log
da bih pratio šta se trenutno dešava…
posto ih obicno pokrecem sa nohup, onda mi
tail -f nohup.log radi posao, ali korisno je znati u svakom slucaju
Ima loger i u screenu CTRL-A H (default escape kombinacija).
a za tee, ako nije PHP, treba koristiti script 2>&1 | tee … inace ce STDERR ostati nelogovan (php errore baca na STDOUT).