同じコマンドがシェルでは機能しますが、crontabでは機能しません。

同じコマンドがシェルでは機能しますが、crontabでは機能しません。

簡単なコマンドがあります。

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を初期化するために必要な1つ以上の環境変数がありません。それはおそらくXDG_RUNTIME_DIRでしょう。

環境全体をファイル((env; echo 'play -V4 /folder/file.ogg') >script.sh)にエクスポートし、cronを使用してcronで実行しますsh -a /path/to/script.sh。機能する場合は、どの環境変数を削除できるかを確認してください。

関連情報