- Huawei Watch Fit 5 Pro - jó forma
- Xiaomi 17 - még mindig tart
- A Sony bemutatta eddigi legjobb és legdrágább zajszűrős fejhallgatóját
- Fotók, videók mobillal
- Szívós, szép és kitartó az új OnePlus óra
- Xiaomi 17 Ultra - jó az optikája
- Yettel topik
- Xiaomi Watch 5 - kínai időszámítás
- Bemutatkozott az Oppo kamerás csúcsmodellje
- Apple iPhone 13 mini - miért nem veszik elegen?
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
CPT.Pirk
Jómunkásember
No, megvan végre a log_10() funkció is.
function log10(x) {\
return log(x)/log(10.0);\
}\
{a=substr($0,0,4); b=substr($0,4,4); if (a > 0) printf "%d,%d,%f\n",a,b,20*log10(b/a); }Így már jók a kiszámolt erősítés értékek. Ezeket kellene átirányítanom egy fájlba kezdésnek. Per pill még nem sikerült.
Valamint néha a 2. szám elcsúszik 1-2 értékkel, ezzel kezdenem kell valamit.
-
bambano
titán
azt beleírhatod, hogy csak akkor próbáljon osztani, ha a nevező nagyobb, mint nulla...
a=substr...
b=substr
if (a>0) printf "...".. -
CPT.Pirk
Jómunkásember
Hmm, beírva az .awk fájlba az osztásos sorodat, valamint a végére a FILENAME szót, akkor nem rögtön kapom a div 0-t, hanem amikor a modulom elküld valamit, addig csak vár. Így gondolom nem a port olvasása a gond.
-
bambano
titán
Tehát ilyen formában, "egysorosként"?
awk ' {a=substr($0,0,4); b=substr($0,4,4); printf "%d,%d,%f\n",a,b,log(b/a); }' /dev/ttyUSB0
Ebben az esetben gondja van a filenévvel.
awk: (FILENAME=/dev/ttyUSB0 FNR=1) fatal: 0-val osztás kísérleteMindenképpen bele kellene terveznem valami "start karakter" felismerést majd, azt fixen bele fogom tenni az fpga programjába. Ahogy nézem, csak úgy biztosítható, hogy a jó számjegytől kezdjek el rögzíteni.
így gondoltam volna, csak valamiért nem olvas a soros portodról...
-
CPT.Pirk
Jómunkásember
Tehát ilyen formában, "egysorosként"?
awk ' {a=substr($0,0,4); b=substr($0,4,4); printf "%d,%d,%f\n",a,b,log(b/a); }' /dev/ttyUSB0
Ebben az esetben gondja van a filenévvel.
awk: (FILENAME=/dev/ttyUSB0 FNR=1) fatal: 0-val osztás kísérleteMindenképpen bele kellene terveznem valami "start karakter" felismerést majd, azt fixen bele fogom tenni az fpga programjába. Ahogy nézem, csak úgy biztosítható, hogy a jó számjegytől kezdjek el rögzíteni.
-
bambano
titán
Na arra rájöttem, hogy ilyen formában gondolod az awk indítását terminálban:
awk -f program.awk /dev/ttyUSB0
Ebben az esetben ha jól értem a FAQ-ot, a "FILENAME" változó jelenti a /dev/... -t, és ezzel kell hivatkozni rá, vagyis ez a standard input.
Egyszer ennyit írtam az awk fájlba (a txt fájl létezik):
OUTPUT="/home/pa.... /output.txt
FILENAME > OUTPUT
Ez annyit csinál, mintha azt írnám a terminálba, hogy cat /dev/ttyUSB0. Szóval csak kiírja az értékeket. Innen jó lenne egy kis segítség valamilyen szinten. Gugliztam egy kört, de valahogy nem akar előjönni egy érthető awk leírás, amivel tovább tudnék lépni.
bocs, de nem értem, mi a gond.
fent megvan az awk program, azt beírod az awk-nak aposztrófok közé, utána teszed paraméternek a /dev/ttyUSB0-t és kész. a kimeneten ott lesz a két decimális szám meg a kettő hányadosának a logaritmusa. -
CPT.Pirk
Jómunkásember
ha awk -f -fel hívod, akkor nem kell az elejére a #! kezdetű sor.
egyébként meg próbáld ki.
de nem a begin blokkba kell megírni az egész awk progit.
a 2d koordinátázást meg úgy érdemes megcsinálni, hogy awk-ból olyan kimenetet csinálsz, amit a gnuplot meg bír enni és akkor összekötöd a kettőt.Na arra rájöttem, hogy ilyen formában gondolod az awk indítását terminálban:
awk -f program.awk /dev/ttyUSB0
Ebben az esetben ha jól értem a FAQ-ot, a "FILENAME" változó jelenti a /dev/... -t, és ezzel kell hivatkozni rá, vagyis ez a standard input.
Egyszer ennyit írtam az awk fájlba (a txt fájl létezik):
OUTPUT="/home/pa.... /output.txt
FILENAME > OUTPUT
Ez annyit csinál, mintha azt írnám a terminálba, hogy cat /dev/ttyUSB0. Szóval csak kiírja az értékeket. Innen jó lenne egy kis segítség valamilyen szinten. Gugliztam egy kört, de valahogy nem akar előjönni egy érthető awk leírás, amivel tovább tudnék lépni.
-
bambano
titán
Tehát akkor ez úgy van, hogy írok egy .awk fájlt ilyen módon:
#!/bin/awk -f
BEGIN {
számolós kód
.
..
...
exit;
},majd pedig az egészet meghyvom így a terminálban:
awk -f program.awk ?
Nem egy soros terminálos cuccban gondolkodok, mert később még jó lenne a pontokat betenni egy egyszerű 2D koordináta rendszerbe. Bár ez már hyper advanced lesz nekem.ha awk -f -fel hívod, akkor nem kell az elejére a #! kezdetű sor.
egyébként meg próbáld ki.
de nem a begin blokkba kell megírni az egész awk progit.
a 2d koordinátázást meg úgy érdemes megcsinálni, hogy awk-ból olyan kimenetet csinálsz, amit a gnuplot meg bír enni és akkor összekötöd a kettőt. -
CPT.Pirk
Jómunkásember
Tehát akkor ez úgy van, hogy írok egy .awk fájlt ilyen módon:
#!/bin/awk -f
BEGIN {
számolós kód
.
..
...
exit;
},majd pedig az egészet meghyvom így a terminálban:
awk -f program.awk ?
Nem egy soros terminálos cuccban gondolkodok, mert később még jó lenne a pontokat betenni egy egyszerű 2D koordináta rendszerbe. Bár ez már hyper advanced lesz nekem. -
bambano
titán
-
CPT.Pirk
Jómunkásember
awk ugyanúgy interpreter, mint a shell, nagyjából ugyanúgy is kell használni. lehet parancssori is. pl.
echo 12345678| awk ' {a=substr($0,0,4); b=substr($0,4,4); printf "%d,%d,%f\n",a,b,log(b/a); }'
ezt már variálhatod kedvedre
még annyit, hogy ehhez nem kell cat, az awk meg tud nyitni minden karakteres fájlt (is). tehát egy cat /dev/ttyUSB0 | awk felesleges, jó az awk /dev/ttyUSB0-nak is.Az awk /dev/ttyUSB0 -nak hogy kellene működnie? Mert ha ezt írom be, akkor a modulom nem küld semmit. Ha cat -al, akkor meg minden rendben.
-
bambano
titán
awk ugyanúgy interpreter, mint a shell, nagyjából ugyanúgy is kell használni. lehet parancssori is. pl.
echo 12345678| awk ' {a=substr($0,0,4); b=substr($0,4,4); printf "%d,%d,%f\n",a,b,log(b/a); }'
ezt már variálhatod kedvedre
még annyit, hogy ehhez nem kell cat, az awk meg tud nyitni minden karakteres fájlt (is). tehát egy cat /dev/ttyUSB0 | awk felesleges, jó az awk /dev/ttyUSB0-nak is. -
CPT.Pirk
Jómunkásember
Egy ilyen awk szcriptet, mondjuk egy fájlt hogyan lehet használni? Pl. arra gondolok, mint mikor egyszerű C kódot fordítok gcc-vel terminálban, és az eredmény xyz.o fájl egyből futtatható. Ez awk-n is ilyen?
-
bambano
titán
természetes alapú logaritmus van benne, akkor minden van benne.
C-ben ezt, szerintem bonyolultabb lenne, mint awk-ban.
másik lehetőség, hogy közvetlenül töltöd adatbázisba az adatot és akkor számolsz logaritmust, amikor lekérdezed az adatot. -
CPT.Pirk
Jómunkásember
a szeparáló karakter általában egy jó ötlet, a kérdés, hogy az fpga-t egyszerűbb-e újraprogramozni, vagy a shell szkriptet egyszerűbb mókolni. szerintem a második, de megvárjuk Jester01 kollégát a szokásos sormintáival

