W swoim skrypcie dzielę zestaw danych na input_aa, input_ab itp. Następnie uruchamiam każdy z nich za pomocą tego samego skryptu Python:
# Execute program on each split file
for part in input_*; do
python3 $part &
done
wait
Moje pytanie jest dwojakie: w jaki sposób mogę wykryć, że proces Pythona nie powiódł się, a po wykryciu, jak zabić wszystkie odrodzone dzieci i wyjść ze skryptu z błędem?
bash
,dash
,yash
,mksh
,zsh
. Zasadniczo każda powłoka POSIX oprócz AT&T ksh.set -m
jest (niedostatecznie) określony w POSIX, ale jako funkcja opcjonalna.kill 0
zabija wszystkich członków grupy procesowej, niezależnie od tego, kto jest ich rodzicem. Zobacz,ps -j
aby zobaczyć identyfikatory grup procesów.To jest przykład. GRAJ z tym pierwszym, aby uzyskać dokładnie to, czego potrzebujesz. Nie może złamać tak jak jest.
Jest to ustawione na celowe niepowodzenie, ponieważ
ls oinkle
zawiedzie (na moim komputerze).Kiedy dostaniesz to, czego potrzebujesz po majstrowaniu przy skrypcie startowym --- Zmień:
do:
zmiana:
do:
Przekierowania służą do zapisywania dzienników. Możesz ich nie chcieć.
źródło
killfile
może nie zawierać wszystkich pidów uruchomionych zadań.[ $? -ne 0 ]
...