perl Problem, warten auf child Prozess

Diskutiere perl Problem, warten auf child Prozess im Web & Grafik Forum im Bereich Internet & Telekomunikation Forum; hab kleine Differenzen mit Perl heute... Ich soll ein Skript auf unserem Server anpassen, so das nach einer bestimmten Aktion Apache neu...
  • perl Problem, warten auf child Prozess Beitrag #1
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
hab kleine Differenzen mit Perl heute...
Ich soll ein Skript auf unserem Server anpassen, so das nach einer bestimmten Aktion Apache neu gestartet wird. Dazu hab ich folgendes eingefügt :
Code:
system("bash /usr/apache_29/bin/apachectl stop") and die $!;
system("bash /usr/apache_29/bin/apachectl start") and die $!;

./apache restart mag der nicht, da kommen angebliche Config Fehler, deswegen stoppe und starte ich den neu.

nur kommt dabei nur seltsames raus! :confused:
folgendes krieg ich nämlich im log :
Code:
:/usr/local/ezad/bin/cron# ./Nacht.pl2
/usr/apache_29/bin/apachectl stop: httpd stopped
cat: /var/run/httpd.pid: No such file or directory
/usr/apache_29/bin/apachectl start: httpd started
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running
/usr/apache_29/bin/apachectl stop: httpd stopped
/usr/apache_29/bin/apachectl start: httpd (pid 12058) already running

Wo steckt mein Fehler? Muß dabei sagen das ich von Perl keine Ahnung ab, programmieren ist aber sonst kein Problem.
 
  • perl Problem, warten auf child Prozess Beitrag #2
Lordazrael

Lordazrael

Bekanntes Mitglied
Dabei seit
15.10.2000
Beiträge
693
Reaktionspunkte
0
Ort
Bad Offenbach
das skript, das den apache stoppt, wird das vom apache selbst ausgeführt? ob das so reibungslos gehen würde wage ich zu bezweifeln. das perl skript würde vom apache dann terminiert und könnte diesen nicht mehr starten, oder irre ich mich?

warum eigentlich

system("...") and die ?

was willst du mit dem AND damit bezwecken? ein or wäre besser angebracht meine ich.

Vorschlag: schick doch einfach ein USR1 Signal an den Apache, dann wird die Konfiguration vom Apache nur reloaded, ohne dass du den restarten musst. Der Apache legt ja vermutlich in /var/run seine pid ab, etwa in httpd.pid oder so. sende einfach ein

system("kill -USR1 `cat /var/run/httpd.pid´") or die $!;

anstatt eines system aufrufes kannst du das auch mit dem in perl eingebauten kill befehl machen.

kill 'USR1' , $pid;

vorher muss $pid natürlich definiert sein.

HTH!
 
  • perl Problem, warten auf child Prozess Beitrag #3
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
das skript wird von cron ausgeführt, es soll die logs zippen und nach datum ordnen. das "and die $!" war um zu warten, bis das apachectl abgearbeitet ist (hab ich aus google so), anscheinend bringt's ja nix.
das mit reload signal ist ne gute idee, danke, werde ich mal testen! ich hoffe, es erfüllt seinen zweck, und zwar das der apache eine "error.log" in den virtualwebs, die nach dem zippen der "vollen datei" neu reinkopiert wurde, neu zu initialisieren.
 
  • perl Problem, warten auf child Prozess Beitrag #4
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
hmm ,zwar läuft jetzt der apache ordnungsgemäß aber der wird während das skript läuft, zig mal neu gestartet ... :
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
/usr/apache_29/bin/apachectl restart: httpd restarted
Bye at /usr/local/ezad/bin/cron/DNS_Look.pl2 line 228.
Bye at /usr/local/ezad/bin/cron/DNS_Look.pl2 line 228.

da weiß ich echt nicht mehr weiter, ich hab nur die eine zeile wo ich das USR1 signal zum apache schicke, und die liegt nicht in einer schleife...
 
Thema:

perl Problem, warten auf child Prozess

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben