Automatische Laden einer Website

Du suchst ein Programm für einen bestimmten Zweck?
herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 16:57:07

Also jetzt habe ich doch den xserver installiert. Wie kann ich jetzt Firefox ausführen? Der Xserver ist schon gestartet.
Ich bekomme bloß diese Fehlermeldung:

Code: Alles auswählen

(firefox-bin:16309): Gtk-WARNING **: cannot open display:
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

Beitrag von Snoopy » 03.06.2006 17:01:51

Hi

Hast Du den Job in die Root-Crontab eingetragen ?

Das Teil muss in die User-Crontab, der gerade den XServer rennen hat.

Das sollte evtl auch die Lösung für [1] sein.

[1] http://www.debianforum.de/forum/viewtopic.php?t=68463

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 17:07:57

Das Problem ist ja, dass dies root ist. Dann muss ich mich also einfach als anderer Benutzer einloggen und es da probieren?



edit: so bring er die selbe Fehlermeldung...
Zuletzt geändert von herrhannes am 03.06.2006 17:09:50, insgesamt 1-mal geändert.

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

Beitrag von Snoopy » 03.06.2006 17:09:36

Hi

Öhmm..Du bist mit dem Root-User in der grafischen Oberfläche ?

[edit]
Zeig doch mal den Job, der jetzt ausgeführt wird...oder das Skript...
Zuletzt geändert von Snoopy am 03.06.2006 17:11:20, insgesamt 1-mal geändert.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 17:11:15

Jop bin ich...
Aber als normaler user geht das auch nicht...

Oder verstehe ich da was absolut falsch? Ich hab da nicht wirklich den vollen Durchblick^^

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 17:15:03

Ausgeführt wird das Script:

Code: Alles auswählen

#!/bin/bash
firefox (Seite)   2>&1 >/dev/null
Ich habe da etwas gefunden:

Code: Alles auswählen

#!/bin/bash
firefox (Seite) -display :0.0  2>&1 >/dev/null
Kann das was bringen? Kann ich das auch in die root Crontab setzen? Muss der xserver dann als root laufen?[/code]

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 21:17:40

herrhannes hat geschrieben:Das Script scheint zu funktionieren, aber ist das normal, das bei der mit Puttyferngesteuerten Ausführung Programmende durch Interrupt 15 angezeigt wird aber nicht mehr die Bash?
Wenn ich jetzt auf strg+c drücke wird sie zwar wieder ngezeigt, ich kann aber nichts eingeben.
Wie schaffe ich jetzt, Perl dazu zu bringen das in den Xserver zu laden?
Die Umgebungsvariable Display wird von Perl ja anscheinend ignoriert...

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 21:44:39

Also das habe ich jetzt hinbekommen.
Jetzt: Wie schaffe ich es, wenn ich firefox mit firefox seite1 und dann firefox seite2 aufrufe, dass der Firefox für Seite2 ein neues Fenster bzw. Tab öffnet und die Seite nicht im Fenster von seite1 lädt?

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 03.06.2006 22:21:45

Hier mal ein ganz anderer Weg:

Mit dieser HTML-Seite kannst du im Firefox aufrufen und die eingetragene Seite wird im angegebenen Intervall immer wieder neu geladen.

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head><title>autoreload</title></head>
 <script language="JavaScript">
 <!--
 /*Wert in Millisekunden*/
 var timeout=30*1000;
 var aktiv = window.setInterval("this.frames[0].location.reload()", timeout);
 -->
 </script>
 <frameset rows="*">
  <frame name="SEITE" src="http:/192.168.1.222/index.html">
  <noframes><body>Nur mit Frames</body></noframes>
 </frameset>
</html>
Das mit den Seiten ist eine Firefox Einstellung.
Wenn du in die Zeile eingibst "about:config" und dann im Filter eingibst "extrenal"
taucht eine Zeile auf "browser.link.open_external" der Wert "3" sollte dafür sorgen, daß externe links in meuen Tabs geöffnet werden.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 22:43:10

Na gut das Problem mit dem Laden ist jetzt gelöst, aber den Firefox laufen lassen will ich nicht, weil das ein uralter 500Mhz Server mit wenig RAM ist, der natürlich auch noch für andere Dinge gebraucht wird...
Wenn ich jetzt aber folgendes Perl-Script habe:

Code: Alles auswählen

#!/usr/bin/perl
my $cmd='firefox -P Profil Seite --display=:0.0 2>&1 >/dev/null';
my $timeout=60;
my $kill='kill _PID_';

# Hilfe ausgeben
die <<USAGE if(grep{$_=~/-h/}@ARGV);
$0 [ timeout [ exec_cmd [ kill_cmd ] ] ]
 Dieses Script führt einen Befehl aus,
 wartet die angebene Zeit
 und beendet das Programm.
 "_PID_" wird in "kill_cmd" durch die ProzessID
 des ausgeführten Programmes erstezt.
 Voreingestellt:
  -timeout=$timeout
  -exec_cmd="$cmd"
  -kill_cmd="$kill"
USAGE

# Optionen übernehmen
my $n;
$timeout=$n if( $n=shift(@ARGV) );
$cmd=$n if( $n=shift(@ARGV) );
$kill=$n if( $n=shift(@ARGV) );

# Programm ausführen
# Prozessid merken
my $pid=fork();

exec($cmd) unless($pid);


# einige Zeit warten
sleep($timeout);

