Hirdetés

2024. április 25., csütörtök

Gyorskeresés

Hozzászólások

(#901) bambano válasza CPT.Pirk (#900) üzenetére


bambano
titán
LOGOUT blog

N4 nevű fájl nem kell, a -N azt mondja meg, hány bájtot olvasson a bemenetéről. mivel neked 4 bájtba van letéve a 2x12 bit, ezért írt -N4-et

crtscts emlékeim szerint akkor kell, ha a másik oldal hardveres handshake-t csinál.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#902) CPT.Pirk válasza bambano (#901) üzenetére


CPT.Pirk
Jómunkásember

Elvileg kézfogás mentes uart protokoll van, mert az FPGA felé megy egy CTS és RTS, viszont onnan a modul felé csak a TX, és mérések szerint a CTS, RTS logikai '1'-en vannak, amint végez a modul az USB-s kapcsolat felépítésével.
Végül is mindegy, mert a modulom küldi a cuccot, lehet, hogy külön kezeli az adó és a vevő oldalt.

Am igen, már lejárt a szerkesztés, mikor rájöttem, hogy az N4 az nem fájl akar lenni. ;]
Viszont akkor az a kérdésem, hogy konkrétan hogyan tudnék lementeni beeső 4*8 bitet? Milyen környezetben használjam ezt az OD parancsot?

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

