befehle aus datei ausführen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von uzumakinaruto, 25.01.2010.

  1. #1 uzumakinaruto, 25.01.2010
    uzumakinaruto

    uzumakinaruto Tripel-As

    Dabei seit:
    23.05.2008
    Beiträge:
    246
    Zustimmungen:
    0
    Ort:
    Gifhorn
    Hi,

    ich erstelle mit einem PHP-Script Befehle die dann auf der Consoel ausgeführt weden sollen.

    wenn ich die datei mit exec ausführen lasse sehe ich wie er anfängt, aber die screens wieder terminiert ohne die aufgabe abgearbeitet zu haben.

    z.b.
    Code:
    screen -S debian_image wget 'http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-dvd/debian-503-i386-DVD-1.iso'
    Code:
    file="/path/to/file.sh"
    exec $file
    am ende wäre es auch noch schön wenn er die abgearbeiteten dateien gleich aus der textdatei löschen würde, damit sie beim nächsten durchlauf des cronjobs nicht erneut runtergeladen werden.

    danke schonmal im voraus
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 HeadCrash, 25.01.2010
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Hi,

    führst du das PHP-Script per Console aus oder via Webserver?

    Falls es über einen Webserver läuft würde ich auf "max_execution_time" tippen.
    Also die Zeit die ein PHP-Script laufen darf bevor es gekillt wird.

    mfg
    HeadCrash
     
  4. #3 uzumakinaruto, 25.01.2010
    uzumakinaruto

    uzumakinaruto Tripel-As

    Dabei seit:
    23.05.2008
    Beiträge:
    246
    Zustimmungen:
    0
    Ort:
    Gifhorn
    das problem liegt nich bei php.

    php füllt die textdatei mit linux commands, das war es.
    jetzt soll ein shell-script die textdatei auslesen und die commands ausführen.

    ich möchte nicht mit php übern webserver auf der console arbeiten .. mir zu unsicher und ich will den apachen nicht umbiegen das er in den anderen verzeichnissen rumspielen darf
     
  5. #4 HeadCrash, 25.01.2010
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Okay das hab ich ein bisschen falsch verstanden. Der Befehl exec hat mich irgendwie an php-Code denken lassen.
     
  6. #5 marcellus, 25.01.2010
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Wenns dir darum geht etwas runterzuladen versteh ich nicht, wieso du nicht

    Code:
    wget -c -b $url
    verwendest.

    Wenn du das ganze aus einem cron job ausführst könnte es auch sein, dass er probiert die datei mit /bin/sh auszuführen, was uu mit der syntax nicht hinhaut. Probier doch vllt einmal

    Code:
    /bin/bash $filepath
    Ich hab zwar screen nicht installiert, weil ich doch lieber mein genome-terminal hab, aber sollte dein Befehl nicht screen im fordergrund halten? Wenn das so ist kannst du das abwürgen unter Umständen unterbinden, wenn du screen in den hintergrund schiebst.
     
  7. #6 uzumakinaruto, 25.01.2010
    uzumakinaruto

    uzumakinaruto Tripel-As

    Dabei seit:
    23.05.2008
    Beiträge:
    246
    Zustimmungen:
    0
    Ort:
    Gifhorn
    ich will das ganze ja auf einem server nutzen ohne X.
    und es gibt unbedarfte benutzer hier die einfach nur eine url ins formular eingeben sollen und dann soll auf dem server im hintergrund die datei runtergeladen werden.
    unter umständen auch gleich mehrere dateien gleichzeitig.
    mir ist da eigentlich nur screen bekannt das mir diese möglichkeit bietet.

    wenn ihr andere "tools" kennt, immer her damit.

    achso .. wenn ich den code (eine zeile) direkt auf der console ausführe funktioniert das einwandfrei .. er bleibt zwar im screen drinne .. aber er läd die datei runter
     
  8. #7 HeadCrash, 25.01.2010
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Hast du schon mal die Parameter
    -dmS name Start as daemon: Screen session in detached mode.
    versucht?
     
  9. #8 Asturio, 25.01.2010
    Asturio

    Asturio Asturio Kee

    Dabei seit:
    16.02.2006
    Beiträge:
    34
    Zustimmungen:
    0
    Also der VDR (als ich das benutzt habe) hat immer die Befehle über "atd" ausgeführt. Also einfach mit "at ..." einen Befehl an der atd geschickt, und dieser hat den Job im Hintergrund ausgeführt. Der Vorteil hier, ist dass der at Befehl sofort zurückkommt.

    Wäre also eine Überlegung Wert.

    Grüße,

    Asturio
     
  10. #9 uzumakinaruto, 25.01.2010
    uzumakinaruto

    uzumakinaruto Tripel-As

    Dabei seit:
    23.05.2008
    Beiträge:
    246
    Zustimmungen:
    0
    Ort:
    Gifhorn
    also ich habe es jetzt endlich geschaft. (zumindest eine zeile)

    mit zwei zeilen werde ich morgen testen, entweder es klappt oder es klappt nicht.
    dann werde ich mit einer for-schleife ran müssen und dann diese zeile irgendwie ausgeführt bekommen (exec macht ditte nicht, oder ich habe den parameter nicht gefunden)

    ich hatte zum einen zeichen probleme in der datei (%0D) und zum anderen hatte ich einfach nur screen -S name wget 'http...' gemacht.

    nachdem ich screen -d -m -S ... gemacht habe, hat das mit screen geklappt.

    jetzt wäre es natürlich auch noch schön das dann beim fertigen download der screen terminiert wird und die zeile aus der textdatei gelöscht wird.
     
  11. #10 HeadCrash, 25.01.2010
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Die frage ist nach wievor noch irgendwie im Raum wieso ausgerechnet screen dafür verwendet.

    Im Grunde genügt doch ein ganz normaler wget-Aufruf wie in marcellus oben beschrieben hat. Du kannst wget auch eine Datei mit Links vorwerfen die er nacheinander abarbeitet.

    mfg
    HeadCrash
     
  12. #11 Asturio, 25.01.2010
    Asturio

    Asturio Asturio Kee

    Dabei seit:
    16.02.2006
    Beiträge:
    34
    Zustimmungen:
    0
    Und: wget -c kann unterbrochene Downloads wieder aufnehmen, und weiter downloaden. Soll die Datei fertig runtergeladen sein, macht er nichts.

    Ein Tipp: Bei twitter gibt es den "scriptfu" Mensch. Der gibt immer interessante Script-Tipps.

    Grüße

    Asturio
     
  13. #12 uzumakinaruto, 27.01.2010
    uzumakinaruto

    uzumakinaruto Tripel-As

    Dabei seit:
    23.05.2008
    Beiträge:
    246
    Zustimmungen:
    0
    Ort:
    Gifhorn
    nacheinander ist aber nicht das was ich brauche, sondern gleichzeitig und sehr zeitnah, da die downloads schnell "weg" sind.

    an sich müsste ich SOFORT nach dem der benutzer gesagt hat "runterladen" die datei runterladen .. sagt 2 min user 2 auch runterladen, dann sollte die 2. datei auch runtergeladen werden.
    mir fällt dazu nur wget mit screen ein .. oder übersehe ich da etwas?
     
  14. #13 marcellus, 27.01.2010
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Du kannst weget auch einfach in den Hintergrund schicken und pro download eine instanz von wget laufen lassen. Damit hast du alle downloads parallel laufen, schneller wirds nicht.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 saeckereier, 27.01.2010
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Wenn du nur ne Datei runterladen willst, warum dann überhaupt Shell?
     
  17. #15 Asturio, 27.01.2010
    Asturio

    Asturio Asturio Kee

    Dabei seit:
    16.02.2006
    Beiträge:
    34
    Zustimmungen:
    0
    at könnte das Problem lösen

    Wie gesagt, "at" kann eventuell helfen. Einfach
    echo "Befehl" | at NOW
    z.B.
    echo "touch /tmp/hallo-welt" | at NOW
    oder
    echo "wget http://www.google.de -O $HOME/google.html" | at now

    Das ausführen des Befehls macht dann der "atd".

    Oder mit heredocs arbeiten was noch cooler ist:

    at NOW << EOD
    touch /tmp/vor-dem-download
    wget http://www.google.de -O /tmp/google.html
    touch /tmp/nach-dem-download
    EOD

    Dann macht er den touch, dann ein download und dann wieder ein touch. Also schon praktisch.

    Eigentlich ist das ding gedacht, um Befehle später auszuführen, um zum Beispiel erst ab 00:00 einen Download zu starten, oder einen Ausdruck im Rechenzentrum morgen früh zu starten, damit er fertig ist, wenn am in der Arbeit ist.

    Grüße
     
