หยุดการวนซ้ำบน Linux


0

ฉันใช้รหัสต่อไปนี้เพื่อวนซ้ำ ffmpeg บนเซิร์ฟเวอร์ Linux ของฉัน

นี่คือสิ่งที่ฉันมี:

#!/bin/bash
while :; do
    ffmpeg -re -i "input" output.mp4
done

สิ่งที่ฉันต้องการทำคือหยุดลูปชั่วคราวเพื่อหยุดลูปจนกว่าฉันจะดำเนินการต่อโดยทำหน้าที่เป็น 'ปิด' และ 'สลับ' สำหรับสตรีมโดยไม่ต้องรีบูตเซิร์ฟเวอร์ในแต่ละครั้ง :)


คุณลอง Ctrl+c ?
Alex

ไม่นั่นจะหยุดลูปจนกว่าฉันจะเรียกใช้ไฟล์. SH อีกครั้ง
WEB X

โอ้วฉันขอโทษคำถามของคุณผิดฉันคิดว่าคุณต้องการหยุด ... แต่คุณต้องหยุด ...
Alex

ใช่ฉันใช้ ctrl + c และต้องรีบูตเซิร์ฟเวอร์ของฉันก่อนที่ลูปจะทำงานอีกครั้งฮ่าฮ่า
WEB X

มองหา SIGSTOP และ SIGCONT
a CVn

คำตอบ:


2

ลองสิ่งนี้:

#!/bin/bash

echo 'Press "s" to pause loop or Ctrl+c to stop'
n=1 
while true; do
    read -r -t 0.5 -n 1 -s stop
    [ -n "${stop}" ] && {
      read -p 'Paused... press Enter button for continue' x
    }

    ffmpeg -re -i "input" output.mp4

    n=$(( n+=1 ))
    echo "Loop Counter: ${n}"
done

ดังนั้นฉันใช้ s เพื่อหยุดแล้ว s เพื่อดำเนินการต่อหรือ s เพื่อหยุดชั่วคราวและ x เพื่อดำเนินการต่อ?
WEB X

1
โอ้ฉันเห็นตอนนี้ใช้ปุ่ม Enter เพื่อดำเนินการต่อ
WEB X

@WEBX แทนที่ ffmpeg -re -i "input" output.mp4 กับ sleep 2; echo 'processing' เพื่อจุดประสงค์ในการทดสอบและแจ้งให้เราทราบว่ามันเหมาะกับคุณหรือไม่
Alex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.