Toon posts:

Find & Run

Pagina: 1
Acties:
  • 63 views sinds 30-01-2008

Verwijderd

Topicstarter
Hey mede-tweakers,


Ik zit met een vraagje waar ik na lang zoeken de oplossing nog niet ben tegengekomen.

Ik heb bijv. wel dit gevonden:
code:
1
2
3
4
5
!#/bin/bash
tail -n 100 /var/log/somelog|grep someword
if [ $? == "0" ]; then
  somecommand
fi


Bovenstaande code wil niet echt werken bij mij (of ik moet iets verkeerds doen).

Wat ik eigenlijk van plan was, is het volgende:

In "/srv/www/htdocs/" zoekt linux naar het bestand "genethumb-0.0.8.sh". En voor elke keer dat het bestand gevonden word, moet ie gerunned worden.

Genethumb is een thumbnail-creator, en die staat dus in verschillende mappen.. maar om nou elke keer weer te handmatig dat te draaien via putty, komt ook mijn strot uit :P


Wie is er zo lief om mij te helpen? O+

  • r5d
  • Registratie: Februari 2002
  • Niet online

r5d

Read more, write less...

Misschien heb je hier iets aan: execute command in every subdirectory?

Later betaal je meer, maar dan heb je wel een gratis datalimiet....


  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 01-02 19:30

webfreakz.nl

el-nul-zet-é-er

Cronjob?
En anders je vraag even duidelijker maken... Want wil je dat nou automatisch dat genethumb-0.0.8.sh zoeken en runnen of is dat al gelukt maar wil je dat niet via PuTTy doen?

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


Verwijderd

find /srv/www/htdocs -type f -name genethumb-0.0.8.sh -exec {} \;

Dat {} in het exec argument wordt automatisch vervangen door de bestandsnaam, dus bovenstaande voert alle gevonden bestanden uit.

[ Voor 1% gewijzigd door Verwijderd op 28-01-2006 16:29 . Reden: die * mocht nog weg ]


Verwijderd

Topicstarter
webfreakz.nl schreef op zaterdag 28 januari 2006 @ 16:25:
Cronjob?
En anders je vraag even duidelijker maken... Want wil je dat nou automatisch dat genethumb-0.0.8.sh zoeken en runnen of is dat al gelukt maar wil je dat niet via PuTTy doen?
De oude situatie is nu als volgt:

Ik wil een mapje "foto's" uploaden naar mijn webserver. In elke fotomapje zit het bestand "genethumb-0.0.8.sh", die ervoor zorgt dat er een thumbnail-index gemaakt word.

Echter moet ik elke keer dat er een nieuwe "genethumb-0.0.8.sh" word geupload, helemaal via putty inloggen, en dus ook via putty runnen. Stel dat ik mapje "foto's" uitbreid met 4 nieuwe foto's.. Dan moet ik WEER inloggen via putty om het bestand te draaien..

Zeer tijdrovend aangezien ik veel mappen met foto's heb die ik vaak voorzie van nieuwe foto's.

Daarom mijn vraag naar een Find & Run-scriptje, zodat ik die in mijn cron-job zet.

Verwijderd

Topicstarter
Verwijderd schreef op zaterdag 28 januari 2006 @ 16:27:
find /srv/www/htdocs -type f -name genethumb-0.0.8.sh -exec {} \;

Dat {} in het exec argument wordt automatisch vervangen door de bestandsnaam, dus bovenstaande voert alle gevonden bestanden uit.
Hmm, die werkt niet. Als ik dat laat uitvoeren, dan indexeerd hij alleen de root van mijn webserver; de favicon.ico dus alles :P

  • weijl
  • Registratie: Juli 2002
  • Niet online
code:
1
2
3
4
5
!#/bin/bash
tail -n 100 /var/log/somelog|grep someword
if [ $? == "0" ]; then
  somecommand
fi
code:
1
2
3
4
5
#!/bin/bash
tail -n 100 /var/log/somelog|grep someword
if [ $? == "0" ]; then
  somecommand
fi

zal een stuk beter gaan ;)
(let op de eerste lijn)

[ Voor 18% gewijzigd door weijl op 28-01-2006 16:53 . Reden: bold werkt niet in een code tag :+ ]


Verwijderd

Kan je niet veel beter via php de thumbs laten aanmaken? dan hoef je aleen de fotos zelf maar te uploaden.

Verwijderd

Topicstarter
gupje schreef op zaterdag 28 januari 2006 @ 16:51:
[...]


code:
1
2
3
4
5
#!/bin/bash
tail -n 100 /var/log/somelog|grep someword
if [ $? == "0" ]; then
  somecommand
fi

