2012-04-04 9 views
2

Ich bin mit folgenden Schritten Code auf dem Server nach der Anmeldung an dem Server zu aktualisieren:Wie Code mit Svn mit Crontab aktualisieren?

sudo -s 
<wrote password here> 
cd /var/www/staging 
rm -r app.old 
mv app app.old 
svn checkout https://example.com/projectname/trunk/app app 

Jetzt update.sh Datei in /var/www/ mit Inhalt folgenden

cd /var/www/staging 
rm -r app.old 
mv app app.old 
svn checkout https://example.com/projectname/trunk/app app 

Und ich habe folgend crontab Eintrag auszuführen, nachdem ich erstellt alle 5 Minuten:

*/5 * * * * /var/www/update.sh 

Problem: So Cron Job funktioniert, aber es ist nur das Löschen der app Ordner und nicht Auschecken aus dem SVN-Repository. Aber wenn ich bash /var/www/update.sh manuell ausführe, funktioniert es gut nach sudo -s.

Wie Sie dies auch für Cron-Job beheben. Handelt es sich um sudo -s oder etwas anderes?

Dank

+0

Unabhängig von dem Benutzer, auf dem das Cron-Skript ausgeführt wird, hat der Benutzer die Berechtigung zum Auschecken aus SVN? –

+0

Wenn ich 'sudo -s' und dann' bash/var/www/update.sh' manuell ausführen, funktioniert es gut. ** ABER ** wenn Cron-Job dieses Skript (update.sh) ausführt, wird Code von svn nicht ausgecheckt. – Awan

+0

So viel verstehe ich. Bitte geben Sie an: (1) Welchen Benutzer läuft der Job ab cron (root oder ein anderer Benutzer); (2) Verfügt dieser Benutzer über Berechtigungen zum Auschecken von svn? –

Antwort

5

Ich vermute, das Problem ist, dass der Job von Cron als root ausgeführt wird und Root-Benutzer keine Berechtigungen zum Auschecken hat.

Zuerst schlage ich vor, dass Sie Details der Benutzername/Passwort sind mit SVN zu verwenden - in Ihrem Skript:

*/5 * * * * /var/www/update.sh 2>&1| mail -s "Cron job execution" [email protected] 
:

svn checkout --username USER --password PASS ttps://example.com/projectname/trunk/app app 

nächstes die Zeile in der crontab dies ändern

Wenn der Job dann ausgeführt wird, werden alle Fehler per E-Mail an Sie gesendet. Zumindest wirst du sehen, was schief läuft.

+0

+1 sehr nützliche E-Mail-Option in Crontab. Vielen Dank. Lass mich jetzt einen Fehler herausfinden. – Awan

+0

es funktioniert jetzt .. Danke – Awan

+0

Können wir Ausgabe von Shell-Skript an mehrere E-Mail-Adressen senden ?? Danke – Awan

1

Wenn Sie es als ein anderer Benutzer ausführen, installieren Sie es auf, dass die Nutzer crontab. Anstatt zu versuchen, im Skript herumzuspielen.

+0

Ich muss es als ein Benutzer ausführen. Wenn ich das Skript manuell ausführe, funktioniert es einwandfrei, aber es funktioniert nicht, wenn Cron-Job es ausführt. – Awan