Portál AbcLinuxu, 9. května 2025 00:29

Dotaz: Programování v bashi

25.3.2009 12:20 jirka012
Programování v bashi
Přečteno: 491×
Odpovědět | Admin

dobry den, jsem úplný začátečník v linuxu, takže bych se chtěl zeptat jak mám přesměrovat výstup strace do souboru a stímto výstupem strace bych dál potřeboval pracovat takze jak ho potom zavolam do ruznych funkci. děkuji

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.3.2009 12:30 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Programování v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Strace vypisuje na chybový výstup, takže:
strace prikaz 2>soubor
25.3.2009 12:32 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Programování v bashi
To "volání výstupu strace do dalších funkcí" zkuste specifikovat přesněji, obsah souboru se dá načíst a použít různě, záleží na konkrétním případě.
25.3.2009 12:40 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Programování v bashi
No hlavně, strace umí parametr -o <jméno_souboru>. Což sice nesouvisí s bashem, ale přijde mi to jako snazší řešení.
25.3.2009 15:04 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Programování v bashi
Počet znaků nutných k napsání je stejný, takže snažší to řekl bych není (např. máte méně času si na to přesměrování vzpomenout když ten příkaz píšete, neboť switche se píší na začátek ;)) ale podstatný rozdíl je, že se vám tam nebude plést výstup toho programu a dostanete čistý strace log.
25.3.2009 23:09 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Programování v bashi
Počet znaků nutných k napsání je stejný, takže snažší to řekl bych není
ale podstatný rozdíl je, že se vám tam nebude plést výstup toho programu a dostanete čistý strace log.
No vida, hned jste si i odpověděl, proč to snazší je. ;)
Fuky avatar 25.3.2009 12:42 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Programování v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Základní příkazy, roury a přesměrování ...
-- RÁMO: psí tábor , ETriatlon: Výuka plavání
25.3.2009 12:45 jirka012
Rozbalit Rozbalit vše Re: Programování v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin

mam tento ukol:

Skript tiskne informace o průběhu spuštění příkazu cmd. Klíčové slovo keyword identifikuje typ informace, která nás zajímá (seznam spuštěných programů, atd.). Analyzovanému programu cmd budou předány parametry args (pokud jsou).

použití: skript.sh keyword cmd [args...]

keyword může nabývat hodnot: EXEC (seznam všech spuštěných programů). Jako zdroj zjišťovaných informací použijte výstup programu strace.

 

Takze si asi musim dat ten vystup strace do souboru.jak? Pak ve funkci EXEC budu s timto vystupem potrebovat pracovat, takze jak ho pak do te funkce EXEC dostanu?


25.3.2009 14:57 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Programování v bashi
No já bych to napsal narychlo takhle:
keyword="$1"
shift
strace -o "|grep \"$keyword\" >&3" $@ 3>&1 &>/dev/null
ale má to i mouchy a jde to různě no :) Něco vymyslete ;)
25.3.2009 14:56 jirka012
Rozbalit Rozbalit vše Re: Programování v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin

jak se da udelat kdyz mam př: strace příkaz 2>&1 a potřebuji aby se ten příkaz měnil podle zadaní argumentu pri spousteni skriptu. Mam například skript ./ahoj.sh FUNKCE ls, takze bych potreboval aby se ten strace vypisoval jako strace ls.

25.3.2009 15:00 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Programování v bashi
použijte proměnnou, viz výše, přiřazování do proměnných je
nazev_promenne="$1" # jednička pro první parametr ahoj.sh, dvojka pro druhý atd. až 9
případně příkazy shift, proměnné $@, $*, bude to chtít nějaký manuál k bashi...
25.3.2009 15:23 Vlastimil Ott | skóre: 66 | blog: Plastique | Opava
Rozbalit Rozbalit vše Re: Programování v bashi
http://www.linuxexpres.cz/tag/bash
Práce: Liberix, o.p.s. | Blog: OpensourceBlog.cz | Online kurz Zlatý WordPress
26.3.2009 09:33 jirka012
Rozbalit Rozbalit vše Re: Programování v bashi

takze sem udelal tohle:

#!/bin/bash

EXEC()
{
cmd="$2" 

strace &cmd 2>&1
}

EXEC

ocekaval jsem ze po zadani ahoj.sh EXEC ls, se mi na obrazovku vypise vystup z programu strace ls. Ale nedeje se tak, kde je prosim chyba?

26.3.2009 09:58 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Programování v bashi
To urcite nie. Je taky problem skusit si to? Mimochodom, po zbeznom pohlade na ten pokus o skript odporucam zacat niecim este jednoduchsim, napr:
#! /bin/bash

echo "Hello, world!" "${@}"
26.3.2009 10:24 jirka012
Rozbalit Rozbalit vše Re: Programování v bashi

nn neni to problem, ja zkousim porad dokola ale porad se nemuzu hnout z mista:-(. Ja jen potrebuje dostat ten vystup z toho strace do te funkce.....

kdyz napriklad udelam:

#! /bin/bash
strace $2 2>&1

tak se mi to vypise normalne na obrazovku presne tak jak chci(takze po zadani ahoj.sh ffff ls - se mi vypise strace ls)...ale kdyz to dam do funkce tak uz to nefunguje....

 

26.3.2009 10:54 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Programování v bashi
#!/bin/bash

fff() {
	strace $1 2>&1
}

eval $1 $2
26.3.2009 11:07 jirka012
Rozbalit Rozbalit vše Re: Programování v bashi

dekuju. A kdyz potrebuju v tom textu vyhledat radek ktery zacina slovem open

pr. open("/usr/share/locale/cs/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3

a potrebuji vypsat jen /usr/share/locale/cs/LC_MESSAGES/coreutils.mo

tak to se udela predpokladam sedem asi ze?

26.3.2009 09:20 maertien
Rozbalit Rozbalit vše Re: Programování v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin

Doporucuji k prostudovani manual k bashi na docs.linux.cz. Je moc pekny ;-)

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.