zal een stuk beter gaan ;)
(let op de eerste lijn)
Zou dit dan de juiste code zijn (/srv/www/htdocs) dat ik het gelijk kan runnen?
code:
1
2
3
4
5
#!/bin/bash
tail -n 100 /srv/www/htdocs/|grep genethumb-0.0.8.sh
if [ $? == "0" ]; then
  somecommand
fi

[ Voor 21% gewijzigd door Verwijderd op 28-01-2006 17:00 ]


  • weijl
  • Registratie: Juli 2002
  • Niet online
try and find out ;)

Verwijderd

Topicstarter
code:
1
tail: error reading `/srv/www/htdocs': Is a directory

  • Luqq
  • Registratie: Juni 2005
  • Laatst online: 08-02 15:37
je opent een directory met een teksteditor? je zou eerder iets met find moeten doen lijkt me...

Verwijderd

Topicstarter
Luqq schreef op zaterdag 28 januari 2006 @ 17:06:
je opent een directory met een teksteditor? je zou eerder iets met find moeten doen lijkt me...
Que? volgens mij heb jij het topic niet echt doorgelezen? :P

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Verwijderd schreef op zaterdag 28 januari 2006 @ 17:08:
[...]


Que? volgens mij heb jij het topic niet echt doorgelezen? :P
Ik heb meer de indruk dat jij niet echt weet wat je doet, tail <directory> is namelijk vrij onzinnig.


Het find commando doet precies wat jij vraagt, maar dat werkt blijkbaar niet.
Ik gok dat het niet werkt omdat je voor de juiste werking van dat script in de directory
moet staan waar het script staat, klopt dat ?

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Verwijderd

Topicstarter
Ik heb dat tail commando ook maar gekregen :)

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
u_nix_we_all schreef op zaterdag 28 januari 2006 @ 17:14:
[...]

Ik gok dat het niet werkt omdat je voor de juiste werking van dat script in de directory
moet staan waar het script staat, klopt dat ?
Lees je zelf je eigen topic wel goed ? We hebben meer info nodig om je uberhaupt te kunnen
helpen.

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Verwijderd

Topicstarter
u_nix_we_all schreef op zaterdag 28 januari 2006 @ 17:56:
[...]


Lees je zelf je eigen topic wel goed ? We hebben meer info nodig om je uberhaupt te kunnen
helpen.
Wat voor info wil je precies hebben? Ik heb in vorige replies precies uitgelegd wat het doel moet zijn van het scripje wat ik zoek.

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
u_nix_we_all schreef op zaterdag 28 januari 2006 @ 17:14:
[...]

Het find commando doet precies wat jij vraagt, maar dat werkt blijkbaar niet.
Ik gok dat het niet werkt omdat je voor de juiste werking van dat script in de directory
moet staan waar het script staat, klopt dat ?
da's 3x :z

DUS:
1. vergeet dat "tail" commando
2. antwoord op de vraag: "moet het script uitgevoerd worden vanuit de directory waar het gevonden wordt"

[ Voor 10% gewijzigd door u_nix_we_all op 28-01-2006 18:25 ]

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 04-02 23:43

SA007

Moderator Tweaking
Wil je niet meer iets van:
code:
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
ls -R | grep '^./' | while read directory
do
  if [ -x $directory/genethumb-0.0.8.sh ]
  then
    echo $directory
    cd $directory
    ./genethumb-0.0.8.sh
    cd -
  fi
done


Loopt door alle subdirs, kijkt of genethumb erin staat, zo ja gaat ie naar die directory en voert ie 'm uit.

Verwijderd

Topicstarter
u_nix_we_all schreef op zaterdag 28 januari 2006 @ 18:23:
[...]


da's 3x :z

DUS:
1. vergeet dat "tail" commando
2. antwoord op de vraag: "moet het script uitgevoerd worden vanuit de directory waar het gevonden wordt"
1. Vergeten :P
2. Nee. Scripje staat in de htdocs-root (toevallig). Scripje moet dan alle subdirs afzoeken naar het "genethumb-0.0.8.sh", en vervolgens dat bestandje runnen.

[ Voor 6% gewijzigd door Verwijderd op 28-01-2006 18:41 ]


  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Verwijderd schreef op zaterdag 28 januari 2006 @ 18:39:
[...]


1. Vergeten :P
2. Nee. Scripje staat in de htdocs-root (toevallig). Scripje moet dan alle subdirs afzoeken naar het "genethumb-0.0.8.sh", en vervolgens dat bestandje runnen.
Met scriptje bedoel ik genethumb-0.0.8.sh, m.a.w. moet genethumb-0.0.8.sh uitgevoerd worden vanuit de directory waar die staat ?

De code van SA007 zou dan ook moeten werken.

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Verwijderd

Topicstarter
u_nix_we_all: moet genethumb-0.0.8.sh uitgevoerd worden vanuit de directory waar die staat --> Jazeker :)

De code van Sa007 heeft 2 effecten:

- Stel dat ik die uitvoer via de htdocs-root, dan krijg ik deze melding: ./tijlijk.sh: line 4: [: too many arguments.

- Stel dat ik die uitvoer via een <htdocsroot>\submapje, dan krijg ik uberhaupt niks op mijn scherm.

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Probeer dit eens:

code:
1
2
3
4
5
6
for gt in "`find /srv/www/htdocs -type f -name genethumb-0.0.8.sh`"
 do
 dir=`echo $gt|sed s/genethumb-0.0.8.sh//g`
 cd "$dir"
 ./genethumb-0.0.8.sh
