Как я могу сказать, когда процесс закончил писать в файл?

выполните это, прежде чем добавят дисциплину очереди при связывании интерфейса (bond0 в этом случае)

ipconfig bond0 txqueuelen 1000

это не работает, потому что виртуальное устройство программного обеспечения как связывание интерфейса не имеет никакой очереди по умолчанию.

9
25.09.2014, 20:26
2 ответа

Для этого можно использовать встроенную оболочку wait .

Встроенная функция wait просто заставляет оболочку приостанавливать ожидание завершения фоновых заданий. Вы можете либо передать ему конкретное задание для ожидания, либо дождаться всех заданий.

Например:

echo $(date): starting
sleep 5 &
echo $(date): do something else
wait
echo $(date): background job finished

Результат:

Thu Sep 25 12:06:48 EDT 2014: starting
Thu Sep 25 12:06:48 EDT 2014: do something else
Thu Sep 25 12:06:53 EDT 2014: background job finished
7
27.01.2020, 20:06

В Linux файл не блокируется, даже когда в него записывается программа (в отличие от windows).

Для проверки завершения процесса используйте:

while [[ 1 ]]; do
  pgrep dbprocess &>/dev/null

  if [[ $? -eq 0 ]]; then
    echo still running
  else
    echo finished
    # start ftp transfer
  fi
  sleep 2
done

Чтобы проверить, открыт ли процесс, используйте

  • lsof , он перечислит процессы, которые открыли

  • ls -l /proc/$(pgrep db-process)/fd перечислит дескрипторы файлов, открытые процессом db-process

7
27.01.2020, 20:06

Теги

Похожие вопросы