itfreak
Goto Top

Crontab funktioniert nicht!

Salü Zusammen


Ich habe unter ubuntu Server Edition eine Citrix Session am laufen.
Falls mir diese abkackt möchte ich die mit einem Script wieder neu starten.
Ich habe dazu ein Script im Home Folder des Users angelegt dies sieht wie folgt aus.

#!/bin/sh

# Üperprüfung der Citrix Session
if [ $(ps -A | grep -c citrix.sh) = 0 ];
then
echo "$(date) Deutsche Citrix Session restarten"   
cd /home/Users
./citrix.sh &
fi

Dises Script will ich mit der Crontab aufrufen leider will das nicht so funktionieren
wie ich das vorgesehen hatte! Die Crontab sieht wie folgt aus.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/5 * * * * 	User 	exec /home/Users/checkCitrixSession.sh 

Habe schon versucht das sh wegzulassen hat aber nicht geklappt!


Vielen Dank im voraus für die Hilfe!


Gruess Itfreak

Content-ID: 116778

Url: https://administrator.de/contentid/116778

Ausgedruckt am: 19.11.2024 um 23:11 Uhr

Alphavil
Alphavil 26.05.2009 um 09:50:53 Uhr
Goto Top
Sieht mir schwer nach einem Rechte-Problem aus. Ich vermute mal das der User "User" gar keine Berechtigung hat das Skript auszuführen. Du siehst ja das die anderen Skripte jeweils als root ausgeführt werden


Gruß André


P.S. Das sh weglassen ist keine gute Idee, wenn das Skript ein "sh" am Ende hat. Bei Linux sind aber Dateiendungen völlig unwichtig. Kannst das Ding auch .fritz nennen und wenn es ausführbar ist gehts trotzdem
jhinrichs
jhinrichs 26.05.2009 um 11:03:10 Uhr
Goto Top
Hallo,

mehrere Fragen:

Du hast als Benutzer User und als Homeverzeichnis /home/Users stehen. Ist das "s" ein Tippfehler?
Läuft das Skript, wenn Du es als User "User" aufrufst?
su -l User
/home/Users/checkCitrixSessions.sh
Wenn ja, passen schon einmal die Rechte, wenn nein, was ergibt
ls -l /home/Users/checkCitrixSessions.sh
Was möchtest Du mit dem "exec" erreichen? Das wird nur genutzt, um die Shell zu ersetzen, lass es mal weg.
Hast Du die geänderte crontab dem crond bekanntgemacht?
crontab /etc/crontab

Viele Grüße
Itfreak
Itfreak 26.05.2009 um 12:06:55 Uhr
Goto Top
Salü jhinrichs

Danke für deine Rückmeldung!

Wenn ich exec wglasse muss ich einen anderen Platzhalter oder sonstwas hinsetzten?
Die Änderungen habe ich direkt in der /etc/crontab vorgenommen.
Was sollte ich der Crond noch mitteielen?

Grruss Itfreak
jhinrichs
jhinrichs 26.05.2009 um 12:40:08 Uhr
Goto Top
Hallo,

das "exec" kannst Du einfach weglassen.

Wenn Du Änderungen an der crontab mit einem Editor durchführst, musst Du einmal den Befehl
crontab /etc/crontab
ausführen (wenn die Datei "crontab" im Verzeichnis /etc liegt), damit der crond die Änderungen mitbekommt.
Itfreak
Itfreak 26.05.2009 um 13:29:47 Uhr
Goto Top
Salü

Also habe ich alles gemacht! hier noch meine neue Crontab:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab' 
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
#*/1 * * * * 	citrix 	exec /home/citrix/DEwfica.sh

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/5 * * * * 	citrix /home/citrix/checkCitrixSessions.sh

Leider funktionierts immer noch nicht!
natürlich habe ich auch mehrere restarts gemacht!


Gruess Itfreak!
jhinrichs
jhinrichs 26.05.2009 um 14:20:59 Uhr
Goto Top
Ich gehe mal davon aus, dass das Script im Prinzip läuft, aber nicht vom crond/anacrond aufgerufen wird?
Also, wenn Du es von Hand mit
su -l citrix
/home/citrix/checkCitrixSessions.sh
startest, funktioniert es wie gewünscht?

Was ergibt denn ein
ps ax | grep cron

Gibt es auch eine /etc/anacrontab auf Deinem System?
Itfreak
Itfreak 26.05.2009 um 17:02:35 Uhr
Goto Top
Salü