done


Hmm, heb je misschien directories met een spatie in de naam ?
dat is niet handig

[ Voor 19% gewijzigd door u_nix_we_all op 28-01-2006 19:15 ]

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 04-02 23:43

SA007

Moderator Tweaking
Mm, spaties in dirnamen is idd onhandig, maar prima af te vangen.
Probeer dit dan 's:

code:
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
ls -R | grep '^./' | while read directory
do
  if [ -x "$directory/genethumb-0.0.8.sh" ]
  then
    echo "$directory"
    cd "$directory"
    ./genethumb-0.0.8.sh
    cd -
  fi
done

Verwijderd

Topicstarter
u_nix_we_all schreef op zaterdag 28 januari 2006 @ 19:01:
Probeer dit eens:

code:
1
2
3
4
5
6
for gt in "`find /srv/www/htdocs -type f -name genethumb-0.0.8.sh`"
 do
 dir=`echo $gt|sed s/genethumb-0.0.8.sh//g`
 cd "$dir"
 ./genethumb-0.0.8.sh
done


Hmm, heb je misschien directories met een spatie in de naam ?
dat is niet handig
code:
1
2
3
htdocs@whizkunde:~/porto> ./t2.sh
./t2.sh: line 4: cd: /srv/www/htdocs/porto/pix/fotoshop/retorical/: No such file or directory
./t2.sh: line 5: ./genethumb-0.0.8.sh: No such file or directory

Dat is de foutmelding die ik krijg, zodra ik het run. Het is in iedergeval wel een begin :D En hij vind idd in de juiste folders de bestanden.

Verwijderd

Topicstarter
SA007 schreef op zaterdag 28 januari 2006 @ 19:37:
Mm, spaties in dirnamen is idd onhandig, maar prima af te vangen.
Probeer dit dan 's:

code:
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
ls -R | grep '^./' | while read directory
do
  if [ -x "$directory/genethumb-0.0.8.sh" ]
  then
    echo "$directory"
    cd "$directory"
    ./genethumb-0.0.8.sh
    cd -
  fi
done
Deze code werkt helaas niet :(

  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 10:57
je voert ze niet uit in de root van de webserver zie ik dat kan een hoop verklaren
gooi t2.sh een in /srv/www/htdocs en probeer het dan nog eens

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


Verwijderd

Topicstarter
Ok, kleine update!

Ik ben erachter gekomen waarom bij deze code een foutmelding kreeg:

Code:
code:
1
2
3
4
5
6
for gt in "`find /srv/www/htdocs -type f -name genethumb-0.0.8.sh`"
 do
 dir=`echo $gt|sed s/genethumb-0.0.8.sh//g`
 cd "$dir"
 ./genethumb-0.0.8.sh
done


Foutmelding:
code:
1
2
3
htdocs@whizkunde:~/> ./t2.sh
./t2.sh: line 4: cd: /srv/www/htdocs/porto/pix/fotoshop/thirt/ /srv/www/htdocs/porto/pix/fotoshop/retorical/: No such file or directory
./t2.sh: line 5: ./genethumb-0.0.8.sh: No such file or directory


Dat kan kloppen, want ik heb in beide folders het bestandje "genethumb-0.0.8.sh" zitten. Echter toen ik bij toevallig 1 "genethumb-0.0.8.sh" verwijderde, deed de code het dus wel!

Wat ik dus denk, is dat hij tergelijkertijd "genethumb-0.0.8.sh" laat runnen, en daardoor foutmeldingen genereerd.

  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 03-02 16:28

zomertje

Barisax knorretje

Ik denk dat het tijd wordt dat je zelf je wat meer gaat verdiepen in het shell scripten. Als je het verschil tussen tail en find niet weet heb je nog het een en ander uit te zoeken :)

Veel mensen hebben je al een hint in de goede richting gegeven, nu mag je zelf aan de slag.

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun

Pagina: 1

Dit topic is gesloten.