Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: ratom 19 Ledna 2011, 09:27:10
-
Zdar,
chtěl bych si vytvořit skript pro spuštění příkazu hexdump a záznam výpisu po nějakém čase do souboru. Při spuštění skriptu bych nechtěl, aby se mi otevřel terminál, textový editor, kam bych ukládal.
principiálně by to bylo asi takto:
sudo gedit /home/user/hexdump/vypis"datum".txt
hexdump /dev/input/event5
loop ( kopírování výpisu hexdump
uložení výpisu do /home/user/hexdump/vypis"datum".txt
čekání třeba pět minut
)
Nevím, co by bylo nejjednodušší, jestli skript nebo něco jiného.
Dík za tipy.
-
#!/bin/sh
while sleep 300; do hexdump /dev/input/event5 >> /home/user/hexdump/vypis`date +%F`.txt; done
-
Dík. Vypadá to jednoduše. Vyzkouším.
-
Nedaří se mi donutit hexdump ukládat do souboru. Nevím, jak hexdump ukončit. Ukončuji jen za pomoci Ctrl + c. Příkaz hexdump se sám neukončuje, ne pro dev/input/event.
-
Aha sry, až teď sem teda zkusil co ten hexdump dělá ::)
Takže bys chtěl aby to 5 min ukládalo do jednoho souboru, pak 5 min do druhýho atd. ? To by šlo nějak takle:#!/bin/sh
while :; do
hexdump /dev/input/event5 >> /home/user/hexdump/vypis`date +%F\ %R`.txt &
sleep 300
kill -INT $!
done
-
Ty cykly s while, sleep bych si úzpůsobil dle svého, bez problému fungují. Jen mám problém s tím vlastním příkazem hexdump, neukládá do souboru, pomocí >>.
Z nápovědy k hexdump jsem zatím způsob, jak ukládat do souboru nevyčet. Zkoušel jsem pár pokusů a nic.
-
Ty cykly s while, sleep bych si úzpůsobil dle svého, bez problému fungují. Jen mám problém s tím vlastním příkazem hexdump, neukládá do souboru, pomocí >>.
Z nápovědy k hexdump jsem zatím způsob, jak ukládat do souboru nevyčet. Zkoušel jsem pár pokusů a nic.
Řekl bych, že něco děláš špatně, hexdump posílá data normálně na stdout a přesměrování do souboru funguje.
Co třeba ta cesta: /home/user/..., lepší nahradit $HOME, nebo ~.
-
radši ne, $HOME by možná ještě šel, ale ~ určitě ne, bude to spouštět pod rootem (že ?)
-
mne to taky nefunguje, napr. pro
hexdump /dev/input/mouse1 >> /tmp/log
pricemz klasicky na konzoli ano
da se to ale obejit pomocidd if=/dev/input/mouse1 of=/tmp/log bs=1
a prikaz hexdump se pak pouzije na zobrazeni binarniho souboru /tmp/log
-
Zajímavé... Já totiž při zkoušení použil ../by-id/zařízení, neb se lépe hledá..
hexdump /dev/input/by-id/usb-Genius_Optical_Mouse-event-mouse >> soubor
což funguje, zatímco přímo to fakt nefunguje ani mně.
radši ne, $HOME by možná ještě šel, ale ~ určitě ne, bude to spouštět pod rootem (že ?)
Mimochodem toto bylo způsobené tím, že první příspěvek jsem dnes znovu nečetl a paměť je slabá, jinak by mi bylo jasněji.
-
radši ne, $HOME by možná ještě šel, ale ~ určitě ne, bude to spouštět pod rootem (že ?)
jaky je v tomto pripade rozdil mezi $HOME a ~?
-
radši ne, $HOME by možná ještě šel, ale ~ určitě ne, bude to spouštět pod rootem (že ?)
jaky je v tomto pripade rozdil mezi $HOME a ~?
Pravděpodobně žádný :)
Zajímavější jsou rozdíly ve výstupu /dev/input a /dev/input/by-id, protože jsem nedávno zprovozňoval tablet a měl jsem problém v tom, že nešlo použít /by-id/, musel jsem to píchnout přímo, což je opruz když potřebujete přepojit konektory. Myslel jsem, že je to jen link a to jsem netušil, že bude rozdíl i pro výstup z hexdump, tentokrát opačný..
-
rozdíl tam je, $HOME je proměnná ~ je kdovíco
pacholik@hp:~$ sudo sh -c "echo ~"
/root
pacholik@hp:~$ sudo sh -c "echo $HOME"
/home/pacholik
s jednoduchýma uvozovkama už tam rozdíl není a ve skriptu taky ne (takže mea culpa)
-
@~ vs $HOME
man bashIf a word begins with an unquoted tilde character (`~'), all of the characters preceding the first unquoted slash (or all characters, if there is
no unquoted slash) are considered a tilde-prefix. If none of the characters in the tilde-prefix are quoted, the characters in the tilde-prefix
following the tilde are treated as a possible login name. If this login name is the null string, the tilde is replaced with the value of the shell
parameter HOME. If HOME is unset, the home directory of the user executing the shell is substituted instead. Otherwise, the tilde-prefix is
replaced with the home directory associated with the specified login name.