Вы также можете попытаться использовать «ожидать» для автоматизации выполнения и остановки программы.Вам придется запустить его, используя какую-нибудь виртуальную оболочку, например screen
, tmux
или byobu
, а затем запустить ffmpeg
внутри нее.Таким образом, вы сможете снова получить экран виртуальной оболочки и задать опцию «q».
Локально или удаленно запустить сеанс виртуальной оболочки, скажем, с помощью «экрана».Назовите сессию с параметром -S
, например screen -S recvideo
. Затем вы можете запустить ffmpeg, как вам нравится.При желании вы можете отсоединиться от этого сеанса с помощью Ctrl + a + d.
Подключиться к машине, на которой запущен ffmpeg внутри экрана (или tmux или что-то еще), и повторно подключиться кit: screen -d -RR recvideo
, а затем отправьте «q»
Чтобы сделать это изнутри скрипта, вы можете использовать ожидаемое, например:
prompt="> "
expect << EOF
set timeout 20
spawn screen -S recvideo
expect "$prompt"
send -- "ffmpeg xxxxx\r"
set timeout 1
expect eof
EOF
Затем,в другой момент или в точке сценария или в другом сценарии вы восстанавливаете его:
expect << EOF
set timeout 30
spawn screen -d -RR recvideo
expect "$prompt"
send -- "q"
expect "$prompt"
send -- "exit\r"
expect eof
EOF
Вы также можете автоматизировать весь сеанс ssh
с ожидаемым, передавая последовательность команд и «ожидая» делать то, что вы хотите.