cron und c++

  • Hallo.


    Ich habe ein kleines C++ Progrämmchen geschrieben, indem folgende Zeile:
    system ("shutdown -h \"now\" ");
    den Rechner runterfährt.
    Wenn ich das Programm als root in einem Terminal starte, fährt der Rechner ohne Probleme
    runter.
    Starte ich das Programm als root mit einem cronjob, wird es ausgeführt aber es erfolgt kein
    Shutdown.


    Hat da jemand vielleicht eine Idee, was da das Problem sein könnte ?



    Grüsse
    Spookie

    Registrierter VDR - User #1322
    Gepanschtes LinVDR 0.7 mit VDR 1.4.0 MT20050528; Silver Stone Gehäuse; 2x Nexus-s; AMD Duron 1600MHz; 512MB; LiteOn Brenner; Platten: Western Digital 40GB und Hitachi 160GB; 12" TFT über fbtv

  • Erstmal Vielen Dank.


    Nach der Pfadangabe hat das ganze funktioniert.
    Nur eines verstehe ich nicht:
    Ich führe in diesem Programm auch einen ping Befehl aus. Der tut es auch ohne
    Pfadangabe. Gibt es da irgendeine Begründung dafür ?


    Grüsse
    Spookie

    Registrierter VDR - User #1322
    Gepanschtes LinVDR 0.7 mit VDR 1.4.0 MT20050528; Silver Stone Gehäuse; 2x Nexus-s; AMD Duron 1600MHz; 512MB; LiteOn Brenner; Platten: Western Digital 40GB und Hitachi 160GB; 12" TFT über fbtv

  • Scheint so, als ob in der "cron-Umgebung" die Pfadvariable für /bin gesetzt ist, nicht aber für /sbin.


    Sofern ping in /bin liegt, kann das die Ursache sein.

    My VDRs:

  • dad401
    Wenn Du mir jetzt noch verraten kannst, wie ich diese Pfadvariable für den cron
    einstelle, bin ich absolut zufrieden.


    Grüsse
    Spookie

    Registrierter VDR - User #1322
    Gepanschtes LinVDR 0.7 mit VDR 1.4.0 MT20050528; Silver Stone Gehäuse; 2x Nexus-s; AMD Duron 1600MHz; 512MB; LiteOn Brenner; Platten: Western Digital 40GB und Hitachi 160GB; 12" TFT über fbtv

  • Hmm ich glaube das war in rcS oder so. Schau mal in /etc/init.d oder evtl. meldet sich noch jemand, der es auf Anhieb weiss...

    My VDRs:

  • Es ist normal das du unter Cron nur ein sehr sehr rudimentäres Environment hast. Das würde ich auch garnicht ändern sondern, wenn du es unbedingt willst ein normales Environment in deinem Programm herstellen. In Bashscripten machst du das normalerweise indem du das profile/bashrc importierst und somit ausführst. Oder du weisst genau was du brauchst und exportierst die benötigten Pfade vorher. *1


    *1: Wenn du dich als normaler User einloggst wird üblicherweise /etc/profile ausgeführt was auf Linux meistens /etc/bashrc ausführt. Danach wird ~/.profile und somit auf Linux ~/.bashrc ausgeführt. Somit hat der User dann erst die allgemeinen Umgebungsvariablen und dann die speziell für den User angelegten. Erst dann kommst du auf den Prompt. Die ganze prozedur wird bei Cron nicht betrieben, da sich kein User einloggt. Das Environment wie beim normalen Login zu setzen würde ich als dirty Hack bezeichnen, du musst über nichts mehr nachdenken, alles was beim ausprobieren fuinktioniert, wird dann auch in Cron gehen. Die elegantere/schönere Lösung ist die benötigten Pfade zu setzen und so nur ein minimal Environment, oder immer die kompletten Pfade zu benutzen.



    Hope that helps ;)


    Steffen

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!