Portál AbcLinuxu, 24. dubna 2024 01:03


Dotaz: Řešení s logem

12.3.2013 10:14 Petras
Řešení s logem
Přečteno: 366×
Odpovědět | Admin
Dobry den, chtel bych se zeptat, jak bych mohl poslat stderr a stdout zaroven do souboru a na obrazovku. Zkousel jsem tohle
prikaz 2>&1 | tee /tmp/log
ale hledam lepsi reseni jelikoz nefunguje dle predstav, jelikoz dopredu nevim, jaky prikaz bude spusten.
echo "blabla" 2>&1 | tee /tmp/log
funguje dobre, ale
nano /bla/bla 2>&1 | tee /tmp/log
vytvoří nečitelný soubor. Jak tedy zaznamenat vše do souboru co se udalo na obrazovce ? Nejenom chyby. Díky za pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 12.3.2013 10:18 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Řešení s logem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevím, jak byste si záznam nano představoval.
12.3.2013 10:20 Petras
Rozbalit Rozbalit vše Re: Řešení s logem
No záznam nano a jmu podobné samozřejmě nepotřebuji, ale jak jsem psal, nevím jak to ošetřit když nevim jaky prikaz bude spusten...
12.3.2013 14:14 NN
Rozbalit Rozbalit vše Re: Řešení s logem
nevim jaky prikaz bude spusten...
Proc?
12.3.2013 16:28 Petras
Rozbalit Rozbalit vše Re: Řešení s logem
Proč? No nevím jaký příkaz kdo napíše, má miliardu možností... může napsat co chce..
12.3.2013 16:42 potato
Rozbalit Rozbalit vše Re: Řešení s logem
Proč by ho v tom případě přesměrovával?