sedben pl. annyi, hogy négy darab számot le kell választani egy regexp-pel, valami ilyesmi lehet:
echo 12345678| sed -e 's,\([0-9]\{4\}\)\([0-9]\{4\}\),echo $(( \1 / \2 )),'de lehet awk-ban is és akkor rögtön megcsinálhatja az osztást (a shell egész számokat kezel).
Igen, a shell egész számos. Az awk alkalmas a 10-es alapú logaritmus számolására is?
Ez az awk szimpatikus, de még sosem használtam. Talán C-nél kellene maradnom, bár sosem tanították meg rendesen, így igazából az sem annyira az én világom.
-
bambano
titán
Megvan a válasz, a cat érti az új sor (decimális 10) karakterét, valszeg a többi vezérlő karaktert is. Gyönyörűen írogatja a dolgokat ilyen formában, ha 9. byte az új sor byte-ja.
xxxxyyyy
xxxxyyyy
xxxxyyyyMost annyi kellene, hogy valamilyen módon szétszedem xxxx yyyy -ra a 8 számjegyet, hogy lehessen osztani yyyy -t xxxx -el. Tegyek be valami szeparáló karaktert, amire egy függvény rá tud keresni, vagy számolgassak karaktereket?
Mondjuk ez a bin -> bcd átalakítás nem volt éppen egyszerű téma.
a szeparáló karakter általában egy jó ötlet, a kérdés, hogy az fpga-t egyszerűbb-e újraprogramozni, vagy a shell szkriptet egyszerűbb mókolni. szerintem a második, de megvárjuk Jester01 kollégát a szokásos sormintáival

