Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Linux - Jede Minute ein Befehl in einem ShellScript ausführen

Frage Entwicklung Batch & Shell

Mitglied: Lousek

Lousek (Level 2) - Jetzt verbinden

17.12.2008, aktualisiert 18.12.2008, 10677 Aufrufe, 12 Kommentare

Hallo Forum.

Bin noch blanker Anfänger was Shell-Scripte in Linux angeht.

Also:
Ich will jede Minute ein SVN-Repository update (nicht comitten) (Befehl: svn update https://meinserver/meinrepopfad).

Nun habe ich keine Ahnung wie ich das Anstellen soll ...

der Script sollte .sh sein, oder?
Kann ich das Script selbst nur jede Minute aufrufen, oder muss das script die ganze Zeit rennen und z.B. in einer Schleife mit Sleep 59 (Sekunden) dies selbst tun?


Bin gespannt auf Vorschläge ;)

Greetz, Lousek
Mitglied: 8schpi
17.12.2008 um 16:40 Uhr
zuerst ein script.sh basteln, welches die aufgabe erfüllt. z.b.:
01.
#!/bin/sh 
02.
svn update https://meinserver/meinrepopfad
das also unter z.b. /home/ich/script.sh abspeicher und mit
01.
chmod 755 /home/ich/script.sh
ausführbar machen.

jetzt sollte man den minütlichen aufruf meiner meinung nach über cron realisieren:
http://de.wikipedia.org/wiki/Cron
z.b.
01.
* * * * * /home/ich/script.sh
Bitte warten ..
Mitglied: Alphavil
17.12.2008 um 17:01 Uhr
Würde sagen eher so:

01.
 */1 * * * * /home/ich/script.sh
Bitte warten ..
Mitglied: Lousek
17.12.2008 um 17:15 Uhr
Naja ... wo mus ich dies hinzufügen?

Greetz, Lousek

Edit: Habe so wie hier: http://www.selflinux.org/selflinux/html/cron01.html#d63e59 eine crontab-datei erstellt und den script eingetragen ... muss ich den daemon neustarten?

Edit2: Bei 1 * * * * * bringt er mir ein Fehler, bei * * * * * nicht .... ?
Bitte warten ..
Mitglied: datasearch
17.12.2008 um 17:33 Uhr
Du musst den crontab mit dem befehl crontab -e edieren. Um das Script jede Minute auszuführen, musst du die Zeile:

*/1 * * * * /pfad/zum/script.sh

eintragen. Dieser Eintrag hat folgende Bedeutung:

Pos1: Minute. (0-59)

Pos2: Stunde (0-23)

Pos3: Tag (1-31)

Pos4: Monat (1-12)

Pos5: Wochentag (mo-so, 0-7)

Pos6: Befehl

Du kannst auch in den Zeilen, wenn du zb. ALLE X Minuten, Tage oder Monate ein script ausführen möchtest, dies mit */X (Alle X Schritte) angeben. Im fall alle 5 Minuten währe das */5.

Schau aber bitte noch einmal in die Doku deines Cron-daemons. Mit "man crontab" sollten alle Informationen dazu erscheinen.
Bitte warten ..
Mitglied: Alphavil
17.12.2008 um 17:35 Uhr
Sorry natürlich ist es so wie datasearch geschrieben hat (*/1 * * * */.....) richtig
Bitte warten ..
Mitglied: Lousek
17.12.2008 um 20:57 Uhr
Naja ... mal rabiat zum testen:
*/1 * * * * reboot

Oder muss ich zum reboot irgend ein pfad angeben? (Welchen:P)?

Greetz, Lousek
Bitte warten ..
Mitglied: Lousek
17.12.2008 um 21:54 Uhr
Hi again

Also */1 * * * * "reboot" geht ohne probleme (... musste ihn im single-user modus starten um das wieder rauszubekommen :P) ... doch mein script will er nicht ausführen

Wenn ich ihn so aufrufe: /home/reload.sh geht es.
So macht er nichts: */1 * * * * /home/reload.sh
Und verschoben nach /scripts mit chmod 777: */1 * * * * /scripts/reload.sh --> passiert auch nichts.

Auch wenn ich den Befehl direkt schreibe, was auf der konsole auch geht, klappt nichts: */1 * * * * "svn update /var/www"

Jemand ne Idee ;)

Greetz, Lousek
Bitte warten ..
Mitglied: 8schpi
17.12.2008 um 22:27 Uhr
das könnte daran liegen, dass die shell, die man per hand startet, die standard pfade für programme kennt. die instanz die durch cron gestartet wird kennt diese nicht. nach dem programm svn wird dann glaube nur im aktuellen verzeichnis gesucht und da ist es nicht.

das kann man durch einen befehl (ich weiß ihn jetzt nicht auswendig, linux ist schon wieder länger her, arbeite momentan mit windows) oder aber in diesem fall besser noch durch die angabe des kompletten pfads umgehen.
01.
*/1 * * * * "/pfad/zum/svn update /var/www"
dann müsste es gehen.
Bitte warten ..
Mitglied: datasearch
18.12.2008 um 00:21 Uhr
Oder du kannst im Script auch die pfade absolut angeben.

Beispielscript:

01.
#!/bin/bash 
02.
 
03.
#zuerst einige Variabeln mit den erforderlichen Pfaden und Parametern 
04.
SNVPATH=/usr/bin/svn 
05.
SYNCPATH=/var/www 
06.
PARAMETER=update 
07.
LOGFILE=/var/log/svnsync.log 
08.
TOUCH=/bin/touch 
09.
 
