Izlaz scripta na ekranu i fajlu

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

Comments

  1. November 18th, 2008 | 23:58

    Ja guram sve u log file a onda po potrebi koristim
    tail -f filename.log
    da bih pratio šta se trenutno dešava…

  2. ivanhoe
    November 19th, 2008 | 4:17

    posto ih obicno pokrecem sa nohup, onda mi
    tail -f nohup.log radi posao, ali korisno je znati u svakom slucaju

  3. November 19th, 2008 | 10:28

    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).

Leave a reply