sedben pl. annyi, hogy négy darab számot le kell választani egy regexp-pel, valami ilyesmi lehet:
echo 12345678| sed -e 's,\([0-9]\{4\}\)\([0-9]\{4\}\),echo $(( \1 / \2 )),'de lehet awk-ban is és akkor rögtön megcsinálhatja az osztást (a shell egész számokat kezel).
-
CPT.Pirk
Jómunkásember
Megvan a válasz, a cat érti az új sor (decimális 10) karakterét, valszeg a többi vezérlő karaktert is. Gyönyörűen írogatja a dolgokat ilyen formában, ha 9. byte az új sor byte-ja.
xxxxyyyy
xxxxyyyy
xxxxyyyyMost annyi kellene, hogy valamilyen módon szétszedem xxxx yyyy -ra a 8 számjegyet, hogy lehessen osztani yyyy -t xxxx -el. Tegyek be valami szeparáló karaktert, amire egy függvény rá tud keresni, vagy számolgassak karaktereket?
Mondjuk ez a bin -> bcd átalakítás nem volt éppen egyszerű téma.
-
CPT.Pirk
Jómunkásember
Ohh tényleg, hiszen 4 biten jön be a BCD szám, csak elé kell tenni még 2-t. FPGA-ban ez meg különösen egyszerű
![;]](//cdn.rios.hu/dl/s/v1.gif)
Ebéd után remélem már tudok mondani valami eredményt.
-
bambano
titán
Ez jó ötlet.
Tehát ha hozzáadok a 0-hoz 48-at, akkor kapom az ascii beli 0-t. Magyarul ha elküldöm az 110000 -t a terminálnak, akkor egy 0-t kell lássak a cat-al. (és így tovább)
Még hozzáadni sem kell, egy "case" függvénnyel kvázi statikusan le lehet írni, hogy ha x a bemenet, akkor y a kimenet, a mindössze 10 érték miatt ez nem is bonyolult.
Ha az egészet befoglalom STX, ETX karakterek közé (vagy valamelyik hasonló közé), akkor a cat ezt meg fogja érteni, vagy kitolja ezeket is a fájlba?
szerintem a cat mindent áttol, ami nem eof.
case függvény sem kell, egyszerűen fixre drótozod azt a két bited a kimenetben.
-
Jester01
veterán
Na jó, rájöttem, annyira nem nehéz az alapokat megírni. Szóval írtam egy pici scriptet, ami kitolja egy txt fájlba az értékeket. Viszont ha od-vel csinálom, akkor az előzőben vázolt probléma fent áll, ha rossz helyen kapja el a számokat, akkor minden érték hibás lesz.
cat-al pedig csak ascii karakterek mennek a fájlba, ahogy nézem, ez nem is alkalmas arra, amit szeretnék.
Tudtok valamit, ami az od-t kiváltaná?
Nem tudom az od miért rontja el illetve a cat miért lenne jó. Viszont ha így van, akkor persze a cat-tal (vagy dd-vel) olvashatsz, az od-vel meg konvertálhatsz, például:
dd if=/dev/ttyUSB0 bs=4 count=1 | od -An -d
-
CPT.Pirk
Jómunkásember
Ez jó ötlet.
Tehát ha hozzáadok a 0-hoz 48-at, akkor kapom az ascii beli 0-t. Magyarul ha elküldöm az 110000 -t a terminálnak, akkor egy 0-t kell lássak a cat-al. (és így tovább)
Még hozzáadni sem kell, egy "case" függvénnyel kvázi statikusan le lehet írni, hogy ha x a bemenet, akkor y a kimenet, a mindössze 10 érték miatt ez nem is bonyolult.
Ha az egészet befoglalom STX, ETX karakterek közé (vagy valamelyik hasonló közé), akkor a cat ezt meg fogja érteni, vagy kitolja ezeket is a fájlba?
-
bambano
titán
Ahogy nézem, ez nem is egyszerű feladat. FPGA-ban nem nagyon van olyan, hogy ascii.
Talán az járható út, hogy BCD átalakítást csinálok, majd pedig a számjegyeket egy LUT táblában leírtak szerint átalakítom az ASCII kódjukra, és azt küldöm el. Trükkös lesz. [link]
Kicsit egyszerűbb lenne az od, csak hogy miért téveszti el a kezdést, az jó kérdés.
a bcd->ascii konverzió szerintem annyi, hogy hozzáadsz 48-at a byte értékéhez, vagy másképp mondva beállítod a 32-es és a 16-os helyiértékű biteket egybe.
szerk: lemaradtam az elejéről, nem emlékeztem, hogy fpga-n csinálod. ott lehet, bonyolítás ez
-
CPT.Pirk
Jómunkásember
Ahogy nézem, ez nem is egyszerű feladat. FPGA-ban nem nagyon van olyan, hogy ascii.
Talán az járható út, hogy BCD átalakítást csinálok, majd pedig a számjegyeket egy LUT táblában leírtak szerint átalakítom az ASCII kódjukra, és azt küldöm el. Trükkös lesz. [link]
Kicsit egyszerűbb lenne az od, csak hogy miért téveszti el a kezdést, az jó kérdés.
-
bambano
titán
nem bcd-ben, hanem olvasható ascii-ban. de igen, erre gondolok, és akkor nem kellene od-vel vitézkedni. szám sorvége, vagy szám | szám sorvége ez jöhetne belőle.
-
CPT.Pirk
Jómunkásember
Nem mikrovezérlő, ott nem tudom hogyan zajlik a soros port móka.
Szóval arra gondolsz, hogyha decimális formában küldöm át, pl. BCD kódban, akkor a cat parancs már számokat fog nekem kiadni? Ezt relatíve könnyen meg tudom csinálni, mert van egy kész bin - bcd konverterem.
-
bambano
titán
Na jó, rájöttem, annyira nem nehéz az alapokat megírni. Szóval írtam egy pici scriptet, ami kitolja egy txt fájlba az értékeket. Viszont ha od-vel csinálom, akkor az előzőben vázolt probléma fent áll, ha rossz helyen kapja el a számokat, akkor minden érték hibás lesz.
cat-al pedig csak ascii karakterek mennek a fájlba, ahogy nézem, ez nem is alkalmas arra, amit szeretnék.
Tudtok valamit, ami az od-t kiváltaná?
ha te programozod a mikrokontrollert, akkor miért nem decimálisan iratod ki a soros portra?
-
CPT.Pirk
Jómunkásember
Na most valami tanácsot szeretnék kérni. Még mindig a soros port olvasás gondom van.
Ha od-val nézem a /dev/ttyUSB0 -t, akkor vagy eltalálja, hol kezdek adatot küldeni, vagy nem. Úgy csináltam meg az adat szerkezetet, hogy 00 00 a kezdést jelöli, FF FF pedig a végét, és a közte lévő 2 darab szám értékére van szükségem.
Amikor jó, akkor ilyen formátuma van a kimenetnek: (od -An -t x1 /dev...)
00 00 xx 0x xx 0x FF FF 00 00 xx 0x xx 0x FF FF(xx 0x a normális adat forma a 12 bites számaimhoz)
Más esetekben meg ott indul, ahol gondolja. Tehát van, hogy 00 xx 0x xx 0x FF FF ..., van hogy FF 00 00 xx 0x xx 0x FF FF 00 00 xx 0x xx 0x FF
Amikor jó helyen kapja el, akkor minden érték stimmel. Ha nem, akkor meg rossz párokat rak össze, pl. utolsó példánál az FF 00, az 00 xx, és az 0x FF fogják alkotni a számpárokat, ami nem jó.
Nem tudom hova tenni az od ilyen viselkedését. Olyanra tudtok mondani egy egyszerű szkriptet, hogy egyszerűen pl. lementi a cat /dev/ttyUSB0 kimenetét egy fájlba, de olvasható formában? Terminálban ez a parancs kidob egy rakás kérdőjel szimbólumot és semmi mást.
Na jó, rájöttem, annyira nem nehéz az alapokat megírni. Szóval írtam egy pici scriptet, ami kitolja egy txt fájlba az értékeket. Viszont ha od-vel csinálom, akkor az előzőben vázolt probléma fent áll, ha rossz helyen kapja el a számokat, akkor minden érték hibás lesz.
cat-al pedig csak ascii karakterek mennek a fájlba, ahogy nézem, ez nem is alkalmas arra, amit szeretnék.
Tudtok valamit, ami az od-t kiváltaná?
-
CPT.Pirk
Jómunkásember
Na most valami tanácsot szeretnék kérni. Még mindig a soros port olvasás gondom van.
Ha od-val nézem a /dev/ttyUSB0 -t, akkor vagy eltalálja, hol kezdek adatot küldeni, vagy nem. Úgy csináltam meg az adat szerkezetet, hogy 00 00 a kezdést jelöli, FF FF pedig a végét, és a közte lévő 2 darab szám értékére van szükségem.
Amikor jó, akkor ilyen formátuma van a kimenetnek: (od -An -t x1 /dev...)
00 00 xx 0x xx 0x FF FF 00 00 xx 0x xx 0x FF FF(xx 0x a normális adat forma a 12 bites számaimhoz)
Más esetekben meg ott indul, ahol gondolja. Tehát van, hogy 00 xx 0x xx 0x FF FF ..., van hogy FF 00 00 xx 0x xx 0x FF FF 00 00 xx 0x xx 0x FF
Amikor jó helyen kapja el, akkor minden érték stimmel. Ha nem, akkor meg rossz párokat rak össze, pl. utolsó példánál az FF 00, az 00 xx, és az 0x FF fogják alkotni a számpárokat, ami nem jó.
Nem tudom hova tenni az od ilyen viselkedését. Olyanra tudtok mondani egy egyszerű szkriptet, hogy egyszerűen pl. lementi a cat /dev/ttyUSB0 kimenetét egy fájlba, de olvasható formában? Terminálban ez a parancs kidob egy rakás kérdőjel szimbólumot és semmi mást.
-
lapa
veterán
jaj, bocs hogy csak most. ha szeretnél küzdeni kiszedhetek egy részt, de mint írtam megoldotta végül a notepad++ textfx-je.
az más kérdés, hogy az meg csinált más hibákat, de már nem érdekel, majd ujjgyakorlatnak megcsinálom.
-
eriktoth
tag
-
bambano
titán
Üdv van a következő kódom es syntaxis hibat jelez:
while read file
isdir=false
isfile=false
for f in $file/*
do
if [ -d $f ] ; then
isdir=true
else isfile=true
fi
done
doneA lényege az lenne, hogy megnézi hogy a megadott mappában vannak e másik mappák és fájlok. Vagy esetleg valakinek valami jobb megoldás? Nekem elsőre ilyesmi ugrott be.
így első ránézésre, teszt nélkül:
while read file; domásrészt meg inkább find könyvtarnev -type d és -type f
-
eriktoth
tag
Üdv van a következő kódom es syntaxis hibat jelez:
while read file
isdir=false
isfile=false
for f in $file/*
do
if [ -d $f ] ; then
isdir=true
else isfile=true
fi
done
doneA lényege az lenne, hogy megnézi hogy a megadott mappában vannak e másik mappák és fájlok. Vagy esetleg valakinek valami jobb megoldás? Nekem elsőre ilyesmi ugrott be.
-
bambano
titán
hát neme. végül úgy döntöttem megpróbálom kiszedetni belőle az összes felesleges üres sort notepad++-szal. most megnéztem és a textfx pluginban nem csak "delete empty lines" van, hanem "delete surplus empty lines" is. szóval ráeresztettem végül.
ezzel küzdött egy darabig, és látszólag oké lett. mivel valami a komment blokkok körül nem stimmel a seamonkey-nak, most inkább kitöröltem az összes ilyet is (csak inaktív tartalom volt, semmi egyéb lényeges).
azt továbbra se tudom mitől nem műxött ugyanez sed-ben, de mindegy is. buktam pár órát. köszi ettől függetlenül.
a sok soros paraméternél nem tudom, hogy a shell nem rakja-e össze egy sorba...
esetleg abban a html-ben azokat a sorokat ki tudod-e rakni valami publikus helyre, amiket törölni kell és nincs bennük semmi értékes infó?
-
lapa
veterán
hát neme. végül úgy döntöttem megpróbálom kiszedetni belőle az összes felesleges üres sort notepad++-szal. most megnéztem és a textfx pluginban nem csak "delete empty lines" van, hanem "delete surplus empty lines" is. szóval ráeresztettem végül.
ezzel küzdött egy darabig, és látszólag oké lett. mivel valami a komment blokkok körül nem stimmel a seamonkey-nak, most inkább kitöröltem az összes ilyet is (csak inaktív tartalom volt, semmi egyéb lényeges).
azt továbbra se tudom mitől nem műxött ugyanez sed-ben, de mindegy is. buktam pár órát. köszi ettől függetlenül.
-
bambano
titán
mittomén mivel mit lehet csinálni, azért vagyok itt. (bocs, csak a hülye helyzet idegesít már, hogy a 21. században ekkora gond egy mezei htm kezelése mindenféle bugok nélkül).
szóval nekem a szimpla "üres sor eltűntetős sed" se műx.
ezt tudom elmondani a fájlról:
lapa@inox:/io$ enca wag.htm -L hungarian
7bit ASCII characters
Mixed line terminators
lapa@inox:/io$most ez jó vagy rossz?
nagyjából odáig jutottam, hogy a fájlba az első komment blokkba rak a seamonkey valami 700 ezer üres sort. vagy legalábbis egy helyre biztos rakott.
előbb megnyitottam gedit-tel, először sírt, hogy nem ismeri a kódolást. mondtam neki, hogy 8859-2. akkor nagy nehezen megnyitotta, sőt még a "-->" -t is megtalálta. akkor fogtam és kijelöltem-kitöröltem a 700 ezer sort. elmentettem, erre a 29 megából lett 52. gyanús, hogy ez nem a duplája, szóval gondolom van minden komment blokkban pár százezer fölös sor.
most azért nem műxenek a sedek, mert nem-utf-8?
már nincs semmilyen igényem, csak tűnjenek el az üres LF és CR LF sorok.
publikus az a html?
-
lapa
veterán
mittomén mivel mit lehet csinálni, azért vagyok itt. (bocs, csak a hülye helyzet idegesít már, hogy a 21. században ekkora gond egy mezei htm kezelése mindenféle bugok nélkül).
szóval nekem a szimpla "üres sor eltűntetős sed" se műx.
ezt tudom elmondani a fájlról:
lapa@inox:/io$ enca wag.htm -L hungarian
7bit ASCII characters
Mixed line terminators
lapa@inox:/io$most ez jó vagy rossz?
nagyjából odáig jutottam, hogy a fájlba az első komment blokkba rak a seamonkey valami 700 ezer üres sort. vagy legalábbis egy helyre biztos rakott.
előbb megnyitottam gedit-tel, először sírt, hogy nem ismeri a kódolást. mondtam neki, hogy 8859-2. akkor nagy nehezen megnyitotta, sőt még a "-->" -t is megtalálta. akkor fogtam és kijelöltem-kitöröltem a 700 ezer sort. elmentettem, erre a 29 megából lett 52. gyanús, hogy ez nem a duplája, szóval gondolom van minden komment blokkban pár százezer fölös sor.
most azért nem műxenek a sedek, mert nem-utf-8?
már nincs semmilyen igényem, csak tűnjenek el az üres LF és CR LF sorok.
-
bambano
titán
üdv. van egy olyan anomáliám, hogy a moron seamonkey berakott az eredetileg 2,2 mb-s htm fileomba 19 mb-nyi felesleges üres sort (LF).
nagyjából semelyik platform semelyik megoldásával nem sikerült eddig megoldani. múltkor már a notepad++ multiline find & replace-e megcsinált egy ugyanilyet, de most se winen, se linuxon nem csinál semmit se (homokóra akármennyi ideig hagyom).
röviden az érdekelne, hogy LF LF LF LF-ből csináljon nekem a shell egy LF-et (magyarul töröljön 3 felesleges sort).
adott esetben LF LF LFCR LF -ből LF is érdekelne.
próbáltam egyelőre más, egyszerűbb dolgokat de sajnos kevés sikerrel. bocs, ha lehet most nem állnék neki guglizni, ha valaki tud egy gyorsat mondani akkor hajrá. köszi.
awk-val sor hosszra válogatva nem lehet takarítani?
a crlf - lf cserét meg vagy tr-rel vagy unix2dos/dos2unix párossal csinálnám. -
lapa
veterán
üdv. van egy olyan anomáliám, hogy a moron seamonkey berakott az eredetileg 2,2 mb-s htm fileomba 19 mb-nyi felesleges üres sort (LF).
nagyjából semelyik platform semelyik megoldásával nem sikerült eddig megoldani. múltkor már a notepad++ multiline find & replace-e megcsinált egy ugyanilyet, de most se winen, se linuxon nem csinál semmit se (homokóra akármennyi ideig hagyom).
röviden az érdekelne, hogy LF LF LF LF-ből csináljon nekem a shell egy LF-et (magyarul töröljön 3 felesleges sort).
adott esetben LF LF LFCR LF -ből LF is érdekelne.
próbáltam egyelőre más, egyszerűbb dolgokat de sajnos kevés sikerrel. bocs, ha lehet most nem állnék neki guglizni, ha valaki tud egy gyorsat mondani akkor hajrá. köszi.
hát mostmár végigtoltam a gugli első tíz találatát, de semmi értelmes eredmény.
ettől félig függetlenül: nemtom, hogy ezt a többsorost lehet így írni?
lapa@inox:/io$ sed -i '/^$/{
> N
> /^\n$/D
> }' wag.htm > xxx.htm
lapa@inox:/io$nem mintha csinálna akármit is, csak kérdem.
-
lapa
veterán
üdv. van egy olyan anomáliám, hogy a moron seamonkey berakott az eredetileg 2,2 mb-s htm fileomba 19 mb-nyi felesleges üres sort (LF).
nagyjából semelyik platform semelyik megoldásával nem sikerült eddig megoldani. múltkor már a notepad++ multiline find & replace-e megcsinált egy ugyanilyet, de most se winen, se linuxon nem csinál semmit se (homokóra akármennyi ideig hagyom).
röviden az érdekelne, hogy LF LF LF LF-ből csináljon nekem a shell egy LF-et (magyarul töröljön 3 felesleges sort).
adott esetben LF LF LFCR LF -ből LF is érdekelne.
próbáltam egyelőre más, egyszerűbb dolgokat de sajnos kevés sikerrel. bocs, ha lehet most nem állnék neki guglizni, ha valaki tud egy gyorsat mondani akkor hajrá. köszi.
-
cAby
tag
-
bambano
titán
Áhh értem, köszi a felvilágosítást. Maradok az előbbi megoldásnál inkább.

Már ki is tudtam sed-el szedni ami nem kell oda:
sed -e "s/Cpu(s): //" | sed -e "s/%us,//" | sed -e "s/%sy,//" | sed -e "s/%ni,//" | sed -e "s/%id,//" | sed -e "s/%wa,//" | sed -e "s/%hi,//" | sed -e "s/%si,//" | sed -e "s/%st//"
De csak úgy működik, ha előbb az eredményt elmentem egy cpu.txt-be
aztán az elejére írom, hogy cat cpu.txt | sed .... és így elmentem egy másikba.De így nem, hogy:
top -b -d 1| while read p; do echo $(date +"%T") $p; done | grep Cpu | sed -e "s/Cpu(s): //" | sed -e "s/%us,//" | sed -e "s/%sy,//" | sed -e "s/%ni,//" | sed -e "s/%id,//" | sed -e "s/%wa,//" | sed -e "s/%hi,//" | sed -e "s/%si,//" | sed -e "s/%st//"Ilyet nem lehet, hogy egyből így mentse le? :\
a sedet felesleges minden művelethez forkolni, elég egyszer és az összes parancsot megadni neki egymás után.
lehet, hogy ide is jester01 ötlete kell.
-
cAby
tag
Ezek a különböző módban töltött időadatok (user,system,nice, idle, wait, egyebek)
Százalékot úgy kapsz belőle mint ahogy a top is - két egymás utáni értéket kivonsz és osztod a teljes idővel.Mondjuk ha kifejezetten a monitorozás a cél, és nem pedig a script írás, akkor nyilván vannak erre kész megoldások.
Áhh értem, köszi a felvilágosítást. Maradok az előbbi megoldásnál inkább.

Már ki is tudtam sed-el szedni ami nem kell oda:
sed -e "s/Cpu(s): //" | sed -e "s/%us,//" | sed -e "s/%sy,//" | sed -e "s/%ni,//" | sed -e "s/%id,//" | sed -e "s/%wa,//" | sed -e "s/%hi,//" | sed -e "s/%si,//" | sed -e "s/%st//"
De csak úgy működik, ha előbb az eredményt elmentem egy cpu.txt-be
aztán az elejére írom, hogy cat cpu.txt | sed .... és így elmentem egy másikba.De így nem, hogy:
top -b -d 1| while read p; do echo $(date +"%T") $p; done | grep Cpu | sed -e "s/Cpu(s): //" | sed -e "s/%us,//" | sed -e "s/%sy,//" | sed -e "s/%ni,//" | sed -e "s/%id,//" | sed -e "s/%wa,//" | sed -e "s/%hi,//" | sed -e "s/%si,//" | sed -e "s/%st//"Ilyet nem lehet, hogy egyből így mentse le? :\
-
Jester01
veterán
Megnéztem akkor amikor mondtad, de egy ilyennel találtam szemben magam:
cpu 199957490 1300639 49153374 7781071864 207319963 25528 845323 0 0Fogalmam sincs mit jelentenek ezek a számok, ill. hogyan formázzam, hogyan kapjak ebből %-os értéket.
Ezért akartam mással megoldani. 
De ez a megoldás, amit bambano írt jó lesz. Ha meg ki tudom sed-el szedni ami nem kell oda, akkor tökéletes lesz nekem.
Elhiszem, hogy a másik szebb megoldás lenne, de sajnos nem értek ilyen szinten a dolgokhoz.

Ezek a különböző módban töltött időadatok (user,system,nice, idle, wait, egyebek)
Százalékot úgy kapsz belőle mint ahogy a top is - két egymás utáni értéket kivonsz és osztod a teljes idővel.Mondjuk ha kifejezetten a monitorozás a cél, és nem pedig a script írás, akkor nyilván vannak erre kész megoldások.
-
bambano
titán
-
cAby
tag
Megnéztem akkor amikor mondtad, de egy ilyennel találtam szemben magam:
cpu 199957490 1300639 49153374 7781071864 207319963 25528 845323 0 0Fogalmam sincs mit jelentenek ezek a számok, ill. hogyan formázzam, hogyan kapjak ebből %-os értéket.
Ezért akartam mással megoldani. 
De ez a megoldás, amit bambano írt jó lesz. Ha meg ki tudom sed-el szedni ami nem kell oda, akkor tökéletes lesz nekem.
Elhiszem, hogy a másik szebb megoldás lenne, de sajnos nem értek ilyen szinten a dolgokhoz.

-
Jester01
veterán
Ezt a 2 fogom akkor használni:
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 &Tehát így az eredeti script amit csináltam nem is kell.
Kérdés, hogy a felső 2 parancsot pontosan 1 időben el lehet indítani?
szerk.: Úúú.. a top-os mégsem jó, mert amit kiír az ez:
01:49:48 AM Cpu(s): 7.4%us, 12.0%sy, 0.0%ni, 12.0%id, 68.3%wa, 0.0%hi, 0.3%si, 0.0%st
és így nem tudok statisztikát csinálni. Az értékek mellé nem kellene más, tehát:
7.4%us, helyett csak 7.4 kéne. Ezt gondolom nem lehet kiszedni. :Sszerk.: Lehet, hogy ronda megoldás de Notepad++-ban mentés után replace-szel meg lehet csinálni.

Gyönyörűen elbonyolítottad és csak a megoldandó problémákat gyártod magadnak. Továbbra is javasolnám a /proc olvasását. Mindjárt lenne közel azonos időpontról statisztikád amit aztán úgy formázol ahogy akarsz.
-
cAby
tag
Hmm.. tényleg, elő is kaptam régi jegyzeteimet és megtudtam, hogy cat akarmi | sed s/eztcsereld/emerre/ a parancs.
Neki is ugrottam, de nem jön össze eddig még

Ez egy sor:
02:02:38 Cpu(s): 16.8%us, 13.7%sy, 0.0%ni, 7.6%id, 62.0%wa, 0.0%hi, 0.0%si, 0.0%stTehát, le akarom cserélni a "%us, " (szóköz is van) egy szóközre, ugyan így a többi, kiv a %st, mert ott azt csak törölni kellene.
A szóközt azt hogyan kellene jelölni?
Eddig ez votl a próbám, amivel csúnyán megbuktam.
top -b -d 1| while read p; do echo $(date +"%T") $p; done | grep Cpu | sed s / %sy,' ' /' ' -
Jester01
veterán
soronkénti módról blokkmódra kapcsol és nem látom, hogy konkrétan miért
grep --line-buffered

(bár man szerint ez grep output, de hátha)
-
bambano
titán
Ezt a 2 fogom akkor használni:
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 &Tehát így az eredeti script amit csináltam nem is kell.
Kérdés, hogy a felső 2 parancsot pontosan 1 időben el lehet indítani?
szerk.: Úúú.. a top-os mégsem jó, mert amit kiír az ez:
01:49:48 AM Cpu(s): 7.4%us, 12.0%sy, 0.0%ni, 12.0%id, 68.3%wa, 0.0%hi, 0.3%si, 0.0%st
és így nem tudok statisztikát csinálni. Az értékek mellé nem kellene más, tehát:
7.4%us, helyett csak 7.4 kéne. Ezt gondolom nem lehet kiszedni. :Sszerk.: Lehet, hogy ronda megoldás de Notepad++-ban mentés után replace-szel meg lehet csinálni.

szerintem nem lehet pont egyszerre elindítani
legfeljebb pont egy perc különbséggel, akkor jobban fog kinézni a logseddel bármit ki lehet szedni

-
cAby
tag
Ezt a 2 fogom akkor használni:
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 &Tehát így az eredeti script amit csináltam nem is kell.
Kérdés, hogy a felső 2 parancsot pontosan 1 időben el lehet indítani?
szerk.: Úúú.. a top-os mégsem jó, mert amit kiír az ez:
01:49:48 AM Cpu(s): 7.4%us, 12.0%sy, 0.0%ni, 12.0%id, 68.3%wa, 0.0%hi, 0.3%si, 0.0%st
és így nem tudok statisztikát csinálni. Az értékek mellé nem kellene más, tehát:
7.4%us, helyett csak 7.4 kéne. Ezt gondolom nem lehet kiszedni. :Sszerk.: Lehet, hogy ronda megoldás de Notepad++-ban mentés után replace-szel meg lehet csinálni.

-
bambano
titán
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 0erre: 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 &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
-
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 0erre: 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 & -
bambano
titán
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 -
bambano
titán
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 0Ezt 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,
Csabiszö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? -
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 0Ezt 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 -
eriktoth
tag
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
doneIgény szerint lehet vizsgálni, hogy az expected is létezzen.

Köszönöm, látni, hogy még láma vagyok
-
Jester01
veterán
Ü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
doneNos 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öszA 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
doneIgény szerint lehet vizsgálni, hogy az expected is létezzen.
-
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
doneNos 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 -
Jester01
veterán
-
bambano
titán
-
gyugyo22
csendes tag
a győztes pedig

ps -o pid,comm | uniq -D -f 1
echo "kill cmd? pid: " | read PID
kill -9 $PID -
Jester01
veterán
-
bambano
titán
-
Jester01
veterán
akkó' most tartsd meg a heti shell szkript oktatásodat

é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.
Jó ha a ps rendez akkor azt elfogadom. A sort viszont tud uniq-ni is

-
bambano
titán
akkó' most tartsd meg a heti shell szkript oktatásodat

é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.
-
Jester01
veterán
-
bambano
titán
Ü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 psVan e valami elképzelésetek, arról hogy hogy oldanátok meg?
uniq manualját érdemes átnézni.
-
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 psVan e valami elképzelésetek, arról hogy hogy oldanátok meg?
-
Jester01
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.
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.
-
lapa
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.
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.
-
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.
Megnéztem, jónak tűnik - leállítja a sleep-et.
-
Jester01
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.
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.
-
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.
-
Jester01
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
donede 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 directorykö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.
Inkább exit 0 vagy hasonló a célszerű és ahogy bambano mondta, a trap elég egyszer.
-
bambano
titá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
donede 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 directorykö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.
szerintem trap utasítást egyszer kell belerakni a programba, lehetőleg az elejére valahova.
-
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
donede 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 directorykö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.
-
Jester01
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
doneMár bocsánat a kérdésért, de hol is állítod be a trap-ot?

-
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 -
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? -
bambano
titán
-
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
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
lapa
veterán
-
bambano
titán
-
eriktoth
tag
-
bambano
titán
egész pontosan mit is szeretnél?
-
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
doneSzé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 -
Jester01
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.
meg. man bash -> trap.
-
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.
-
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?
-
eriktoth
tag
-
bambano
titán
beadandó határidős időszak van?

egyébként find.
-
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 -
Siriusb
veterán
-
Jester01
veterán
-
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"
fiEz miért nem működik?
-
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 fogunkValahogy nekem ez teljesen érthetetlen, valaki ha tudna hozzáfűzni valamit esetleg
Előre is kösz
-
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. -
bambano
titán
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.
![;]](//cdn.rios.hu/dl/s/v1.gif)
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?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. -
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.
![;]](//cdn.rios.hu/dl/s/v1.gif)
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? -
bambano
titán
stty -F /dev/ttyUSB0 9600 cread crtscts cs8 -cstopb -parenb Ez így már működik, ha így írom be, akkor villog az adás led, tehát a modulom és a gép között létrejött a kapcsolat. Viszont az stty szerint továbbra sem változott a baudrate, bár ha az lenne a valóság, akkor szerintem nem küldözgetne a modulom.
Csináltam egy N4 nevű fájlt, majd kiadtam az od-s parancsot:
od -An -d -N4 /dev/ttyUSB0, ami után már nem küld a modulom semmit a gépnek, a fájlba nem kerül semmi. Milyen formában kellene ezt kiadni? Ha terminálban adom ki, akkor csak kilépni lehet a terminálból.
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.
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Autós topik
- Építő/felújító topik
- PlayStation 5
- Motoros topic
- exHWSW - Értünk mindenhez IS
- Forza sorozat (Horizon/Motorsport)
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Mibe tegyem a megtakarításaimat?
- Samsung LCD és LED TV-k
- A legújabb processzorokra kényszeríti partnereit az Intel
- További aktív témák...
- Eladó jogtiszta, Windows 11/10, Office 2019/2021/2024, Fizikai és Digitális licencek, Számlával.
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Game Pass Ultimate előfizetések 3 - 36 hónapig azonnali kézbesítéssel! 13 hónap ultimate - 45.000 ft
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- MEGA AKCIÓ! - Jogtiszta Windows - Office & Autodesk & CorelDRAW - Azonnal - Számlával - Garanciával
- BESZÁMÍTÁS! ASROCK B650M R7 8700F 32GB DDR5 512GB SSD RX 7900 16GB Jonsbo D31 TG fehér ADATA 750W
- 27% - ASUS ROG STRIX X870-F GAMING WIFI Alaplap
- Telefon felvásárlás!! Honor 400 Lite, Honor 400, Honor 400 Pro
- Eladó egy Samsung a54
- BESZÁMÍTÁS! Gigabyte Gaming OC RTX 4080 Super 16GB videokártya garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


![;]](http://cdn.rios.hu/dl/s/v1.gif)
Ezért akartam mással megoldani. 






