Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
scriptgebastel - wenn verzeichnis .. dann 0.sh oder 1.sh
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
pieter_parker
Veteran
Veteran


Joined: 07 Aug 2006
Posts: 1488
Location: 127.0.0.1

PostPosted: Wed Jun 13, 2007 12:40 pm    Post subject: scriptgebastel - wenn verzeichnis .. dann 0.sh oder 1.sh Reply with quote

hallo
da ist das verzeichnis /home/pieter/test/
es soll im 60 sekunden takt ueberprueft werden ob in dem verzeichnis /home/pieter/test/ eins der beiden unterverzeichnisse 0/ oder 1/ existiert
wenn 0/ existiert, soll das script /home/pieter/0.sh ausgefuehrt werden
wenn 1/ existiert, soll das script /home/pieter/1.sh ausgefuehrt werden
wenn beide verzeichnisse 0 und 1 existieren, soll /home/pieter/0.sh ausgefuehrt werden

wie koennte das funktionieren?
ich dachte es per cron zumachen
z.b. so
crontab -e -u pieter
* * * * * /home/pieter/01pruefen.sh

bei dem was in 01pruefen.sh soll tu ich mir schwer und weis kaum wie ich es angehen soll...
Code:

#!/bin/sh

...
/home/pieter/0.sh

...
/home/pieter/1.sh

..


welches programm koennte ich nehmen um gucken zulassen ob eins der beiden verzeichnisse existiert?
Back to top
View user's profile Send private message
c_m
Guru
Guru


Joined: 29 Jun 2005
Posts: 358

PostPosted: Wed Jun 13, 2007 12:47 pm    Post subject: Reply with quote

Code:
 if [ -e /home ]; then echo 'Hallo Welt!'; fi

Ich denke du wirst wiessen wie du das anpassen kannst? ;-)

//EDIT: ggf kannst du das auch direkt in die crontab schreiben wenns nicht zu lang wird.

//EDIT2: *SCNR*
Code:
#!/bin/sh

# hier liegt das PID-File
PIDFILE="/var/run/test.pid"

#Parameter >=1 ?
if [ $# -ge 1 ]
then
   # wenn ja und parameter =="start"
   if [ $1 == start ]
   then
      # prüfe ob schon eine instanz dieses Scriptes läuft
      if [ -e $PIDFILE ]
      then
         echo "Already running!"
         exit 1
      fi
      
      # tut sie nicht => PID im PID-File merken
      echo $$ > $PIDFILE
      # und die Prüfschleife starten
      while [ true ]
      do
         #existiert das 0- Verzeichnis?
         if [ -d /home/pieter/test/0 ]
         then
            # ja, also passendes Script starten
            /home/pieter/0.sh
         # nein, aber das 1-Verzeichnis vielleicht?
         elif [ -d /home/pieter/test/1 ]
         then
             # ja, also passendes Script starten
            /home/pieter/1.sh
         fi
         # warte 60 sec.
         sleep 60;
      done
   # wenn ja und parameter =="stop"
   elif [ $1 == "stop" ]
   then
      # läuft eine Instanz?
      if [ -e $PIDFILE ]
      then
         # ja! Kille sie!
         kill `cat $PIDFILE`
         # und lösche das PID-File
         rm $PIDFILE
      # Wenn nicht, meldung ausgeben
      else
         echo "Not running!"
         exit 2
      fi
   else
      echo "unknown parameter!"
      exit 3
   fi
fi

//EDIT3: PID-file is mit drin *gg*
//EDIT4: feddich ^^ Aber untestet... und bitte schlagt mich nicht *gg*
//EDIT5: Kommentare
//EDIT6: Exits eingefügt
_________________
This must be thursday ...


Last edited by c_m on Thu Jun 14, 2007 11:52 am; edited 4 times in total
Back to top
View user's profile Send private message
Gibheer
Guru
Guru


Joined: 27 Dec 2004
Posts: 300

PostPosted: Wed Jun 13, 2007 1:18 pm    Post subject: Reply with quote

geht das vllt auch?

Code:
/home/pieter/{return `ls /home/pieter/test`}.sh


also das man ein ls auf das verzeichnis macht und dann einfach die 0 oder 1.sh ausfuehrt
Back to top
View user's profile Send private message
c_m
Guru
Guru


Joined: 29 Jun 2005
Posts: 358

PostPosted: Wed Jun 13, 2007 1:20 pm    Post subject: Reply with quote

Code:
bash-3.00$ ls
0         1         test      test.txt  you.sh

und jetzt? ;-)
_________________
This must be thursday ...
Back to top
View user's profile Send private message
Gibheer
Guru
Guru