Zřejmě jediná podstatná část dotazu tedy je ,Jak tedy zaznamenat vše do souboru co se udalo na obrazovce?`, což lze např. přes screen, jak už bylo napsáno -- pokud předpokládáme, že věta měla znít ,Jak zaznamenat do souboru vše, co se událo v terminálu?`. Ale s přesměrováním to nemá nic společného, takže zbytek je jen na zmatení.
12.3.2013 17:08 Petras
Rozbalit Rozbalit vše Re: Řešení s logem
OK, zeptam se tedy ne jak to udelat ale co potrebuji. Potrebuji udelat to, že kdyz spustim jakykoliv prikaz abych videl jeho prubeh v terminalu ale aby se vse co jsem videl v terminale ulozilo i do souboru. Po dokonceni prikazu ukoncit zapis do souboru. Pomoci screen to nechci, potrebuji neco jednoducheho. DIval jsem se na prikaz "script" ale soubor ktery se behem provadeni vytvori je necitelny nebo je citelny jen v nejakem programu. Díky
12.3.2013 23:10 potato
Rozbalit Rozbalit vše Re: Řešení s logem
Nic jednoduchého pro programy pracující s terminálem v raw módu (editory, mc, dialog, ...) AFAIK neexistuje a ani nejde. Každá taková věc bude z principu nějakým muset způsobem obsahovat emulátor terminálu (resp. to bude fíčura nějakého emulátoru terminálu).
12.3.2013 23:11 potato
Rozbalit Rozbalit vše Re: Řešení s logem
s/nějakým muset/muset nějakým/
13.3.2013 00:05 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Řešení s logem
:-) měl jsem svoji poznámku rozepsanou hodně dlouho.
13.3.2013 00:00 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Řešení s logem
Myslím si, že hlavně nechápete, co se v tom terminálu děje. Jsou v něm totiž dva odlišné režimy.
  1. Když napíšete příkazy jako ls nebo df, které vám vypisují informace a výpis roluje nahoru, tak jste vlastně v emulaci toho snad úplně nejstaršího terminálu a to "čtečky děrných štíků a tiskárny". Takový byl můj první terminál, který jsem kdysi před 30 lety viděl. Není zde žádný možnost se vrátit. To co se vypisuje pořád pokračuje a roluje nahoru. Na druhou stranu, text který jede do terminálu by přesně stejně mohl jít do tiskárny a dával by smysl. Stejně tak dává smysl při záchytu do souboru.
  2. V té chvíli, kdy spustíte nano či jiné editory nebo i less jste v něčem, co se kdysi nazývalo "celoobrazovkový" terminál. Původně byl hardwarově vyroben, nyní samozřejmě jen emulace. V něm nejde o to napsat písmeno "A" jako v předchozím případě, ale napsat písmeno "A" do např. 5. sloupce a 8. řádku. Na to, aby terminál umístil písmeno to konkrétní pozice musí dostat odpovídající příkaz. (Tuším, jestli se dobře pamatuji, tak pro terminály řady VT100 a vyšší to bylo ESC[M8,5 pro uvedenou pozici 5. sloupce a 8. řádku. A mnoho dalších příkazů pro jiné akce. Jiné typy terminálů měly jiné příkazy a v podstatě při vzdáleném připojení přes SSH a/nebo Telnet je domluva o typu terminálu a tedy o volbě těchto řídících sekvencích jednou částí inicializace. Bez správné dohody klienta a serveru by používání editorů jako nano nefungovalo. Jakýkoliv záchyt vám zachytí právě tyto řídící sekvence, protože ty skutečně po lince mezi aplikací a terminálem chodí.
Pokud chcete správně vidět, co se děje i v těchto "celoobrazovkových" aplikacích potřebujete interpret (emulaci) terminálu, který Vaše aplikace používají. V tom režimu adresace obrazovky totiž obecně nemáte žádné vodítko, tuším jsem se potkal i s aplikací, která psala do terminálu od prava do leva při rolování textu, (tím pádem konkrétně adresovala každé písmeno na řádku a pak ho napsala), protože ty písmena vyzvedávala ze stacku a brala je proto logicky v opačném pořadí.
13.3.2013 10:34 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Řešení s logem
Script uloží to, co se posílá na terminál. Tedy to, co vidí terminál. To, co vidí uživatel, je výsledek, který mu zprostředkovává terminál, a jak tuto uživatelskou experience zachytit, je otázka. Nabízí se udělat z toho video...

Pokud to chcete v textu, tak možná nějaký emulátor terminálu, který by to v čase uměl "přehrát". Znám jen conspy který je určen trochu k něčemu jinému a má různá omezení, nicméně si umím představit, že by poslouchal na nějakém zařízení typu virtuální konzole a pokud by se na to zařízení přehrál ten záznam ze skriptu, mohl by z toho být nějaký výsledek.

Pro zlepšení čitelnosti toho logu ze skriptu můžete použít less, který vám ten výstup alespoň obarví (pokud používáte barevný less:) a trochu interpertuje různé escape sekvence, i když chápu že to není to, co byste si představoval.

Samozřejmě jen to "uložit do souboru" nejde, protože tam vám chybí třetí rozměr - čas :) a různým pokusům typu "při každé změně na obrazovce vygrabuji znovu vše co je vidět na obrazovce a uložím to do souboru znova + s tou novou změnou" čímž byste získal takovou "slideshow" brání fakt, že jaksi nemáte čím zpětně z terminálu vyžebrat informaci stylem "prosím tě co jsem ti před hodinou poslal abys to vypsal někde doprostřed obrazovky" já to zapomněl... Terminlá nejspíš řekne "já taky, ty to na té obrazovce už nevidíš?:)". Musel by to tedy podporovat přímo ten terminál, a takový neznám.
13.3.2013 08:52 Adamec | skóre: 30
Rozbalit Rozbalit vše Re: Řešení s logem
jde ti o to jen logovat co kdo napise?? pokud ti staci tato volba tak pouzij logkeys :)
This is not a bug it's a feature
12.3.2013 10:59 darkenik
Rozbalit Rozbalit vše Re: Řešení s logem
Odpovědět | | Sbalit | Link | Blokovat | Admin
mozno hladate prikaz script

script -a /tmp/log

nano /etc/whatever echo "aa" ...

logout
12.3.2013 12:49 Petras
Rozbalit Rozbalit vše Re: Řešení s logem
Co to jako má dělat, nedává to žádný smysl :-(
12.3.2013 20:57 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Řešení s logem
Co asi :) Příkazem script "pošlete stderr a stdout zaroven do souboru a na obrazovku", což je to, co jste v zadání chtěl. Příkazy, které od té doby provedete, budou zaznamenány. Otázka je, jak byste chtěl zaznamenat třeba tu práci s editorem. Video vám z toho asi nikdo neudělá.
12.3.2013 14:23 WerK
Rozbalit Rozbalit vše Re: Řešení s logem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Resil jsem neco podobneho a pouzivam na to program screen. Ten umi hromadu jinych veci, ale vas bude zajimat prikaz log, ktery pak v home vytvori .screenlog* soubor. Cili pouziti je asi takoveto:

screen ve screene dat Ctrl-a : (zmacknout a drzet ctrl, zmacknout a, oboje pustit a zmacknout : ), do prikazove radky co se objevi zadat log on, spustit pozadovany prikaz,

vice podrobnosti v man screen

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.