Как запускать bash-скрипт столько же, сколько длится видео?
Я настроил cron на запуск bash-скрипта в 7 вечера, и я хочу, чтобы он работал столько же, сколько длится видео. Как это сделать?
Пример: в 7 вечера bash-скрипт запускает файл movie.avi, который длится 3 минуты. Bash-скрипт продолжает работать в течение 3 минут, затем выключается.
Если вы хотите, чтобы ваш сценарий bash воспроизводил видео и завершал работу, когда видео заканчивается, вы можете использовать параметр vlc - play-and-exit
следующим образом:
#! /bin/bash
vlc --play-and-exit /path/to/video.mpg
Таким образом, vlc будет автоматически выйти, когда видео остановится в конце.
Не знаю, как вы вызываете программное обеспечение для работы с видео из сценария, но до тех пор, пока программное обеспечение закрывается после завершения фильма, вы можете просто используйте подождите
:
#!/bin/bash
/video/software &
$PID=$!
wait $PID
echo "Movie complete!"
Вы можете использовать wait
.
Из справочной страницы Linux:
wait, waitpid, waitid - ждать, пока процесс изменит состояние
Все эти системные вызовы используются для ожидания изменений состояния в дочернем элементе { {1}} вызывающего процесса и получить информацию о дочернем элементе, состояние которого изменилось. Изменением состояния считается: дочерний термин - nated; ребенка остановил сигнал; или дочерний процесс был возобновлен сигналом . В случае завершенного дочернего элемента выполнение ожидания позволяет системе освободить ресурсы, связанные с дочерним элементом; если ожидание не выполняется, то завершенный дочерний элемент остается в состоянии "зомби".
В качестве примера:
#!/bin/bash
/usr/bin/vlc --vlc_args &
wait
echo "VLC has finished."
poweroff # you said: "then shuts down"