Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • »user192« ist der Autor dieses Themas

Beiträge: 3

Registrierungsdatum: 19.10.2010

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

1

19.10.2010, 13:32

Script stoppt bei logout / setzt sich fort bei login

Hallo Zusammen

Ich habe ein Bash-Script, welches prüft ob ein Textfile neuer ist als ein anderes Textfile
Falls ja, dann wird ein Befehl ausgeführt, und das andere Textfile aktualisiert (damit es nicht mehr neuer ist).

Dieser Befehl wird auch erfolgreich ausgeführt, jedoch nur wenn ich als Benutzer (z.b. via ssh) eingeloggt bin.
Wenn ich ausgeloggt bin, dann funktioniert es nicht. Erst wenn ich mich wieder einlogge dann wird die letzte Änderung übernommen, wenn ich mich erfolgreich eingeloggt habe...

Das Script wird mittels screen ausgeführt:
screen -Stdm ceck check /home/user/check.sh

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/sh

while true
do

    	ADATUM='/home/user/adatum.txt'
    	FREQUENZEN='/var/www/admin/frequenzen.txt'

if [ $FREQUENZEN -nt $ADATUM ]; then # NewerThan

            	FREQUENZ0=`perl -nle '++$i==1 && print' /var/www/admin/frequenzen.txt`
            	FREQUENZ1=`perl -nle '++$i==2 && print' /var/www/admin/frequenzen.txt` 

            	ivtv-tune -d/dev/video0 -teurope-west -f$FREQUENZ0
            	ivtv-tune -d/dev/video1 -teurope-west -f$FREQUENZ1
            	rm $ADATUM
            	touch $ADATUM
            	chmod 777 $ADATUM

fi

ping -c1 127.0.0.1

done


Könnt ihr mir sagen was ich vergessen habe, nicht beachtet habe?

  • »maettu« ist männlich

Beiträge: 3 299

Registrierungsdatum: 14.09.2005

Derivat: Xubuntu

Architektur: 64-Bit PC

Desktop: XFCE

  • Nachricht senden

2

19.10.2010, 13:53

ähm wieso läuft, dass ganze nicht als cron-job? Besonders da die Frequenzen ja nicht im Sekundentakt ändern, oder?
Denke ein Intervall von einmal im Tag würde genügen, oder?


Dein äh "Polling" ist nicht sehr Resourcenschonend, da du einfach nen While-True machst, würde dein Programm eigentlich immer laufen, vielleicht wird es aber vom Scheduler in den Hintergrund geparkt, wenn dein User nicht eingelogt ist, da du dadurch ne tiefere Priorität hast...

Aber wie schon erwähnt, dein Problem ist viel besser in einem Cron-Job aufgehoben, diesen kannst du dann als Root ausführen lassen, dann bist du völlig unabhängig von irgendeinem User.
Am besten schaust du dir das mal an.

  • »user192« ist der Autor dieses Themas

Beiträge: 3

Registrierungsdatum: 19.10.2010

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

3

19.10.2010, 14:16

Danke für deine Antwort,

Das mit dem Cron-Job habe ich mir schon auchmal durch den Kopfgehen lassen, aber das Script soll sich ja immer nach 1 Sekunde aktualisieren.
Wenn ich das als Cron-Job ausführen lasse, und 1x am Tag abrufe, dann wird das Fernsehsignal 1x am Tag geändert. Aber ich möchte ja dass sich das TV Signal ändert wenn ich auf die entsprechende Option drücke.

Also das Ganze klappt ja auch bei mir, aber wie kriege ich denn das mit dem Scheduler hin, dass der mein Script nicht in den Hintergrund schiebt?

  • »maettu« ist männlich

Beiträge: 3 299

Registrierungsdatum: 14.09.2005

Derivat: Xubuntu

Architektur: 64-Bit PC

Desktop: XFCE

  • Nachricht senden

4

19.10.2010, 15:46

ähm bei Cron-Jobs gibts als kleinstes Zeitintervall 1 Minute, das mit 1x am Tag war nur so ein Vorschlag.

Zitat

Aber ich möchte ja dass sich das TV Signal ändert wenn ich auf die entsprechende Option drücke.
wieso führst du dann nicht einfach in diesem Moment, das Skript aus, oder geht das zu lange?


Und wieso Pingst du in deinem Skript?
Ein "Sleep" wäre auch nicht das dümmste für dein Skript, da sich ja mit hoher Wahrscheinlichkeit nichts ändert....

An dem Scheduler-Prioritäten rumzuschrauben zeugt von schlechtem Programmierstil, da dein Skript sich je nach Rechnerlast völlig anders Verhalten kann.

PS: Andere Fragen, woher holst du dir dein "frequenzen.txt" gibts da ne Webseite im Internet? Falls ja, wär nett wenn du ein Link geben könntest.

  • »user192« ist der Autor dieses Themas

Beiträge: 3

Registrierungsdatum: 19.10.2010

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

5

20.10.2010, 08:54

Ja also ich hab sowieso Probleme mit dem Cron-Job oder auch mt dem rc.local, also alles was ich in die Files reinschreibe wird gar nicht ausgeführt, keine Ahnung warum. Also beim Restart klappts auch nicht (ich will da nämlich den Service starten). Aber der ignoriert das völlig.

Wenn ich das ausführe mittels dieser Zeile im PHP-File

PHP-Quelltext

1
shell_exec('/bin/sh /home/user/check.sh'); 

dann passiert das nicht. Auch ohne /bin/sh wirds nicht ausgeführt. Berechtigungen sind auf 755 und somit sollte das Script ja auch ausführbar sein..
Wenn ich den Befehl via SSH eingebe dann klappts. Ich gehe also davon aus dass ich trotzdem zu wenige Rechte habe, oder?

Sorry einen Link kann ich Dir nicht geben, da das Projekt intern ist und bei uns im lokalen Netz läuft.

Danke für die HIlfe