Joined: 27 Dec 2004
Posts: 300

PostPosted: Wed Jun 13, 2007 1:28 pm    Post subject: Reply with quote

ich bin eben davon ausgegangen, dass da entweder das eine oder das andere verzeichnis und nix anderes drin ist. Aber wenn da mehr drin ist, dann geht es natuerlich nicht, das stimmt ^.^
Back to top
View user's profile Send private message
pablo_supertux
Advocate
Advocate


Joined: 25 Jan 2004
Posts: 2950
Location: Somewhere between reality and Middle-Earth and in Freiburg (Germany)

PostPosted: Wed Jun 13, 2007 1:36 pm    Post subject: Reply with quote

Ich finde eine solche Liste ist immer brauchbar, wenn man wissen will, ob Datei xyz existiert und was sie ist:

man bash wrote:

CONDITIONAL EXPRESSIONS
Conditional expressions are used by the [[ compound command and the test and [ builtin commands to test file attributes and perform string and
arithmetic comparisons. Expressions are formed from the following unary or binary primaries. If any file argument to one of the primaries is
of the form /dev/fd/n, then file descriptor n is checked. If the file argument to one of the primaries is one of /dev/stdin, /dev/stdout, or
/dev/stderr, file descriptor 0, 1, or 2, respectively, is checked.

Unless otherwise specified, primaries that operate on files follow symbolic links and operate on the target of the link, rather than the link
itself.

-a file
True if file exists.
-b file
True if file exists and is a block special file.
-c file
True if file exists and is a character special file.
-d file
True if file exists and is a directory.
-e file
True if file exists.
-f file
True if file exists and is a regular file.
-g file
True if file exists and is set-group-id.
-h file
True if file exists and is a symbolic link.
-k file
True if file exists and its ``sticky'' bit is set.
-p file
True if file exists and is a named pipe (FIFO).
-r file
True if file exists and is readable.
-s file
True if file exists and has a size greater than zero.
-t fd True if file descriptor fd is open and refers to a terminal.
-u file
True if file exists and its set-user-id bit is set.
-w file
True if file exists and is writable.
-x file
True if file exists and is executable.
-O file
True if file exists and is owned by the effective user id.
-G file
True if file exists and is owned by the effective group id.
-L file
True if file exists and is a symbolic link.
-S file
True if file exists and is a socket.
-N file
True if file exists and has been modified since it was last read.
file1 -nt file2
True if file1 is newer (according to modification date) than file2, or if file1 exists and file2 does not.
file1 -ot file2
True if file1 is older than file2, or if file2 exists and file1 does not.
file1 -ef file2
True if file1 and file2 refer to the same device and inode numbers.
-o optname
True if shell option optname is enabled. See the list of options under the description of the -o option to the set builtin below.
-z string
True if the length of string is zero.
string
-n string
True if the length of string is non-zero.

string1 == string2
True if the strings are equal. = may be used in place of == for strict POSIX compliance.

string1 != string2
True if the strings are not equal.

string1 < string2
True if string1 sorts before string2 lexicographically in the current locale.

string1 > string2
True if string1 sorts after string2 lexicographically in the current locale.

arg1 OP arg2
OP is one of -eq, -ne, -lt, -le, -gt, or -ge. These arithmetic binary operators return true if arg1 is equal to, not equal to, less
than, less than or equal to, greater than, or greater than or equal to arg2, respectively. Arg1 and arg2 may be positive or negative
integers.


/home/pieter/01pruefen.sh:

Code:

#!/bin/bash

BASE="/home/peter/test2

wenn_0_vorhanden()
{
   # TODO: write me
}

wenn_1_vorhanden()
{
  # TODO: write me
}

[[ -d "${BASE}/0" ]] && wenn_0_vorhanden

[[ -d "${BASE}/1" ]] && wenn_1_vorhanden


_________________
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!


Last edited by pablo_supertux on Wed Jun 13, 2007 1:37 pm; edited 1 time in total
Back to top
View user's profile Send private message
c_m
Guru
Guru


Joined: 29 Jun 2005
Posts: 358

PostPosted: Wed Jun 13, 2007 1:37 pm    Post subject: Re: scriptgebastel - wenn verzeichnis .. dann 0.sh oder 1.sh Reply with quote

Gibheer wrote:
ich bin eben davon ausgegangen, dass da entweder das eine oder das andere verzeichnis und nix anderes drin ist. Aber wenn da mehr drin ist, dann geht es natuerlich nicht, das stimmt ^.^
würde afais auch dann nicht vernünftig laufen, weil:
pieter_parker wrote:
wenn beide verzeichnisse 0 und 1 existieren, soll /home/pieter/0.sh ausgefuehrt werden

deine variante würde immer alle ausführen.

//EDIT:
@pablo_supertux in der tat. -d werd ich mir gleich mal merken ^__^
_________________
This must be thursday ...
Back to top
View user's profile Send private message
pieter_parker
Veteran
Veteran


Joined: 07 Aug 2006
Posts: 1488
Location: 127.0.0.1

PostPosted: Wed Jun 13, 2007 8:06 pm    Post subject: Reply with quote

das 0.sh script soll ein programm, wenn es laeuft killen
das 1.sh script soll ein programm (ueber ein anderes script), wenn es nicht laeuft aufrufen
danke fuer die muehe und erstellen
c_m aber ich steig da nicht richtig durch
lesen schon den halben nachmittag und abend hier http://www.willemer.de/informatik/unix/shskript.htm und dort http://www.linux-ag.de/linux/LHB/node26.html aber irgendwie .. gehts nicht richtig rein in den kopf, und die manpages helfen mir auch nicht weiter, auf englisch versteh ichs noch weniger
Back to top
View user's profile Send private message
c_m
Guru
Guru


Joined: 29 Jun 2005
Posts: 358

PostPosted: Wed Jun 13, 2007 10:19 pm    Post subject: Reply with quote

habs mal ein wenig kommentiert...
_________________
This must be thursday ...
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Thu Jun 14, 2007 10:07 am    Post subject: Reply with quote

c_m wrote:
Code:
# prüfe ob schon eine instanz dieses Scriptes läuft
      if [ -e $PIDFILE ]
      then
         echo "Already running!"
      fi

da vielleicht noch ein "exit" einbauen?
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
c_m
Guru
Guru


Joined: 29 Jun 2005
Posts: 358

PostPosted: Thu Jun 14, 2007 11:46 am    Post subject: Reply with quote

Necoro wrote:
da vielleicht noch ein "exit" einbauen?
Ergibt in der Tat Sinn ;-)
_________________
This must be thursday ...
Back to top
View user's profile Send private message
pieter_parker
Veteran
Veteran


Joined: 07 Aug 2006
Posts: 1488
Location: 127.0.0.1

PostPosted: Thu Jun 14, 2007 8:07 pm    Post subject: Reply with quote

Code:

#!/bin/sh

# hier liegt das pid-file
PIDFILE="/home/pieter/test/test.pid"

#parameter >=1 ?
if [ $# -ge 1 ]
then
   # wenn ja und parameter =="start"
   if [ $1 == start ]
   then
      # pruefe ob schon eine instanz dieses scriptes laeuft
      if [ -e $PIDFILE ]
      then
         echo "already running"
      fi

      # tut sie nicht => pid im pid-file merken
      echo $$ > $PIDFILE
      #und die pruefschleife starten
      while [ true ]
      do
         #existiert das 0-verzeichnis?
         if [ -d /home/pieter/test/0 ]
         then
            #ja, dann abc123 killen, wenn es laeuft
                         if [ "$(ps ax|grep abc123|grep -v grep)" ]
                         then (killall abc123)
                         fi
         # nein, aber das 1-verzeichnis vielleicht?
         elif [ -d /home/pieter/test/1 ]
         then
            #ja, also abc123 starten, wenn es nicht schon laeuft
                         if [ ! "$(ps ax|grep abc123|grep -v grep)" ]
                         then (/usr/bin/screen -d -m  /home/pieter/abc123 -config /home/pieter/abc123.config)
                         fi
         fi
         # warte 60 sec.
         sleep 5;
      done
   # wenn ja und parameter =="stop"
   elif [ $1 == "stop" ]
   then
      # laeuft eine instanz?
      if [ -e $PIDFILE ]
      then
         # ja! kille sie!
         kill `cat $PIDFILE`
         # und loesche das pid-file
         rm $PIDFILE
      # wenn nicht, meldung ausgeben
      else
         echo "not running"
      fi
   fi
fi


so sieht das der weil bei mir aus
hab etwas dran rumgebastel versucht.. umgemacht, zurueck gemacht .. neuversucht, geloescht, wieder zurueck gemacht und hin und her probiert

soweit sogut ;-)
Back to top
View user's profile Send private message
Earthwings
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 7753
Location: Germany

PostPosted: Thu Jun 14, 2007 9:08 pm    Post subject: Reply with quote

Moved from Deutsches Forum (German) to Diskussionsforum.
_________________
KDE
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum