В конвейере, все процессы запускаются одновременно, нет того, который является ранее, чем другие.
Вы могли сделать:
(echo "$BASHPID" > pid-file; exec inotifywait -m ...) | while IFS= read -r...
Или портативно:
sh -c 'echo "$$" > pid-file; exec inotifywait -m ...' | while IFS= read -r...
Также обратите внимание на это, когда подоболочка, которая работает while
цикл завершается, inotifywait
был бы уничтожен автоматически в следующий раз, когда это пишет что-то в stdout.
, кажется, я получил эту проблему, поскольку данные на STDOUT были зафиксированы. Согласно это пост, я только что изменил свою работу Cron на
31 10 * * 1-5 cd /home/alpha/IBpy && stdbuf -i0 -o0 -e0 python ShortData.py >> /home/alpha/logs/Shortdata.op 2>> /home/alpha/logs/Shortdata.er
, и теперь все работает нормально.
Ваш синтаксис должен работать в (BA) Sh
. Проверьте документацию оболочки по умолчанию в вашей системе для правильного синтаксиса. Обратите внимание, что разные оболочки имеют разную поддержку для перенаправления. Например, в CSH
вы не можете перенаправить STDERR
на STDOUT
.
Если это не так, я скажу, что это ошибка в сам сценарий Python. Если вы проверяете время / дату внутри ваших сценариев Python, убедитесь, что вы получите правильный формат времени.