Gå til innhold

Bash: Utfør kommando med en gang en fil forsvinner eller blir opprettet


Anbefalte innlegg

Dagens lille hjernetrim :)

 

Jeg prøver å tenke meg til hvordan jeg skal løse dette, men kommer ikke på en "enkel" måte.

 

Jeg skal ha et bash-script til å overvåke i en mappe om "morkt.true" finnes eller ikke.

 

Hvis den finnes, og blir slettet så skal denne kommandoen kjøres: "aplay detblelyst.wav" én gang.

 

Dersom den ikke finnes, og blir opprettet, skal denne kommandoen kjøres: "aplay detblemorkt.wav" én gang.

 

 

Problemet er at dersom jeg kjører en if-setning-loop, så vil den jo spille av filene kontinuerlig..

Men jeg vil jo at den skal spille av i det det skjer en endring.

Jeg må med andre ord få den til å logge at kommandoen er kjørt én gang etter at filen ble opprettet eller slettet....

 

Noen som vet om en enkel måte å gjøre det på, uten å ha milevis med ifsetninger?

Lenke til kommentar
Videoannonse
Annonse

Du må bruke en demon til å overvåke. Det er flere som kan gjøre dette, det mest opplagte er kanskje å bruke cron til å se etter filen med jevne mellomrom.

 

Du kan gjøre følgende:

 

Cron -> bash-script.

 

Cron gir deg murligheten til å gjøre faste oppgaver i tids intervaler. Den oppgaven du ønsker å utføre er et script (bash) som tester om morkt.true finnes, en kjapp if statement skulle holde :-) der av videre legger du inn hva du måtte ønske skal skje "if" mappen ikke eksisterer.

Lenke til kommentar

Kan du ikke benytte en lokal variabel som forteller om lyden er spilt eller ikke?

 

Hvis mappen er fjernet spiller du lyden og setter variabelen sann, neste gang du kjører scriptet sjekker du om mappen er det og om lyden er spilt. Siden den er spilt spilles den ikke på nytt.

 

(Dersom jeg forsto problemstillingen rikig da. :-)

Lenke til kommentar

Fra «man inotifywait» («sudo apt-get install inotify-tools»)

 

DESCRIPTION

inotifywait efficiently waits for changes to files using Linux's inotify(7) interface. It is suitable for waiting for changes to files from shell scripts. It can either exit once an event occurs, or continually execute and output events as they occur.

 

Du er antagelig interesert i å reagere på CREATE og DELETE-events

Endret av Kagee
Lenke til kommentar
  • 1 måned senere...

Hei igjen, folkens.

 

Jeg har nå fått skrevet scriptet, og det fungerer utmerket.

Her er det, tilfelle noen har nytte av det:

 

#! /bin/bash

 

#HENTE INFORMASJON OM HVOR MANGE LUX DET ER I ROMMET

OUTPUT=`/usr/bin/ssh [email protected] /usr/bin/light-meter | cut -c1`

 

if [ "$OUTPUT" -gt "0" ]; then

 

# HVIS DET ER LYST I ROMMET (mer enn 0 lux), GJØR FØLGENDE:

 

#SLETTE EVENTUELL morktplayed.true:

if [ -f morktplayed.true ]; then

 

rm morktplayed.true

 

fi

 

 

if [ -f lystplayed.true ]; then

 

# HVIS DET HAR BLITT SPILT AV LYD OM AT DET ER LYST I ROMMET, GJØR INGENTING

 

exit

 

else

 

# HVIS DET IKKE HAR BLITT SPILT AV LYD, SPILL AV

/usr/bin/ssh 10.10.10.2 /usr/bin/aplay /mnt/data/lyder/blelys.wav

touch lystplayed.true

fi

 

 

else

 

# HVIS DET ER MØRKT I ROMMET, GJØR FØLGENDE:

 

 

#SLETTE EVENTUELL lystplayed.true:

if [ -f lystplayed.true ]; then

 

rm lystplayed.true

 

 

fi

 

 

if [ -f morktplayed.true ]; then

 

# HVIS DET HAR BLITT SPILT AV LYD OM AT DET HAR BLITT MØRKT I ROMMET, GJØR INGENTING

 

exit

 

else

 

# HVIS DET IKKE HAR BLITT SPILT AV LYD, SPILL AV

 

/usr/bin/ssh 10.10.10.2 /usr/bin/aplay /mnt/data/lyder/blemorkt.wav

touch morktplayed.true

fi

fi

 

 

Håper noen får nytte av det :)

 

Jeg ser at tabulatorne mine forsvant når jeg postet innlegget... ble litt uoversiktlig da, men...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...