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: kingpin 08 Července 2009, 08:54:39
-
ahojte :)
Dnes rano mi prisla nova uloha od mojho sefa:
Urobte script gen_files.sh, ktory vam bude generovat nahodne nejake subory v adresary test_files kazdu minutu. Ten vytvorite v home-ovskom adresary uzivatela debian.
Subory mozu byt v tvare napr. file1_{datum}.out, file2_{datum}.out ….
S tym, ze v tom adresary nesmie byt viac ako 10 suborov naraz. !!!!! PODMIENKA
Obsah suborov moze byt hociaky… ale nikdy nie ten isty , to aby sa lisila velkost suborov – nieco vymyslite ako nahodne nieco vkladat do suborov.
Nech je tak napisany, ze si ho spustite ako process na pozadi: ./gen_files.sh &
Takze co by som mohol vediet a co asi nie:
umim:
- zistit ci taky adresar existuje a ak nie tak ho vytvori
- vytvarat subory v tvare file1_{datum}.out
- asi umim zabezpecit aby nebolo v adresari viac ako 10 suborov
Neumim a potrebujem naviest tym spravnym smerom. Aspon na nejake tie manualy:
- nahodne generovanie (nejaka funkcia random???)
- spustanie na pozadi
A este co myslite, mam do tych suborov zapisovat text alebo cisla? Co bude jednoduchsie?
Postupne tu budem davat kusocky mojho kodu :) a dufam ze mi trosicku pomozete.
-
Tak sepiš co máš a my ti když tak pomůžem :)
Neumim a potrebujem naviest tym spravnym smerom. Aspon na nejake tie manualy:
- nahodne generovanie (nejaka funkcia random???)
- spustanie na pozadi
A este co myslite, mam do tych suborov zapisovat text alebo cisla? Co bude jednoduchsie?
Postupne tu budem davat kusocky mojho kodu :) a dufam ze mi trosicku pomozete.
Spuštění na pozadí je to co už jsi psal ./gen_files.sh &, protože & ti spustí proces na pozadí
Náhodný generování je v Bashi jen proměnná $RANDOM, která generuje i velká čísla, proto můžeš využít třeba dělení se zbytkem deseti a podle toho ti to bude vytvářet 0 až 9 souborů :)
let rand=$RANDOM%10
a to dáš do cyklu, kterej ti podle počtu bude vytvářet soubory
A do těch souborů bych třeba vkládal výpis nějakýho příkazu, který se často mění :)
-
s tym & som si myslel ze sef spravil preklep :D
Teraz ma napadlo ze to asi nebudem riesit cez crontab kedze ma bezat na pozadi?
Náhodný generování je v Bashi jen proměnná $RANDOM, která generuje i velká čísla, proto můžeš využít třeba dělení se zbytkem deseti a podle toho ti to bude vytvářet 0 až 9 souborů
ja som zase uvazoval o pouziti sekvencie nieco ako:
for nazov in file$(seq 1 10)_$(date %d%m%y)
do
echo "Vytvaram subory" $nazov
done
Akurat to este treba hodit nejak do TOUCH nech ich vytvori a nie len vypise
a tu funkciu random by som pouzil pre vkladanie obsahu do suboru. Alebo myslis ze je to zly napad? neviem ktorou cestou sa dat...
-
OT: Od kdy zadávají šéfové svým zaměstnancům školní úlohy? :-)
-
OT: Od kdy zadávají šéfové svým zaměstnancům školní úlohy? :-)
Este som na zacviku a tak mi dava take skolni ulohy aby som sa naucil aspon zakladom skriptovania v BASHi.
//Premet na tvojom mieste by som sa nebal :) mat tvoju linuxacku hlavu delam sefa :D
urcitre sa na tu knihu pozriem niekde v shope. A skriptovanie beriem naozaj vazne a moc sa mi to paci :) v kanclu je nas 9 a ja som jediny ktory nieco ako tak vie naskriptovat
-
OT: Od kdy zadávají šéfové svým zaměstnancům školní úlohy? :-)
Este som na zacviku a tak mi dava take skolni ulohy aby som sa naucil aspon zakladom skriptovania v BASHi.
Neuveris ked ti poviem ze som na pozicii Application support administrator :D
Hehe a to já se strachuju, že pak neseženu práci ;D
Este som na zacviku a tak mi dava take skolni ulohy aby som sa naucil aspon zakladom skriptovania v BASHi.
http://tldp.org/LDP/abs/html/ (http://tldp.org/LDP/abs/html/)
Na výuku je dobrá i kniha Mistrovství v Linuxu, pokud to s tímhle myslíš vážně tak si myslím, že se vyplatí do ní investovat. Jsou tam hlavně věci okolo programování v Bashi, sed, awk a podobně :)
-
ja som zase uvazoval o pouziti sekvencie nieco ako:
for nazov in file$(seq 1 10)_$(date %d%m%y)
do
echo "Vytvaram subory" $nazov
done
i=0
while [ $i -lt 10 ]; do
touch "file$i$-(date)"
i=$(($i + 1))
done
Já jsem myslel, že těch souborů má být náhodně 0 až 9 a né vždy přesně 9 třeba, proto jsem tam psal s tím random.
-
jo promin, tak som zle cital, a sef to taky napisal dost blbo. Podla toho ako to napisal je teda v podstate jedno ako sa bude subor volat (to file1_ ... file2... bol len priklad nazvu), hlavne nech ma pri sebe {date %d%m%y}. Asi som si len hladal tu najjednoduchsiu cestu ktoru by som ako tak vedel naskriptovat.
A s tym random by to teda mohlo vyzerat ako? + treba mi tam vymysliet podmienku ak je adresar plny tak vsetky subory zmaz a napln novymi
//Teraz som pisal sefovi jestli to ma byt prave 10 suborov alebo nahodny pocet. Tak az odpise dam vediet
-
Este som na zacviku...
Hehe, tak to je jiná :-)
Držím palce!
A doufám, že ti šéf nemonitoruje síťovou komunikaci :-)
-
ad.1) sefovi by se libilo, kdyby vedel ze tuhle primitivni ulohu za tebe resi nekdo jinej?
ad.2) a tobe je to k cemu, kdyz to mas umet sam ??
man bash
schvalne jsem se podival na vysledek dotazu do guglu `bash create random files` a obavam se, ze na novem miste opravdu dlouho nevydrzis ..
neni totiz ostuda, ze neco nevis (kazdej neco nevi), ale je ostuda, ze i jednoduche a na internetu dostupne veci si neumis vyresit sam ..
Vyzyvam ostatni :: v zajmu hocha a jeho prace ignorujte prosim jeho otazky
-
re ad.1 - jo sefovi by sa to pacilo ze o tom diskutujem aj niekde inde pretoze u nas je politika taka ze ak nevies tak diskutuj. V kancli totiz nemam s kym diskutovat takze hladam inde.
re ad.2 - mne je to k tomu ze ak neviem sam tak mi niekto poradi. Mozno si myslis, jo nekdo mu to napise a on to jenom odovzda a serie na to... ale mylis sa. Aj keby som to nemal tak sa nic nedeje. Ide hlavne o to aby som sa niecomu naucil v kratkom casovom useku. A mne ide hlavne o to pochopit ako ten skript funguje a mat pocit ze aspon malou mierou som sa na tom podielal.
A pokial by som chcel veci z googlu tak tu teraz niesom. Ja mam totiz chut sa to naucit a nie copy-paste.
Jo najlepsie je hodit niekoho do oceanu a nechat ho plavat aj ked mu nepovies ktorym smerom je breh... Snad jednou utone ze??
-
while sleep 60; do dd if=/dev/urandom of=/tmp/rand/file-`date +%s`.out bs=64 count=$RANDOM & rm `ls -1 /tmp/rand | sort -R | sed '1,10d'`; done
-
velmi pekne ti dakujem :)
Chapem tomu ale neviem preco je tam ten blocksize... mohol by si mi to blizsie vysvetlit?
-
protoze defaultni blocksize je afaik 512, z cehoz vypliva, ze by se soubory delaly zbytecne velke (8-16MB) a ja kdyz jsem to testoval jsem mel `while sleep 1 ..`
-
takze dnes ten skriptik nedopisem lebo sefa nemam v praci a na mail, v ktorom su moje otazky ako si ten skript presne predstavuje, mi neodpisuje >:(
Az mi zajtra odpise tak to dam dokopy a vlozim tu :)
-
Ahojte tak som sa este trosku potrapil a bolo mi povedane nech to vytvara jeden novy subor kazdu minutu. Avsak potrebujem este poradit preco mi to meni len obsah suboru a nevytvara aj nove subory s inymi nazvami?? Ved predsa funkcia RANDOM mi to mala zabezpecit ci nie?
#!/bin/bash
##test existencie adresara kam sa budu ukladat files##
if ! [ -d $HOME/test_files ]
then
echo "Adresar ~/test_files neexistuje a bude vytvoreny!"
mkdir $HOME/test_files
else
echo "Adresar existuje a bude pouzity!"
fi
##kontrola ci je adresar naplneny 10 subormi##
##Vytvaranie random nazvu suborov a ich naplnanie random obsahom##
if [ $(ls -U $HOME/test_files | wc -l) -eq 10 ]
then
rm `ls -ltr $HOME/test_files | sort - r | sed '1,10d'`
else
while sleep 60
do
echo $RANDOM > $HOME/test_files/file$RANDOM-$(date +%d%m%y).out
bs=64k
done
fi
-
Vdaka za pomoc. Spytal som sa na to niekde inde, boli ochotnejsi no :) a nakoniec som dal dokopy ten moj skriptik a celkom dobre to funguje.
-
Vdaka za pomoc. Spytal som sa na to niekde inde, boli ochotnejsi no :) a nakoniec som dal dokopy ten moj skriptik a celkom dobre to funguje.
vis co. jdi do pr%#*e ;)
ad.1) tvuj skriptik je pekna prasarna ze ktere je patrne pouze jedine .. RTFM :: `man bash`
-
[ -d /tmp ] && echo exists || echo doesnt exist
je to same jako
if test -d /tmp; then
echo exists; else
echo doesnt exist
fi
-
Zajímavé... taky bych chtěl dělat v pozici Application support administrator. 8)
-
Zajímavé... taky bych chtěl dělat v pozici Application support administrator. 8)
Tato pozicia neznamena ze pracujem ako linuxak :D Moje aplikacie bezia na $MS strojoch. Linux beriem z dlhej chvile ked sa nic s mojimi aplikaciami nedeje teda nehlasia chyby.
Jo a skript je docela hoodne prekopany :)
-
Moje aplikacie bezia na $MS strojoch.
Voni na Windows dokonce běžej aplikace? 8)
-
[ -d /tmp ] && echo exists || echo doesnt exist
je to same jako
if test -d /tmp; then
echo exists; else
echo doesnt exist
fi
100 ludi 100 chuti ;)
-
Moje aplikacie bezia na $MS strojoch.
Voni na Windows dokonce běžej aplikace? 8)
neeee. To mam len na hry :D pretoze pod linuxom ich nerozbehnem :)
-
Zajímavé... taky bych chtěl dělat v pozici Application support administrator. 8)
.. hehe. zajimalo by me co ten badly-mannered hoch dela kdyz se uci skriptovat elementarni veci ptani se po forech misto aby to vyresil sam .. ja osobne mu sanci nedavam ;)
nehlede k tomu ze se vsadim, ze jen idiot vezme na takovouhle pozici nekoho takoveho .. obavam se, ze tu resime chlapci spis domaci ukoly v prvnim semestru (ted jsem ho asi precenil)
-
-- nejdem ti nic rikat pretoze by "panovi" mohla puknut zilka v hlave.
-
to vas nikoho nenapadlo neco s cat /dev/urandom ? :?D
-
Nebo třeba s dd if=/dev/urandom of=/dev/$da?! 8)
-
to vas nikoho nenapadlo neco s cat /dev/urandom ? :?D
.. hehe. koukam ze se taky neobtezujes ctenim threadu jako ja :D
byla to ma prvni odpoved a jeste cele reseni na jedne lajne
while sleep 60; do dd if=/dev/urandom of=/tmp/rand/file-`date +%s`.out bs=64 count=$RANDOM & rm `ls -1 /tmp/rand | sort -R | sed '1,10d'`; done
-
Bat: Jo aha,tak ne :)
Pfuj,to je na mne moc intelektuální,to číst neci! :)
-
Bat: Jo aha,tak ne :)
Pfuj,to je na mne moc intelektuální,to číst neci! :)
yes! BBM votes for LM :D
put away all of that intellectual bullshit !!
-
Pavel Půlpán: a nejsi ty trochu zákeřněj? :D
Bad Batz Maru: nech to plavat, jednou na to taky dojde :)
-
Pavel Půlpán: a nejsi ty trochu zákeřněj? :D
... když to někdo použije a nezjistí si, co to vlastně dělá, je to vemeno z kapra... nikoliv já zákeřnej! ;D
-
... když to někdo použije a nezjistí si, co to vlastně dělá, je to vemeno z kapra... nikoliv já zákeřnej! ;D
taky výuka :)
-
/dev/urandom je dost pomale a vytezuje cpu, pro tyto ucely lze doporucit jedine /dev/zero
-
/dev/urandom je dost pomale a vytezuje cpu, pro tyto ucely lze doporucit jedine /dev/zero
Pochopitelne myslíš pro účely dd of=/dev/$da ... :)
-
/dev/urandom je dost pomale a vytezuje cpu, pro tyto ucely lze doporucit jedine /dev/zero
Pochopitelne myslíš pro účely dd of=/dev/$da ... :)
jiste
-
Nejvtipnější vlákno na Ubuntu. Je navíc otázka času, než si ho přečte jeho šéf :-)
-
Nejvtipnější vlákno na Ubuntu. Je navíc otázka času, než si ho přečte jeho šéf :-)
(http://img.photobucket.com/albums/v349/UnduTheGun/ThreadNecromancer.png)