백그라운드 프로세스 제어

백그라운드 프로세스 제어

저는 셸에서 백그라운드 작업으로 오디오 파일(mp3, m4a) 재생을 시작한 다음 나중에 일시 중지/빨리 감기와 같은 작업을 수행할 수 있는 방법을 찾고 있습니다.

내장된 명령줄 옵션을 사용할 수 있습니까?

$ play audio.mp3 &
$ play --pause

아니면 플레이어의 프로세스 ID로?

$ play audio.mp3 & echo $! > pid
$ control_process $(cat pid) --signal pause

(예는 단지 설명을 위한 것입니다.)

답변1

VLC 플레이어를 사용할 수 있는 옵션이 있는 경우 dbus 호출을 사용하여 원격 애플리케이션(GUI) 또는 CLI를 통해 실행 중인 VLC 프로세스를 제어할 수 있습니다.

예를 들어, qdbus가 설치되어 있다고 가정하고 현재 재생 중인 음악의 재생/일시 중지를 전환하려면 다음을 수행하세요.

$ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause

또는 재생목록의 다음 노래로 이동합니다.

$ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next

사용 가능한 모든 명령을 봅니다.

$ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2

이 스레드도 참조하세요.https://stackoverflow.com/questions/14256193/linux-control-a-running-vlc-process-through-command-line

답변2

보편적인 해결책은 없지만 최소한 2명의 플레이어가 이를 수행할 수 있습니다.

첫 번째 mplayernamed pipes.

먼저 /tmp/mplayer.fifo명명된 파이프를 만듭니다.

$ mkfifo /tmp/mplayer.fifo

시작 mplayer하고 다음을 가리킵니다 /tmp/mplayer.fifo.

$ mplayer -novideo -idle -slave -input file=/tmp/mplayer.fifo file.mp3 </dev/null >/dev/null 2>&1 &

이제 다음을 작성하여 재생을 일시 중지하고 다시 시작할 수 있습니다 /tmp/mplayer.fifo.

$ echo pause > /tmp/mplayer.fifo

그러면 재생이 pause재개됩니다.

$ echo pause > /tmp/mplayer.fifo

빨리 감기와 같은 다른 작업을 수행할 수도 있습니다.

$ echo seek +60" > /tmp/mplayer.fifo

또는 재생을 되감기합니다.

$ echo "seek -60" > /tmp/mplayer.fifo

두 번째는 입니다 mocp. 재생 시작:

$ mocp -S; mocp -p file.mp3

재생 일시 중지/재개:

$ mocp --toggle-pause

답변3

당신은 알고 싶을 수도 있습니다MPD, 원하는 거의 모든 작업(원격 제어, 새 트랙 추가 등)을 수행할 수 있습니다. 셸에서 백그라운드 프로세스로 실행되는 대신 시스템 서비스로 실행됩니다. 즉, 여러 세션과 로그인에서 쉽게 사용할 수 있습니다. 다른 시스템에서 원격으로 제어할 수도 있습니다(네트워크로 제어되는 주크박스 유형 장치에 널리 사용됩니다).

또한 콘솔에서 사용할 수 있는 프런트 엔드를 포함하여 여러 가지 멋진 프런트 엔드도 있습니다.

답변4

이 컨트롤의 구현은 일반적으로 프로그램 자체 내에서 발생하지만 이러한 인터페이스를 구현하는 매우 일반적인 방법은 다음과 같습니다.명명된 파이프. 동일한 호스트에 있고 네트워크 제어를 위해 열려 있는 소켓이 없는 한. 명명된 파이프를 사용하고 필요한 명령을 실행하고 프로세스를 종료하는 등의 프로그램을 직접 만들 수 있습니다. 명명된 파이프가 작동하는 모습을 보려면 CLI 플레이어를 설치하는 것이 좋습니다.판도라;피아노 바. 귀하의 예에 표시된 것처럼 명령을 수락하는 데 사용됩니다.

관련 정보