10.
#Logfile vorhanden? Wenn nicht, anlegen. 
11.
if [ ! -f $LOGFILE ]; do $TOUCH $LOGFILE; fi 
12.
 
13.
#nun testen ob der Pfad zur binary vorhanden ist und das SVN-Dir existiert 
14.
# dann folgen einige Fehlercode-auswertungen um bei Problemen etwas zu tun. 
15.
if [[ -e $SVNPATH && -d $SYNCPATH ]]; do 
16.
  $SVNPATH $PARAMETER $SYNCPATH >> $LOGFILE 
17.
  if [ $? == 0 ]; do 
18.
   echo SVN war erfolgreich >> $LOGFILE 
19.
  else 
20.
   echo SVN war nicht erfolgreich >> $LOGFILE 
21.
  fi  
22.
 else 
23.
  echo $SVNPATH oder $SYNCPATH existiert nicht! >> $LOGFILE 
24.
fi
Das sollte auf jeden fall funktionieren. Selbst wenn du die Shell direkt vom kernel als init startest. Bitte noch einmal prüfen, habe jetzt keine Zeit das zu testen
Bitte warten ..
Mitglied: Lousek
18.12.2008 um 09:13 Uhr
Er bringt mir ein unexpected syntax-error bei:

if [ ! -f $LOGFILE ]; do $TOUCH $LOGFILE; fi

Greetz, Lousek
Bitte warten ..
Mitglied: Lousek
18.12.2008 um 10:07 Uhr
Hmm ... andere Frage:

Ich habe auf dem Debian dem root das anmelden verboten. Dafür habe ich einen User svnadmin.
Also mache ich mich mit sudo -s zum root ...
die crontab habe ich auch beim root editiert ... (also als ich root war habe ich crontab -e gemacht) ...
Kann es sein, das es irgendwas mit dem zu tun hat?

Werde das mal beim svnadmin reinschreiben ...

Was ich dann aber komisch finden würde, dass */1 * * * * "reboot" in der crontab vom root funktioniert hat ...

Greetz, Lousek
Bitte warten ..
Mitglied: datasearch
18.12.2008 um 10:46 Uhr
Sorry, mein Fehler. Habe die if-then mit der while-do Schleife verwechselt. ROFL. Ich habe das script eben getestet und nochmal etwas umgeschrieben. Solltest du so verwenden können.

01.
#!/bin/bash 
02.
 
03.
#zuerst einige Variabeln mit den erforderlichen Pfaden und Parametern 
04.
SVNPATH=/tmp/svn 
05.
SYNCPATH=/var/www 
06.
PARAMETER=update 
07.
LOGFILE=/var/log/svnsync.log 
08.
TOUCH=/bin/touch 
09.
 
10.
#Logfile vorhanden? Wenn nicht, anlegen. 
11.
if [ ! -f $LOGFILE ]; then 
12.
  $TOUCH $LOGFILE 
13.
  echo neue Logfile erstellt >> $LOGFILE 
14.
fi 
15.
 
16.
if [ ! -x $SVNPATH ]; then 
17.
 echo SVN wurde nicht unter $SVNPATH gefunden oder ist nicht ausfuehrbar >> $LOGFILE 
18.
 exit 101 
19.
fi 
20.
 
21.
#nun testen ob der Pfad zur binary vorhanden ist und das SVN-Dir existiert 
22.
# dann folgen einige Fehlercode-auswertungen um bei Problemen etwas zu tun. 
23.
if [ -d $SYNCPATH ]; then 
24.
  $SVNPATH $PARAMETER $SYNCPATH >> $LOGFILE 
25.
  if [ $? == 0 ]; then 
26.
   echo SVN war erfolgreich >> $LOGFILE 
27.
  else 
28.
   echo SVN war nicht erfolgreich >> $LOGFILE 
29.
   exit 103 
30.
  fi 
31.
 else 
32.
  echo $SYNCPATH existiert nicht! >> $LOGFILE 
33.
  exit 102 
34.
fi

Bitte oben noch die Pfade richtig setzen.
Bitte warten ..
Ähnliche Inhalte
Debian
Raspbian Jessie: Shellscript beim Herunterfahren ausführen
gelöst Frage von jiggiwowowDebian6 Kommentare

Hi, habe ein Raspberry Pi 2 mit Jessie am Laufen, das soll bestimmte Ordner per rsync auf einen angeschlossenen ...

VB for Applications
Shell-CMD Befehl Ausführen
gelöst Frage von Timo0oVB for Applications2 Kommentare

Nochmal ich^^ Ich möchte eine Aufgabe mit meinem VB Programm erstellen. Jedoch komme ich nicht weiter. Folgenden Code habe ...

Batch & Shell
Autoit: Befehl ausführen mit Anführungszeichen
gelöst Frage von adminstBatch & Shell1 Kommentar

Hallo zusammen Ich hoffe ihr könnt mir weiterhelfen. Der Befehl welcher ich ausführen muss ist folgender: c:\ProgramData\div\Citrix\CitrixReceiverEnterprise_3-4\CitrixReceiverEnterprise_3.4.201.exe ADDLOCAL="ICA_Client,PN_Agent" SERVER_LOCATION=" ...

RedHat, CentOS, Fedora
Linux Befehle gehen im Linux aufeinmal nicht
gelöst Frage von 116480RedHat, CentOS, Fedora13 Kommentare

Hallo, ich kann aufeinmal im Linux keine Befehle mehr eingeben. LS etc geht nicht. Siehe Printscreen. Gruss Ralf

Neue Wissensbeiträge
Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 10 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 12 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...