Thema:

befehle aus datei ausführen

Die Seite wird geladen...

befehle aus datei ausführen - Ähnliche Themen

  1. Centosbefehle

    Centosbefehle: Hallo ich habe ein Centos 7.2.15.11 image (mit Hdclone von Miray gemacht) Ich möchte das Image auf eine existierende Ubuntu installation...
  2. Kurzzusammenfassung der Befehle und Progr. für die shell

    Kurzzusammenfassung der Befehle und Progr. für die shell: Hallo zusammen, bei der Verbesserung eines meiner Scripte bin ich nach ausführlicher Recherche auf den Befehl (Prog?) "file" gestossen. Dieser...
  3. default befehle in der bash

    default befehle in der bash: Hallo! Ich suche eine Lösung die vor ALLEN bash Befehlen "time ionice -c3" setzt. deb6, .bashrc? Vielen Dank für Eure Hilfe, Manfred
  4. Befehle in neuem Terminal starten

    Befehle in neuem Terminal starten: Hi, Ich würde gerne einen Befehl mit unterschiedlichen Parametern starten (aus einer liste, im Moment in einem File, 1 Parameter pro Zeile)....
  5. Unix Script: Case Anweisung - Mehrere Befehle

    Unix Script: Case Anweisung - Mehrere Befehle: Hallo Zusammen, ich habe folgendes Konstrukt: case $VAR in PARAM1) Batch_cmd="$PFAD_0/../Verarbeitung.sh $PFAD_1"; BATCHPROG="";...