Frage Führen Sie die .profile-Funktion als Cron-Job aus


In dem .profile Datei des root Benutzer Ich habe eine Funktion definiert, z.B.

function printDate() {
  date
}

Ich möchte diese Funktion jede Minute ausführen und die Ausgabe an cron.log anhängen. Ich habe versucht, den folgenden Crontab-Eintrag hinzuzufügen:

* * * * * printDate > $HOME/cron.log 2>&1

Aber es funktioniert nicht. Das cron.log Datei wird erstellt, aber sie ist leer. Ich denke, das ist, weil die .profile wird nicht von cron gelesen, daher sind darin definierte Funktionen / Aliase nicht verfügbar. Also habe ich versucht, den crontab-Eintrag zu ändern:

* * * * * source $HOME/.profile;printDate >> $HOME/cron.log 2>&1

Aber das funktioniert auch nicht. Es scheint, Cron hat immer noch keinen Zugang zu den printDate Funktion, weil ich folgendes sehe cron.log

/bin/sh: printDate: not found

4
2018-04-03 12:06


Ursprung


Schau hier superuser.com/questions/106272/how-to-call-bash-functions - Xn0vv3r
Also, um zu klären: source $HOME/.profile; printDate > $HOME/cron.log 2>&1 Sollte es tun :) - SirCharlo
@SirCharlo wird dies an die Ausgabe anhängen cron.log oder überschreiben? - Dónal
Das > Betreiber überschreibt; das >> Operator hängt ... Sorry, ich habe diesen Teil deines Posts verpasst. So sollte es sein: source $HOME/.profile; printDate >> $HOME/cron.log 2>&1 - SirCharlo
@SirCharlo es funktioniert immer noch nicht, ich habe meine Frage mit weiteren Details aktualisiert - Dónal


Antworten:


Wickeln Sie es einfach in ein anderes Bash-Skript. Ihre Dateinamen werden anders sein, aber ich habe: Test (.Profil)

#!/bin/bash
function printDate() {
  date
}

wrap (ein neues Skript, das du überall einfügen kannst, ändere einfach die URL)

#!/bin/bash
cd ~/
source ./test
printDate > ./date.log

wenn von einem / bin / sh ausgeführt wird

$ ls
test  wrap
$ ./wrap
$ cat date.log
Wed Apr 11 11:49:39 EDT 2012
$ 

Jetzt stellen Sie sicher, dass Ihre Pfade / Umgebung richtig sind

Die Crontab Linien, die ich gerade getestet habe, waren:

SHELL=/bin/sh
HOME=/root
* * * * * $HOME/wrap >/dev/null 2>&1

4
2018-04-11 15:50