Próbuję uruchomić skrypt powłoki za pomocą polecenia nohup. Skrypt powłoki pobiera tablicę plików, uruchamia program python na każdym pliku w pętli i dołącza dane wyjściowe do pliku. Działa to dobrze na serwerze, ale jeśli spróbuję użyć polecenia nohup, to nie działa. Udało mi się uruchomić inne programy, używając nohup na tym serwerze, po prostu nie ten skrypt.Skrypt powłoki nie działa z nohupem
#!/bin/sh
ARRAY=(0010.dat 0020.dat 0030.dat)
rm batch_results.dat
touch batch0.dat
touch batch_results.dat
for file in ${ARRAY[@]}
do
python fof.py $file > /dev/null
python mdisk5.py > ./batch0.dat
tail -1 batch0.dat
tail -1 batch0.dat >> batch_results.dat
done
Program działa poprawnie, gdy uruchomię go pozostając podłączona do serwera, na przykład
./batch.sh > /dev/null &
./batch.sh > ./output.txt &
Jednak, gdy próbuję uruchomić go za pomocą polecenia nohup,
nohup ./batch.sh > /dev/null &
, jeśli wyjdę z serwera i wrócę, plik wyjściowy (batch_results.dat) nie ma żadnych danych.
Jestem pewna, że brakuje mi tutaj prostej poprawki lub polecenia. Jakieś pomysły?
Edytuj: Program fof.py produkuje dwa pliki, które są używane jako dane wejściowe dla pliku mdisk5.py. Kiedy wychodzę z serwera podczas pracy nohup, te dwa pliki są produkowane, ale tylko dla pierwszego pliku wejściowego "0010.dat". Pliki wyjściowe batch0.dat i batch_results.dat pozostają puste.
wyjąć '>/dev/null' zobaczyć czy drukowane są jakieś przydatne informacje? Ponadto, czy nohup nie umieszcza żadnych danych wyjściowych w pliku "nohup.txt" lub podobnym? Powodzenia. – shellter
Nie mogę znaleźć pliku nohup.txt w katalogu roboczym. Czy to przechodzi do innego domyślnego katalogu? – ricitron
Dokumentacja nohup, którą właśnie wypróbowałem, powiedziała, że jest to albo aktualny katalog, albo $ HOME. spróbuj tego w wierszu poleceń 'man nohup', aby zobaczyć szczegóły dotyczące twojego systemu. Powodzenia. – shellter