Also wenn ich es mit su-l mache geht es nicht !!
Obwohl ich ja alle Rechte dem User erteilt habe!
Wenn ich einfach normal in die Console gehe funktioniert es!!


su -l citrix 

02.

/home/citrix/checkCitrixSessions.sh

Die anacrontab ist auf meinem System vorhanden.


Mit
 ps ax | grep cron
bekomme ich :

2801? Ss 0:00 /usr/sbin/cron
5015 pts/1 S+ 0:00 grep cron
jhinrichs
jhinrichs 27.05.2009 um 08:11:02 Uhr
Goto Top
Guten Morgen,

was heißt: "wenn ich einfach normal in die Console gehe",
mit welchem Account bist Du dann angemeldet?

Und was passiert genau bei der Abfolge mit su -l?

Was ergibt
ls -al /home/citrix/checkCitrixSessions.sh

Zum Verständnis noch einige Fragen (sooo viele Fragen..... face-wink):

Oben war zunächst von /home/Users die Rede, jetzt von /home/citrix. War "Users" ein Platzhalter oder gibt es das Verzeichnis wirklich? Und wenn ja, hat der Benutzer citrix Zugriff auf /home/Users? Stimmt die Groß/Kleinschreibung?

Wenn alles nicht funktioniert, was spricht eigentlich dagegen, das Script als root starten zu lassen?

Viele Grüße
Itfreak
Itfreak 27.05.2009 um 10:55:13 Uhr
Goto Top
Moin Moin

Also wenn ich die Console öffne ohne erhöte Rechte funktioniert das
ganze wen ich es mit su -l citrix leider nicht mehr!
Ich habe auch schon in der Crontab mit dem Root versucht!

ls -al /home/citrix/checkCitrixSessions.sh

bekomme ich

rwxrwxrwx citrix citrix 554

Gruss
jhinrichs
jhinrichs 27.05.2009 um 11:41:38 Uhr
Goto Top
Geben die logfiles in /var/log etwas her?
Das mit der Console ist merkwürdig, denn nach su -l citrix sollte es keinen Unterschied zur direkten Anmeldung als User citrix geben.
Was heißt denn, es funktioniert nach su -l citrix nicht?

Kommt eine Fehlermeldung? Oder läuft das Script nicht korrekt?
Itfreak
Itfreak 27.05.2009 um 12:08:07 Uhr
Goto Top
Salü

Also es kommt eine Fehlermeldung Cannot open Display!
Die Log suntersuche ich noch!

Gruss
Ministry
Ministry 27.05.2009 um 12:15:47 Uhr
Goto Top
Wenn die Session _immer_ laufen soll, würde ich das eher über die /etc/inittab regeln.
Guck mal in 'man 5 inittab' speziell den Abschnitt über respawn an.

Wegen dem Cron:
Mach doch mal spaßeshalber statt
*/5 * * * * 	citrix /home/citrix/checkCitrixSessions.sh
lieber
*/5 * * * * 	citrix /bin/sh /home/citrix/checkCitrixSessions.sh

p.s. Ich hoffe, dass das mit den Formatierungen so passt. ;)

edit: Wegen 'Cannot Open Display":
"export DISPLAY=:0.0"
Ins Script. DISPLAY wird bei Shell-Scripten nicht automatisch gesetzt.
jhinrichs
jhinrichs 27.05.2009 um 12:26:49 Uhr
Goto Top
Jetzt kommen wir der Sache näher. In Deinem Script wird die citrix.sh aufgerufen, die offenbar eine grafische Oberfläche benötigt?
Die steht dem cron-Prozess nicht zur Verfügung. Die Ergänzung von Ministry ist ein Versuch.
Gibt es denn bei der citrix.sh die Möglichkeit, über Kommandozeilenparameter ein bestimmtes Display zuzuordnen, idealerweise, sie ganz ohne Ausgabe starten zu lassen?
Sonst wird's jetzt kompliziert....
Itfreak
Itfreak 02.06.2009 um 10:09:22 Uhr
Goto Top
Moin Moin

Wo soll ich den Zusatz von Ministry (Stelle) hinzufügen?

Gruess itfreak
jhinrichs
jhinrichs 02.06.2009 um 11:01:55 Uhr
Goto Top
Moin,

war so ein langes Wochenende verdient?

Die "export" - Zeile gehört in Dein script, auf jeden Fall vor den Aufruf von citrix.sh

Damit soll dem script citrix.sh mitgeteilt werden, wohin es seine Bildschirmausgaben zu schicken hat.

Viele Grüße