Új hozzászólás Aktív témák
-
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,' ' /' ' -
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.
-
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 & -
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.
-
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. -
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? -
lapa
veterán
igen, var/log/-ban van most, és nem is akkora gond, mert ssd. viszont jobban szeretném, ha a /home/ -on belül is meglenne. és akkor gondoltam inkább óránként egy spinup-spindown és közte meg mehet a /tmp/-be, ami ramdrive.
de az is lehet, hogy hagyom az ssd-re írni 20 mp-nként, aztán néha kimásolni a /home/-ba.
egy fájlban lesz, de az jó hogy írtál azért ilyen sample-t is.
mondjuk még nem teljesen világos, hogy ez miért oldja meg a késleltetést.
amúgy csináltam egy újabb rev-et, de nem műx:
#!/bin/bash
touch /tmp/sensor
most=`date +%s`
lejar=`date --date='3580 second' +%s`
while [ $most - $lejar < 0 ]
do
most=`date +%s`
miko=`date +"%Y.%m.%d %H:%M:%S"`
mit=`cat /media/sensor/10.*/temperature`
echo $miko$mit >> /tmp/sensor
sleep 15
doneerre aszongya:
./sensor.sh: line 8: 0: No such file or directory
UPD: ahh:
while [ $most - $lejar < 0 ] --> while [ $most -le $lejar ]
-
lapa
veterán
köszi a segítséget, ilyet hoztam végül össze:
#!/bin/sh
lejar=`date --date='3580 second'`
for i in $(seq 1 9999999); do
if [ $(($date - $lejar)) < 0 ]; then
miko=`date +"%Y.%m.%d %H:%M:%S"`
mit=`cat /media/sensor/10.*/temperature`
echo $miko$mit >> /tmp/sensor
sleep 15
else
exit 0
fi
donesajnos mint kiderült nem jó a tick szerinti ciklus, mert a cat... eltart jópár másodpercig (1-wire összes szenzor lekér). még nem teszteltem működik-e egyátalán.
(mindemellett ezen a ponton még ki is kéne írnia egy második fájlba az elmúlt egy órában történteket, de azt már megoldom cat -tal.)
köszi mindig.
-
CPT.Pirk
Jómunkásember
No odáig eljutottam, hogy a /dev/serial... alatt is létrejön eszköz, mikor csatlakoztatom a modult, valamint a /dev/ttyUSB0 is. Ahogy nézem, ez utóbbit szokták kezelni.
Nem igazán találtam utalást Linux alatt az "online" loggolására, csak Windowsos megoldásokat, valami ilyesmit találtam Linuxra:
exec </dev/ttyUSB0
stty igncr
while read -r; do
echo "[$(date)]: $REPLY"
done </dev/ttyUSB0 >>/usb/BigDrive/CurrentCost/CurrentCost.log -
sonar
addikt
Megy a find aposztróf és idézőjel nélkül is.
Amit te irtál az működik, de csak a kiterjesztést (ami jelen esetben .aod) teszi át nagybetűsre. Én azt szeretném, hogy az egész filenév nagybetűs legyen.Amit én irtam az külön külön működik, de a bajom az amit te is irtál, hogy nincs a sednek bemenete. Csak nem tudom, hogy hogyan adjam át neki.
-
sonar
addikt
Az aposztróf valóban hiányzott, de sajnos nem müxik még igy sem.
A lényeg, hogy bizonyos kiterjesztést nagybetűsen kellene átmásolni X-ből Y-ba.
ash shell és nincsen tr parancs
Valami még mindig hibádzik
find . -maxdepth 1 -iname "*.txt" -exec cp -p {} /tmp/{`sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`} \; -print0 -
-
-
-
-
rt06
veterán
kozben magam is megtalaltam, hogy subshell-ben fut
"én a parancs || echo "xsfgkjf" && exit 1 formát próbálnám, az echo mindig igaz értékkel tér vissza."
ezzel az a gond, hogfy ha az elso ketto kozul barmelyik (akar a parancs, akar az echo) igaz ertekkel ter vissza, a harmadik (exit) resz vegrehajtodik, igy minden esetben kilep a script
a test-es megoldas jo lehetne, viszont egy ./configure, make, vagy make install ellenorzese (foleg egy file patch-elesenek sikeressege) tul sok tobbletmunkaval jarna
amit vegul talaltam es mukodik is, az az alabbi:
parancs || { echo "hiba"; exit 1; }
sajnos egy forumon leltem ra, ahol csak ennyit irtak, azt nem, hogy mi ez es miert mukodik, ha esetleg tudja valaki, szivesen meghallgatom
-
dabadab
titán
Ugy, hogy inkabb megis elsejen futtatnam
Egyebkent meg szerintem kozvetlenul sehogy sem lehet maganak a cronnak elmagyarazni, hogy az utolso napot szeretned, ezert kenytelen vagy trukkozni:
0 0 28-31 * * [ "$(/bin/date +%d -d tomorrow)" = "01" ] && /your/script.sh
(as seen on Google)
-
-
bozsikjanos
csendes tag
Írtam már egy saját shell szkriptet ami snmpwalk-al szedi le a szükséges adatokat és beállítja a grafikonhoz szükséges paramétereket is. Jól is működik.
Azt nem sikerült megoldani, hogy amikor a munin-update lefut, a szkriptet csak azon a node-on futtassa le amelyiken nekem kell. Mert jelenleg a szkript 2x is lefut, azon a gépen, amelyiken a munin szerver van. Ezt értem is miért működik így (mert csak úgy sikerült megoldanom, hogy a munin ne mondja azt,hogy connection refused, mikor a switch-hez akar kapcsolódni, hogy a munin.conf fájlban az address -nek a 127.0.0.1 lett beállítva). De ennek az a következménye, hogy a grafikonokat kétszer hozza létre.
Egyszer azalatt a domain név alatt, ahol nekem szükséges; és még egyszer a munin szerver domain neve alatt.Azt lenne jó tudni, hogy hogyan kell beállítani, hogy ezt a szkriptet csak egyszer futtassa le a munin, annál a node-nál, ahol szükség van rá.
Segítséget előre is köszönöm.
-
FixY67
senior tag
Azt azért elárulhatná valaki, hogy oktális formában megadva a jogokat, a setuid, setgid biteket hogy lehet levakarni egy állományról? (nem tudom, van-e jelentősége, hogy valószínűleg könyvtár volt az áldozat)
Egy Ubuntu 9.10-en próbálkoztam és csak u-s g-s formában működött, numerikusan nem.
Lusta voltam utánanézni, hogy ez bug v. így kell működnie. -
8nemesis8
veterán
Igen, ahhoz viszonyítva oldottam már meg nagyrészt. Már csak egy rendezést kell százalék alapján.
Van egy olyan fájlom, hogy idle_time login_time név
Ebből kellene egy százalékos érték alapján sorba rendeznem!
awkra gondoltam idle/login*100 és név hozzárendelve, azonban egy sorban ezt nem tudom megtenni. Hogyan lehetne? -
Votyesz13
tag
#! /bin/bash
kilep=0;
while([ $kilep -eq 0 ]);
do
echo -n "Kerem a nevet: "
read VAL1;
echo -n "Kerem a hozzatartozo telefonszamot: "
read VAL2;
if [ -z `echo $VAL1` ];
then kilep=1;
fi
if [ -z `echo $VAL2` ];
then kilep=1;
fi
if [ $kilep=0 ];
then
VALSEGED=`grep $VAL1 phone.txt`;
if [ -z `echo $VALSEGED` ];
then
echo "$VAL1:$VAL2" >> phone.txt;
elseecho "Csere(1) vagy nem csere(0)? ";
read VALASZ;
if [ $VALASZ -eq 1 ];
then
grep -v "$VAL1" phone.txt > phone2.txt;
cat phone2.txt > phone.txt
echo "$VAL1:$VAL2" >> phone.txt;
fi
fi
fi
done
rm phone2.txtexit 0;
Na ez egy verzió
hát az lenne a program dolga hogy folyamatosan bekéri a név telefonszám párosokat mintha egy telefonkönyv lenne.Beírja őket egy txt-be folyamatosan.Ha egyezést talál akkor megkérdezi hogy kicserélje-e őket vagy eldobja e az új sort.A program akkor áll le ha üres paramétert kap vagy a névnek vagy a telefonszámnak.Ennyi röviden -
Votyesz13
tag
Nem név és szám lenne a neve hanem az a név pl(Kiss Pista) és a telefonszáma(0671281082) amit bekérek folyamatosan.És ezért kell bele a az if hogy vizsgálja meg hogy ha van már olyan nevű a txt-be amibe beleírunk folyamatosan akkor kérdezzen vissza hogy mi legyen azzal a név szám párossal.Felülírjuk vagy cseréljük arra ami már a txt-be van.Elvileg erről lenne szó
Csak gyakorlatba nem akar működni
-
FixY67
senior tag
-
-
nermal7
csendes tag
Azt már elgondoltam, hogy ugye paraméterként megadok egy fájlt, amiből soronként beolvasok, majd az egyes beolvasásokat más-más fájlba küldöm, attól függően, hogy páros-e, vagy nem...
Ez így helyes? Viszont, hogy hogyan nézne ez így ki, arról fogalmam sincs..Köszi szépen
-
doc
nagyúr
egyelőre a debian az a linux, amiből legtöbbet lehet profitálni, ha át kell ülni nagyobb gépre.
mire gondolsz? en pont azt latom benne, hogy mindenre van sajat, debian-only megoldasa, vagyis az "ismerem a linuxot" es az "ismerem a debiant" kozel sem ugyanaz, a kereskedelmi unixoktol meg meg messzebb all -
doc
nagyúr
viszont pont azert szokas /bin/sh-t hasznalni, mert az az 'sh-szintig' kompatibilis, tehat ha a script sima sh-val fut, akkor futnia kell azzal is, amire a /bin/sh mutat, barmi is legyen az
mondju a debiannak rogeszmeje mindig mindent mashogy csinalni mint mindenki mas :-/az egymasba agyazas valoban nehezkes backtick-kel, de az mar eleve csunya (marmint nem a backtick, az jooo
)
-
ivivan
tag
Ez mondjuk logikus lenne, de nekem legfeljebb az utolsó elem lehet egy pager (én a less-t használom) az első aligha (hacsak nem hagyom ott lustaságból a "cat filename" helyett a "less filename"-et)
És itt sem az egyel kevesebb fork miatt lenne kevesebb az erőforrás igény. -
-
Donkó
csendes tag
#!/bin/bash
if [ $# -eq 0 ]; then #Ha nem adunk meg paramétert akkor ezt kiírja!
echo "Legalabb egy parancssori paramtert meg kell adni!"
#exit 1
fi
MAX=0
MIN=0for i in $* ; do
if ! [ -f $i ]; # ez azt nézi meg melyik nem létezik!
then echo "$i - ez a fajl nem letezik";
else
SORSZAM=`wc -l< $i`;
echo "$i - $SORSZAM sor";if [ $SORSZAM -lt $MIN ]; # Legkisebb ertek.
MIN=`wc -l< $i`;
then MIN=$SORSZAM;
fi
if [ $SORSZAM -gt $MAX ]; #Legnagyobb érték
then MAX=$SORSZAM;
fifi
done
echo "Legrövidebb file: $MIN";
echo "Leghosszabb file: $MAX";
Már átvariáltam így a kódot. Ha olyan fájlt adok meg ami nincs,akkor nem számol. De a MIN érték sehogy sem akkar kijönni. MIN az a legkisebb sorok száma.
Az állománynevet sem tudom odatenni! Hogy melyik a legkisebb és a legnagyobb sor -
VaZso
senior tag
Huhh, való igaz...
Lehet,hogy késő van már?Köszönöm és működik szépen a routeren is, már csak meg kell írnom a feltételvizsgálat többi részét, hogy pl. ne csak idén számoljon megfelelően... habár... de ez már menni fog, csak az előbb voltam ennyire értetlen.
Esetleg, ha valaki tud egy igazán jó és egyszerű leírást erről a script nyelv(ek)ről, annak örülnék. Bár az aktuális feladathoz nincs töblettudásra szükségem, de érdekes dolgokra lehet használni, ezért érdekelne bővebben is.
Mégegyszer köszönöm a segítséged.
-
VaZso
senior tag
Köszi.
Beírtam neki, de sajnos a válasza "0", idézőjel nélkül...
Esetleg más megoldás lehet rá?
...vagy inkább kéne írni egy programot és lefordítani rá?Ezzel az a baj, hogy C-t annyira nem ismerem, Pascal fordítót pedig nem találtam hozzá, elvileg C-t le lehet rá fordítani... Van valami toolchain hozzá és valami mipsel paraméterről beszélnek... amúgy WL-500GD.
-
ngabor2
nagyúr
úgy tudom, hogy kiértékelődik... de ebben nem vagyok 100%-ig biztos. lehet, hogy az idézőjelbe tett $akármivel keverem?
az alaphelyzet az, hogy nagyon sok kt, nagyon sok file-lal. ezért gondoltam az xargs-ra, mert abba biztos, hogy befér, hisz arra tervezték.
én személy szerint úgy oldottam meg korábban, hogy egy file-ba tettem az eredményt, és abból szedegettem ki egyenként a sorokat, nagyon fapasod módszerrel, amit nem akarok beírni, mert bár működik, nem elegáns.
-
bambano
titán
ehh, elég szerencsétlen kétszer regidir-t használni
első esetben egy könyvtárnév string, második esetben változónév.
cd ujdir
(cd regimp3gyujtemeny; find . -name '*.mp3') | while read p ; do
regidir=$(dirname $p)
[ -d $regidir ] || mkdir -p $p
lame <parameterek> regimp3gyujtemeny/$p $p
done -
bambano
titán
Tehát az, hogy egy mezőn ne álljon két figura, az ennyi:
sed -e 's/ //g' -e 's/,/\n/g' allas.txt|sed -e 's/[a-h][1-8]$/|&/' |sort -t\| -k 2 |uniq -t\| -f1 -c|sed -e 's/^[ ]*//'|grep -v ^1
Amit kiír, azon sorokban levő mezőkön több figura áll.
A uniq és a count célszerű használatával a másik részfeladat is egyszerűen megoldható, ennek bizonyítását az olvasóra bízzuk
Szerk: most olvasom végig, kicsit lefutott már ez a thread, sorry
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
- iKing.Hu - Apple 16 Pro Max - Natural Titanium - Új, kipróbált
- BESZÁMÍTÁS! ASUS H610M I5 12400F 32GB DDR5 512GB SSD X 4060 8GB SPIRIT OF GAMER CLONE 3 Chieftec600W
- Hp Prodesk 600 G3/ G5/ G6 SFF-MT / i5 8-9-10 gen, Hp EliteDesk 800 G4 / Win11- Számla, garancia
- 35" ASUS ROG Swift PG35VQ curved GAMER monitor
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest