Bash läuft nacheinander von Cronjob

3
#!/bin/bash
# My first script
sleep 15 & wait
python pythonFileName.py & wait
python pythonFileName.py & wait
python pythonFileName.py & wait

Wie kann ich darauf warten, dass die vorherige Zeile ausgeführt wird, bevor ich zur nächsten übergehe?

Es funktioniert einwandfrei, wenn Sie die Bash-Datei direkt aufrufen, aber wenn Sie von aufgerufen werden Cron-Job Es führt alles aus, ohne auf das Ende des vorherigen zu warten.

FlyingAtom
quelle
Ich verstehe nicht, was Sie meinen. Entfernen Sie einfach "& amp; warten", um nacheinander einen Job zu haben.
Archemar

Antworten:

2

Dies funktioniert nur in einer nach der anderen, alle folgenden sind gleich:

#!/bin/bash
# My first script
sleep 15 & wait
python pythonFileName.py & wait
python pythonFileName.py & wait
python pythonFileName.py & wait


#!/bin/bash
# My first script
sleep 15 
python pythonFileName.py 
python pythonFileName.py 
python pythonFileName.py 

<Command> & wait Sie werden damit nichts Besonderes erreichen

&Ampere; Der Vorgang wird im Hintergrund ausgeführt

warten Übergeordneter Prozess wartet, bis sich der Status des untergeordneten Prozesses ändert

UID       PID   PPID
root     28065 28064  0 12:48 ?        00:00:00 /bin/sh -c /bin/bash /home/8zero2/Desktop/b.sh 
root     28067 28065  0 12:48 ?        00:00:00 /bin/bash /home/8zero2/Desktop/b.sh
root     28074 28067  0 12:48 ?        00:00:00 sleep 15


root     28065 28064  0 12:48 ?        00:00:00 /bin/sh -c /bin/bash /home/8zero2/Desktop/b.sh 
root     28067 28065  0 12:48 ?        00:00:00 /bin/bash /home/8zero2/Desktop/b.sh
root     28075 28067  0 12:48 ?        00:00:00 python pythonFileName.py


root     28065 28064  0 12:48 ?        00:00:00 /bin/sh -c /bin/bash /home/8zero2/Desktop/b.sh 
root     28067 28065  0 12:48 ?        00:00:00 /bin/bash /home/8zero2/Desktop/b.sh
root     28077 28067  0 12:48 ?        00:00:00 python pythonFileName.py


root     28065 28064  0 12:48 ?        00:00:00 /bin/sh -c /bin/bash /home/8zero2/Desktop/b.sh 
root     28067 28065  0 12:48 ?        00:00:00 /bin/bash /home/8zero2/Desktop/b.sh
root     28074 28067  0 12:48 ?        00:00:00 python pythonFileName.py

Wenn Sie die Spalten ppid und pid miteinander verknüpfen, werden Sie nur in beiden Fällen eine sequenzielle Ausführung bemerken

8zero2.ops
quelle
Ist also die Lösung zu entfernen & amp; warten? Gibt es überhaupt Fehler zu erkennen? Die Python-Datei wird immer noch nicht ausgeführt. Wie wird dieser Prozess angezeigt?
FlyingAtom
nein, es funktioniert mit & amp; Warten Sie auch, ich will nur sagen, es ist heiß, etwas Besonderes zum Code hinzuzufügen
8zero2.ops
Falls es nicht funktioniert, teilen Sie mir bitte den Pfad Ihres Python-Skripts und Ihres Bash-Skripts mit
8zero2.ops