Portál AbcLinuxu, 9. května 2025 00:29
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
strace prikaz 2>soubor
strace
umí parametr -o <jméno_souboru>
. Což sice nesouvisí s bashem, ale přijde mi to jako snazší řešení.
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. ;)
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?
keyword="$1" shift strace -o "|grep \"$keyword\" >&3" $@ 3>&1 &>/dev/nullale má to i mouchy a jde to různě no :) Něco vymyslete ;)
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.
nazev_promenne="$1" # jednička pro první parametr ahoj.sh, dvojka pro druhý atd. až 9případně příkazy shift, proměnné $@, $*, bude to chtít nějaký manuál k 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?
#! /bin/bash echo "Hello, world!" "${@}"
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:
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....
#!/bin/bash fff() { strace $1 2>&1 } eval $1 $2
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?
Doporucuji k prostudovani manual k bashi na docs.linux.cz. Je moc pekny
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.