PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Befehl über Crontab in bestimmtem Pfad aufrufen



Yexxx
06.08.16, 15:01
Hallo, ich brauche mal Hilfe. Ich habe zur Versioniesierung git im Verzeichnis WWW zu laufen. Nun möchte ich, dass der jeden Tag per Cron

git add. und danach ein

git commit -m'Initial Commit'

in diesem Verzeichnis macht.

Nun frage ich mich, wie ich das am Besten mache, denn beispielsweise in der Cron ein:

55 14 * * * /var/www git commit -m'Initial Commit'

oder auch

56 14 * * * root /var/www git commit -m'Initial Commit'

geht zumindest nicht.

Hat jemand da eine Idee? Über Antworten würde ich mich sehr freuen.

marce
06.08.16, 15:29
sauberste Lösung - Scirpt schreiben, welches die gewünschten Befehle absetzt und den Script-Aufruf in die Crontab.

Alternativ kannst Du die einzel-Befehle per ; getrennt auch in die Crontab-Zeile schreiben. Sprich "in's VZ wechseln, add, commit"

Yexxx
06.08.16, 15:56
Vielen Dank.

Wenn ich :

48 15 * * * root /var/www/ ; git commit -m'Initial Commit'


dann bekomme ich folgende Mail:

/bin/sh: 1: /var/www/: Permission denied
fatal: Not a git repository (or any of the parent directories): .git

Kann mir bitte einer erklären, wie ich das mit dem script lösen kann. Ich habe jetzt:

#!/bin/sh

/var/www/ git add .

/var/www/ git commit -m'Initial Commit'

Da habe ich jetzt:

/usr/local/bin/git.sh: 3: /usr/local/bin/git.sh: /var/www/: Permission denied
/usr/local/bin/git.sh: 5: /usr/local/bin/git.sh: /var/www/: Permission denied

marce
06.08.16, 16:08
was soll denn
/var/www/ denn für ein Befehl sein?

... und ich behaupte mal ganz frech, daß egal, was Du nun sagst, ich jetzt schon mit einem Monty-Python-Zitat antworten kann:

Ist es aber nicht

Yexxx
06.08.16, 16:22
Mir erschließt sich einfach die Syntax nicht. Der Befehl lautet ja beispielsweise git add .

Doch dieser soll in dem Verzeichnis /var/www/ ausgeführt werden. Ich weiß eben einfach nicht, wie ich darauf verweisen kann.


Edit:

Oh, ich habe es:

git -C /var/www/ commit -m 'Initial Commit'

BetterWorld
06.08.16, 19:15
Dir fehlt das Grundverständnis des FHS (FileHierarchyStandard).

In vielen Betriebssystemen wird das aktuelle Arbeitsverzeichnis durch einen einzelnen Punkt abgebildet.
Zwei Punkte meinen eine Verzeichnisebene höher.

Jedem Programm/Prozess ist ein CWD (CurrentWorkingDirectory) zugeordnet.
Mit dem Befehl pwd (PrintWorkingDirectory ) kann ich mir dieses Arbeitsverzeichnis anzeigen lassen.

Diese Pfade kann man absolut oder relativ angeben.
Absolute Pfade beginnen mit einem / (der Slash). Das ist die Wurzel, auch Root genannt. (Nicht zu verwechseln mit dem User root, der Chef auf der Kiste ist, und genau so heißt).

Wenn man ein Programm ausführen will, so kann man es mit absolutem Pfad aufrufen, oder mit relativen.
Gibst du KEINEN Pfad vor dem Programm an, so werden die Pfade nach dem Programm durchsucht, die in der Environment Variablen PATH angeben sind. (Das ist eine durch Doppelpunkte getrennte Liste von Verzeichnissen).

Probiere die folgenden Befehle in einer Konsole:
# Zeilen, die mit # beginnen sind Kommentare.
# sie werden bei Ausführung einfach "überlesen"

echo $PATH # Kommentare können auch hinter Befehlen beginnen und enden am Ende der Zeile
# Jetzt siehst du Liste der Verzeichnisse

# Als User kannst du z.B. "lsmod" aufrufen
lsmod
# und erhältst einen Fehler, weil der Befehl nicht gefunden wird.
/sbin/lsmod # Aufruf von lsmod mit absolutem Pfad
# funktioniert aber, weil der Befehl jetzt gefunden wird.

# pwd == Print working Directory
pwd
# wäre die Ausgabe: /home/looser
# so ergibt ein
cd .. # ChangeDirectory <eine Ebene höher>
pwd # ergibt dann /home

# wir wollen hier im /home die Datei nix.txt lesen:
cat nix.txt # Fehlermeldung, weil in /home keine nix.txt steht
cat looser/nix.txt # funktioniert, weil über den RELATIVEN Pfad die Datei gefunden wird.
cat /home/looser/nix.txt # funktioniert auch, weil ABSOLUTER Pfad.
cd looser # mit RELATIVEN Pfad in das Verzeichnis /home/looser wechseln
cat ./nix.txt # funktioniert, weil RELATIVER Pfad existiert.

cd ../looser2 # mit relativem Pfad nach /home/looser2 wechseln
cat ../looser/nix.txt # mit realtiven Pfad die Datei wieder ausgeben.
cat ../../home/looser/nix.txt # funktioniert auch.
# der relative Pfad ist nur umständlich und langatmig angegeben.
# zweimal .. (== ein Verzeichnis höher) und dann wieder runter

Yexxx
06.08.16, 19:38
@BetterWorld

Danke für den Hinweis, ich werde mir das mal zu Gemüte ziehen!


Git gibt die Syntax laut git --help so vor:

git [-C <path>] usw.

Also zählt

git -C /var/www/ add . und

git -C /var/www/ commit -m 'Initial Commit'

Man kann es auch, wie marce es bereits beschrieben hat, zusammen ziehen:

git -C /var/www/ add .; git -C /var/www/ commit -m 'Initial Commit'