# Programm mit der Prozessid killen.
$kill=~s/_PID_/$pid/;
exec($kill);    
Dann schafft er es nicht den Firefox wieder zu beenden. Kann das daran liegen, das Popups geöffnet werden? Die Prozessid bleib ja immer gleich...
Gibt es eine Möglichkeit mit diesem Script ALLE laufenden Firefoxe zu beenden?

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 23:19:21

Bin ich blöd... :oops:

natürlich mit:

Code: Alles auswählen

killall firefox-bin
Muss man ja nur noch dem Script unterjubeln^^

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 03.06.2006 23:19:23

Klar in dem du den Killbefehl änderst z.B. "killall -r firefox"

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 23:20:07

hehe war immerhin 2 Sekunden schneller^^

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 03.06.2006 23:20:41

Was steht denn in der Zeile "my $kill=..."? Und jetzt denk mal nach. ;-)

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 23:21:19

ja eben... ich hatte ja nachgedacht... aber erst zu spät :oops:

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 03.06.2006 23:23:36

:-)

Das Script kann man übriges kürzen wenn du keine komandozeileneingaben machen willst:

Code: Alles auswählen

#!/usr/bin/perl
my $cmd='firefox -P Profil Seite --display=:0.0 2>&1 >/dev/null';
my $timeout=60;
my $kill='killall -r firefox';
exec($cmd) unless(fork());
sleep($timeout);
exec($kill);
Zuletzt geändert von ToPeG am 03.06.2006 23:50:13, insgesamt 1-mal geändert.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 23:40:20

Das ist eigentlich eine gute Idee...

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 04.06.2006 00:29:56

Ach noch was. Du kannst den Xserver immer nur dann starten wenn er gebraucht wird. z.B so:

Code: Alles auswählen

xinit perl /pfad/zum/timeout_script
So bendet sich der Xserver zusammen mit dem Firefox. Zudem parst du eine Menge resourcen, da nur X11 und der Firefox gestartet wird kein Windowmanger, keine zusätzlichen Tools nichts der gleichen. Mit "--width=" und "--heigth=" kannst du zusätzlich die Startgröße des Firefox bestimmen.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 04.06.2006 11:46:33

Das Problem ist, dass es ein Webserver ist, also die 100 prozentige Prozessorauslastung beim Start eines Programmes stört, da sich das Ganze dann recht träge anfühlt, weil er um die zwei Sekunden für das Laden einer PHP-Seite braucht, was bei einem Browsergame nicht sehr anhgenehm ist...
Wenn ein Programm mal geladen ist, stört es weniger, wenn das RAM fast voll ist.
Als WM benutze ich halt IceWM, da bleiben sogar bei mir noch 50MB übrig, der Speicherfresser ist da wohl eindeutig der Firefox... Außerdem kann ich so doch nicht mehrere Firefox-Instanzen auf einmal starten, oder?

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 04.06.2006 14:18:53

Um andere Programme nicht zu stören kannst du "nice" benutzen, das setzt die Priorität eines Programmes Beispiel:

Code: Alles auswählen

nice -5 firefox
Das startet den Firefox mit einer nidrigeren Priorität als normal. "-0" ist normal, "-19" ist das niedrigste.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 04.06.2006 19:55:21

Das heißt aber doch nicht, dass es beim Starten keine 100%ige Auslastung gibt?

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 04.06.2006 20:11:57

Nein das zwar nicht, aber alle Programme mit nidiregen nice-Wert haben Vorrang, daß bedeutet, wenn der Webserver 100% Leistung bruacht, wird der Firefox solange angehalten, bis der Webserver weniger braucht.
Je niedriger der nice-Wert, desto größer ist die Priorität des Prozeses. Alle Prozesse mit niedrigerer Prorität müssen warten bis bis die mit höherer fertig sind. Prozesse mit gleicher Priorität Teilen sich die zur Verfügung gestellte Prozessorleistung zu gleichen Teilen.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 04.06.2006 23:52:12

Das Problem ist ja, dass der Webserver eigentlich nie volle Leistung braucht, da es nur ein Logd ist (http://www.herrhannes.de ^^) , der firefox aber auch nur beim starten, d.h. wenn beides läuft hat sogar der mickrige Server mehr als genug Leistung...

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 05.06.2006 01:13:09

Entschuldige, ich versteh das Problem jetzt nicht. Was ist daran Problematisch wenn ein Rechner 100% Prozessorauslastung hat?
Durch eine Prioritisierung der Prozesse würde ein Programm mit höherer Priorität als der Firefox garnicht merken, daß der Prozessor gerade unter Volllast arbeitet, da das Programm immer Vorrang vor dem Firefox hätte.

Wenn der Speicher das Problem ist, dann kannst du mit "ulimit" den Speicher den ein Programm, welches von der laufenen Bash gestartet wurde, beschränken.
Außerdem, wenn du sowiso nur den Firefox brauchst, warum willst du dann noch einen ganzen Windowmanager dazu packen? Der verbraucht auch eine ganz Menge Speicher.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 06.06.2006 11:07:02

Den WM brauche ich, weil ich mehrere Firefoxe gleichzeitig laufen lassen will... Das Problem der 100%-Auslastung ist, dass die Seite dann extrem langsam lädt. Eine Priorisierung von bestimmten Threads hilft denen imho auch nicht, wenn ein anderer gerade startet und dazu 100% braucht, auch wenn er nur eine niedrige Priorität hat. Man könnte fast meinen der DMA-Modus sei nicht aktiviert...^^

Antworten