(#903) bambano válasza CPT.Pirk (#902) üzenetére


bambano
titán
LOGOUT blog

while true; do
od .... | sql adatbazisba berak
done
én kivenném azt a kézfogást egy próba erejéig...
másrészt meg egy od -x /dev/ttyUSB0 megmondja, mi jön be.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#904) CPT.Pirk válasza bambano (#903) üzenetére


CPT.Pirk
Jómunkásember

Megpróbáltam -crtscts, crtscts-el és ezek nélkül is, mindegyik esetben az stty szerint a baudrate 38400, az od-s parancsot kiadva meg a modulom abbahagyja a küldést. Mikor kihúzom az USB-t, akkor 7 darab 0 a kimenet.
Ezután ha visszadugom, a modul újra küld csomagokat, nem kell semmit csinálnom.

[ Szerkesztve ]

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

(#905) eriktoth


eriktoth
tag

Üdv!
Van egy ilyen feladatom:
a TEST_DIR paraméter megadja a könyvtárstruktúrát, és egy választható reguláris kifejezés szűri a könyvtárakat, amibe dolgozni fogunk

Valahogy nekem ez teljesen érthetetlen, valaki ha tudna hozzáfűzni valamit esetleg

Előre is kösz

(#906) Siriusb


Siriusb
veterán

Bootoláskor, ha egy adott merevlemez csatolva van, szeretném altatásba küldeni:

LEMEZ="dev/disk/by-id/ata-akarmi"
if [ -b "$LEMEZ" ]
then
(sleep 30 && /sbin/hdparm -Y $LEMEZ) &
echo "kicsi"
fi

Ez miért nem működik?

[ Szerkesztve ]

(#907) Jester01 válasza Siriusb (#906) üzenetére


Jester01
veterán

Lemaradt a / a dev elől :F

Jester

(#908) Siriusb válasza Jester01 (#907) üzenetére


Siriusb
veterán

Te vagy a nyerő! :)

(#909) eriktoth


eriktoth
tag

ÜDV!
Olyasmit hogyan lehetne megoldani, hogy megalállaptom, hogy egy könyvtarnak van e allkönyvtara, es nincsenek benne fájlok, ha van kiir valamit, illetve, hogy a könyvtárban, nincsenek semilyen szimbolikus linkek
elore is köszönöm, eleg fontos :S

(#910) bambano válasza eriktoth (#909) üzenetére


bambano
titán
LOGOUT blog

beadandó határidős időszak van? :P

egyébként find.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#911) eriktoth válasza bambano (#910) üzenetére


eriktoth
tag

hasonlo, de nem egeszen, csehorszagban mashogy menneka dolgok :(

(#912) eriktoth


eriktoth
tag

Még kifelejtettem, ezt úgy is meg fogom tudni csinálni, ha konkrétan nem fogom ismerni a könyvtárak, vagy a fájlok nevét?

(#913) lapa


lapa
veterán

most kezdek neki harmadszor, de szerintem most megvan a kérdés: van egy scriptem, sleepel épp. olyat szeretnék, hogy még fusson le valami, mikor ctrl + c-t nyomok.

odáig megvagyok, hogy két egymásba ágyazott szkripttel megoldható. de megoldható-e egy scripten belül? van egy kb 30 soros rutin, ami folyamatosan megy, ennek az aktuális eredményét kéne ctrl + c vagy init 0 esetén elmentenem. köszi.

(#914) Jester01 válasza lapa (#913) üzenetére


Jester01
veterán

meg. man bash -> trap.

Jester

(#915) eriktoth


eriktoth
tag

ÜDV!
Most olyan kérdésem lenne, hogy van a következő kódom:

for i in `find . -name "*-captured"`
do
mv "$i" stdout-expected
done

Szépen megtalálja a fájlt, át is nevezi, de áthelyezi a home könyvtárba amit nem szeretnek :(

esetleg ötlet?
előre is köszönöm

(#916) bambano válasza eriktoth (#915) üzenetére


bambano
titán
LOGOUT blog

egész pontosan mit is szeretnél?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#917) eriktoth válasza bambano (#916) üzenetére


eriktoth
tag

Megkeresem a stdout-captured-et
majd átnevezem stdout-expected-re, csak ennyit semmi mást
az a lényeg, hogy valószínűleg nem a home könyvtárba lesznek

(#918) bambano válasza eriktoth (#917) üzenetére


bambano
titán
LOGOUT blog

írj már az mv elé egy echo-t és nézd meg, hogy mit ír ki

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#919) lapa válasza Jester01 (#914) üzenetére


lapa
veterán

és ez init 0 ellen is véd? vagy nemtom mi történik, ha az ubuntu-s normál leállítás ikonra nyomok. akkor is trappol?

egyébként hogy lehet man-ban keresni?

(#920) Jester01 válasza lapa (#919) üzenetére


Jester01
veterán

Az init 0 is signalt küld, azt hiszem SIGTERM-et. Legalábbis elsőre, utána bedurvul és megy a SIGKILL ;)

A man man megmondja hogy kell keresni a lapok között. Az, hogy egy lapon belül hogy keresel, már a "lapozóprogramtól" (pager) függ, man $PAGER ;]

Jester

(#921) bambano válasza lapa (#919) üzenetére


bambano
titán
LOGOUT blog

man -k kulcsszó megmondja, hogy melyik man-t akarod nézni

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#922) eriktoth


eriktoth
tag

Köszönöm az előző problémát sikerült megoldanom, de újba ütköztem:
a mappa amiben van a cmd-given nevá fájl le kell ellenőriznem, hogy az e a feldolgozandó mappa, illetve a cmd-given fut-e?
Valami ötletek esetleg?

(#923) lapa válasza lapa (#919) üzenetére


lapa
veterán

nekem ez nem mén se ctrl + c-re, se logoff gombra:

#!/bin/bash

bashtrap()
{
cat /tmp/sensor >> /media/truecrypt1/backup/sensor
rm /tmp/sensor
fusermount -u /mnt/sensor
}

/opt/owfs/bin/owfs -u /mnt/sensor/

while [ 1 -eq 1 ]
do
touch /tmp/sensor

most=`date +%s`
lejar=`date --date='3580 second' +%s`

while [ $most -le $lejar ]
do
most=`date +%s`
miko=`date +"%Y.%m.%d %H:%M:%S"`
mit=`cat /mnt/sensor/10.*/temperature`
echo $miko$mit >> /tmp/sensor
sleep 15
done

cat /tmp/sensor >> /media/truecrypt1/backup/sensor
rm /tmp/sensor
done

[ Szerkesztve ]

(#924) Jester01 válasza lapa (#923) üzenetére


Jester01
veterán

Már bocsánat a kérdésért, de hol is állítod be a trap-ot? :F

Jester

(#925) lapa válasza Jester01 (#924) üzenetére


lapa
veterán

oké, most raktam egy ilyet mindenhova:

#!/bin/bash

------------------------------------------------trap bashtrap INT

bashtrap()
{
cat /tmp/sensor >> /media/truecrypt1/backup/sensor
rm /tmp/sensor
fusermount -u /mnt/sensor
}

/opt/owfs/bin/owfs -u /mnt/sensor/

while [ 1 -eq 1 ]
do
--------------------------------------------------trap bashtrap INT
touch /tmp/sensor

most=`date +%s`
lejar=`date --date='3580 second' +%s`

while [ $most -le $lejar ]
do
-----------------------------------------------------trap bashtrap INT
most=`date +%s`
miko=`date +"%Y.%m.%d %H:%M:%S"`
mit=`cat /mnt/sensor/10.*/temperature`
echo $miko$mit >> /tmp/sensor
sleep 15
done

cat /tmp/sensor >> /media/truecrypt1/backup/sensor
rm /tmp/sensor
done

de ez még nem tökéletes. első ctrl + c-re nem adja vissza a promptot. második ctrl + c-re meg az alábbiakat ismétli:

^Ccat: /mnt/sensor/10.*/temperature: No such file or directory
^Cfusermount: entry for /mnt/sensor not found in /etc/mtab
cat: /mnt/sensor/10.*/temperature: No such file or directory
^Cfusermount: entry for /mnt/sensor not found in /etc/mtab
cat: /mnt/sensor/10.*/temperature: No such file or directory

közben meg dátumozott, üres sorok képződnek. mintha a do - while-t nem hagyná el. előbb próbáltam a trapba exit do-t írni de az se sikerült túl jól.

[ Szerkesztve ]

(#926) bambano válasza lapa (#925) üzenetére


bambano
titán
LOGOUT blog

szerintem trap utasítást egyszer kell belerakni a programba, lehetőleg az elejére valahova.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#927) Jester01 válasza lapa (#925) üzenetére


Jester01
veterán

Inkább exit 0 vagy hasonló a célszerű és ahogy bambano mondta, a trap elég egyszer.

Jester

(#928) lapa válasza bambano (#926) üzenetére


lapa
veterán

úgy próbáltam először, de akkor se lépett ki ctrl + c-re a termosztátból, hanem ugyanazt írogatta, mint amit a végén írok.

nemtom van olyan, hogy exit loop vagy ilyesmi?

upd: ez az exit 0 reálisan hangzik, nagyjából kezdem érteni mi történt mikor az előbb a trapot "exit do"-val kezdtem.

szerintem jó lesz ez így, köszi mindkettőtöknek.

[ Szerkesztve ]

(#929) Jester01 válasza lapa (#928) üzenetére


Jester01
veterán

Van exit do, úgy hívják, hogy break. De az csak a ciklusmagban működik, trap-ból nem. Ha nem akarsz a trap-ban kilépni a scriptből, akkor ott beállíthatsz egy változót amit aztán a ciklus folyton ellenőriz.

MOD: mondjuk a sleep-pel nem tudom milyen interakció van, azt még meg kellene nézni.

[ Szerkesztve ]

Jester

(#930) Jester01 válasza Jester01 (#929) üzenetére


Jester01
veterán

Megnéztem, jónak tűnik - leállítja a sleep-et.

Jester

(#931) lapa válasza Jester01 (#929) üzenetére


lapa
veterán

oké, nekem eddig nem volt világos, hogy a trap után neki még van élet, azért nem értettem mi történik. de akkor ha jól értem ctrl +c -nél lefut a trap, meg (hacsak le nem exitelem) minden ami utána van? jól értem ezt?

ilyesmit láttam én is példákban, hogy a loop figyeli a trap által belőtt változót, de nem esett le.

(#932) Jester01 válasza lapa (#931) üzenetére


Jester01
veterán

A trap az lekezeli az eseményt. Ha végzett, akkor az eredeti futás ott folytatódik ahol abbamaradt. Olyan mint egy aszinkron függvényhívás amiről nem tudod mikor következik be.

Jester

(#933) gyugyo22


gyugyo22
csendes tag

Üdv!

Az alábbi feladatot kaptam de semmit se tudok vele kezdeni

Leírás: Írjon egy olyan shell script-et, amely kilistázza az azonos nevű processzeket (több példányban futó programokat).
A listázás után a felhasználónak lehetősége van az egyező processzek leállítására PID-jük megadásával, amennyiben nem ad meg egyet sem, az összes processz tovább fut.

Példa:

$ ps PID TTY TIME CMD
8780 pts/0 00:00:00 bash
8793 pts/0 00:00:20 yes
8796 pts/0 00:00:18 yes
8798 pts/0 00:02:12 gedit
8801 pts/0 00:01:20 firefox
8813 pts/0 00:00:00 ps

$ ./kill.sh
PID CMD
8793 yes
8796 yes
kill cmd? pid: 8793

$ ps PID TTY TIME CMD
8780 pts/0 00:00:00 bash
8796 pts/0 00:00:28 yes
8798 pts/0 00:02:22 gedit
8801 pts/0 00:01:30 firefox
8813 pts/0 00:00:00 ps

Van e valami elképzelésetek, arról hogy hogy oldanátok meg?

(#934) bambano válasza gyugyo22 (#933) üzenetére


bambano
titán
LOGOUT blog

uniq manualját érdemes átnézni.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#935) Jester01 válasza bambano (#934) üzenetére


Jester01
veterán

De sokkal inkább a sort-ét ;)

Jester

(#936) bambano válasza Jester01 (#935) üzenetére


bambano
titán
LOGOUT blog

akkó' most tartsd meg a heti shell szkript oktatásodat :P
én még sosem próbáltam sorttal ismétléseket keresni, viszont a uniq-nak is meg lehet mondani, hogy hanyadik mezőtől nézze csak az ismétlést.

abban igazad van, hogy a uniq előtt nem árt sorbarendezni.

szerk: gnu ps tud magától is sorbarendezni, szóval nem kell sort.

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#937) Jester01 válasza bambano (#936) üzenetére


Jester01
veterán

Jó ha a ps rendez akkor azt elfogadom. A sort viszont tud uniq-ni is :)

Jester

(#938) bambano válasza Jester01 (#937) üzenetére


bambano
titán
LOGOUT blog

és akkor most következik a megfelelő man részlet idézése példákkal :)

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#939) Jester01 válasza bambano (#938) üzenetére


Jester01
veterán

Nyertél, figyelmetlen voltam. :R
Bár a sort tud -u de az most nem jó.

Jester

(#940) gyugyo22


gyugyo22
csendes tag

a győztes pedig :)

ps -o pid,comm | uniq -D -f 1
echo "kill cmd? pid: " | read PID
kill -9 $PID

(#941) bambano válasza gyugyo22 (#940) üzenetére


bambano
titán
LOGOUT blog

ez így biztosan nem jó...
így a PID tartalma "kill cmd? pid: " lesz.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#942) Jester01 válasza bambano (#941) üzenetére


Jester01
veterán

Meg a ps-ből is kimaradt a rendezés.

Jester

(#943) eriktoth


eriktoth
tag

Üdv!
Van egy ilyen kódom:

#!/bin/bash
for DIR in `find . -type d`
do
cd $DIR
for FILE in stdout stderr status
do
diff -up stdout-captured stdout-expected > stdout-delta 2>/dev/null
diff -up stderr-captured stderr-expected > stderr-delta 2>/dev/null
diff -up status-captured status-expected > status-delta 2>/dev/null
done
cd $OLDPWD
done

Nos a feladata az lenne, hogy bárhol is vannak ezek fájlok a gépen, megtalálja, és a captured és az expected különbségét beirta a deltába. a kód így működőképes, csak az a gond vele, hogy a deltát az összes könyvtárba létrehozza ami a fájlokhoz vezet.
Valami ötlet esetleg, hogy ezt mert csinálja?
Jah és ahol találhatók ezek a fájlok ott kené csak létrehoznia a deltát, sehol máshol
Előre is kösz

[ Szerkesztve ]

(#944) Jester01 válasza eriktoth (#943) üzenetére


Jester01
veterán

A ciklusban nem is használod a FILE változót. A for pedig nem ellenőrzi a fájlok létezését, ráadásul azokra a fájlokra nincs is hivatkozás.
Egyszerűbb lenne a konkrét fájlokat keresni, pl így:

find . -name stdout-captured -o -name stderr-captured -o -name status-captured |
while read -r FILE
do
diff -up "$FILE" "${FILE%captured}expected" > "${FILE%captured}delta" 2>/dev/null
done

Igény szerint lehet vizsgálni, hogy az expected is létezzen.

Jester

(#945) eriktoth válasza Jester01 (#944) üzenetére


eriktoth
tag

:R
Köszönöm, látni, hogy még láma vagyok :D

(#946) cAby


cAby
tag

Sziasztok!
Kis segítségre lenne szükségem.

A következő értéket szeretném lementeni másodpercenként/ütementként:
iostat -m | grep sde , úgy, hogy egy dátumot (date +"%r") minden sor elejére még beszúrjon.

Ezt megcsináltam így:
#!/bin/bash
Timer=0
ENDTIMER=50000
SAVEPLACE=/tmp/io_report.txt
while [ "$Timer" -ne "$ENDTIMER" ]
do
sleep 1
Timer=`expr $Timer + 1`
echo `date +"%r"` `iostat -m | grep 'sde'` >> "$SAVEPLACE"
echo "$Timer meres futott le"
done
exit 0

Ezt le is menti, csak az a problémám, hogy hibás eredményt ad alapból az iostat -m | grep sde... mert a MB_read/s és wrtn/s szinte azonos értéken (3 és 0.5) áll végig..

Ha parancssorba beírtam így, hogy: nohup iostat -m 1 | grep sde > /tmp/adat.txt , akkor ez szépen lementi percenként az aktuális _helyes_ adatot.

De nem tudok rájönni, hogy ebben a verzióban, hogyan lehetne beszúrni a dátumot minden sor elejére...
Nem muszáj shell script-ben, ha lehet így parancssorosan is valahogy.

Ha valaki tudja, akkor legyen olyan jó és segítsen egy kicsit. :)

Köszönöm szépen!

üdv,
Csabi

(#947) bambano válasza cAby (#946) üzenetére


bambano
titán
LOGOUT blog

szöget ütöttél a fejembe:)
a gondom az, hogy ha rendesen átirányítom az iostat kimenetét, akkor soronkénti módról blokkmódra kapcsol és nem látom, hogy konkrétan miért.
ezért kérdezem: dstat nem jó neked?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#948) bambano válasza bambano (#947) üzenetére


bambano
titán
LOGOUT blog

iostat -m 1| while read p; do echo $(date) $p; done | grep sdc

ez nekem jól működik.

ez meg nem:
iostat -m 1| grep sdc | while read p; do echo $(date) $p; done

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#949) cAby válasza bambano (#948) üzenetére


cAby
tag

dstat nincs fenn, meg gondolom ott is csak hozzá kellene bűvészkedni a dátumot. :)

Áhh, ez tökéletesen megy amit írtál. Nagyon szépen köszönöm, sokat segítettél!

Ez alapján átírtam ezt a változatomat:
#!/bin/bash
Timer=0
ENDTIMER=50000
SAVEPLACECPU=/tmp/cpu_report.txt
while [ "$Timer" -ne "$ENDTIMER" ]
do
sleep 1
Timer=`expr $Timer + 1`
sar -u 1 | grep '^[0-9]' | grep 'all' >> "$SAVEPLACECPU"
echo "$Timer meres futott le"
done
exit 0

erre: top -b -d 1| while read p; do echo $(date +"%r") $p; done | grep Cpu

Elindítottam mind a kettőt, de azonos időpontban az értékek között kis eltérések vannak..
Ez lehet attól nem, hogy mind a kettő azt írja, hogy pl. 01.38.59 AM,de egyik 01:38:59.001, másik meg 01:38:59.999-ben rögzít?

szerk.: Még valami érdekelne, ezt a 2 parancsot, hogyan lehetne elindítani pontosan egy időben? (Lehet, hogy rájövök nemsokára, de inkább megkérdezem.)
nohup iostat -m 1| while read p; do echo $(date) $p; done | grep sde > /tmp/io.txt &
nohup top -b -d 1| while read p; do echo $(date +"%r") $p; done | grep Cpu > /tmp/cpu.txt &

[ Szerkesztve ]

(#950) bambano válasza cAby (#949) üzenetére


bambano
titán
LOGOUT blog

ahhoz több mag kell, hogy teljesen valódi multitaszk legyen, de a statisztikák begyűjtését valószínűleg akkor sem tudja megcsinálni azonos időpontban.

azt a while ciklust kivehetnéd, az iostat működik úgy is, hogy iostat 1 50000

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

Copyright © 2000-2024 PROHARDVER Informatikai Kft.