간단한 명령이 있어요
play -V4 /folder/file.ogg
명령줄에서는 완벽하게 작동합니다.
크론탭에서
* * * * * klaus play -V4 /folder/file.ogg
트리거되지만(시스템 로그에서 볼 수 있음) 들을 수 없습니다.
CRON[4827]: (klaus) CMD (play -V4 /folder/file.ogg)
고쳐 쓰다
crontab은 다음 디버그 출력을 제공했습니다.
play DBUG alsa: select_format: trying #2
play DBUG alsa: selecting format 2: S16_LE (Signed 16 bit Little Endian)
play INFO formats: can't set sample rate 44100; using 48000
Output File : 'default' (alsa)
Channels : 2
Sample Rate : 48000
Precision : 16-bit
Duration : 00:00:02.21 = 105984 samples ~ 165.6 CDDA sectors
Sample Encoding: 16-bit Signed Integer PCM
Endian Type : little
Reverse Nibbles: no
Reverse Bits : no
유효한 명령줄은 나에게
Output File : 'default' (pulseaudio)
Channels : 2
Sample Rate : 44100
Precision : 32-bit
Duration : 00:00:02.40 = 105984 samples = 180.245 CDDA sectors
Sample Encoding: 32-bit Signed Integer PCM
Endian Type : little
Reverse Nibbles: no
Reverse Bits : no
따라서 문제는 명령에 pulseaudio를 사용하고 crontab에 alsa를 사용하는 sox 패키지의 재생 명령입니다.
Man of Sox가 DRIVER를 지정하는 방법을 보여주지 않습니다. 어떤 팁이 있나요?
답변1
플레이어에는 PulseAudio를 초기화하는 데 필요한 하나 이상의 환경 변수가 누락되어 있어야 합니다. 아마도 XDG_RUNTIME_DIR일 것입니다.
전체 환경을 파일( (env; echo 'play -V4 /folder/file.ogg') >script.sh
)로 내보내고 cron 을 사용하여 cron에서 실행해 보세요 sh -a /path/to/script.sh
. 작동한다면 어떤 환경 변수를 제거할 수 있는지 확인하세요.