首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相同的命令在shell中工作,但在crontab中不起作用。

相同的命令在shell中工作,但在crontab中不起作用。
EN

Unix & Linux用户
提问于 2020-05-11 23:12:25
回答 1查看 188关注 0票数 0

我有一个简单的命令

代码语言:javascript
复制
play -V4 /folder/file.ogg

在命令行上,它工作得很好。

关于crontab

代码语言:javascript
复制
* * * * * klaus  play -V4 /folder/file.ogg

它会被触发(我可以在syslog中看到它),但我听不见它。

代码语言:javascript
复制
CRON[4827]: (klaus) CMD (play -V4 /folder/file.ogg)

更新

crontab提供了以下调试输出

代码语言:javascript
复制
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

有效的命令行给了我

代码语言:javascript
复制
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

所以问题是这个播放命令来自sox包,它在命令上使用脉冲音频,在crontab上使用alsa .

男人的索克斯没有说明如何指定司机,有什么提示吗?

EN

回答 1

Unix & Linux用户

发布于 2020-05-11 23:53:45

播放机必须缺少初始化PulseAudio所需的一个或多个环境变量。很有可能,XDG_RUNTIME_DIR。

尝试将整个环境导出到一个文件((env; echo 'play -V4 /folder/file.ogg') >script.sh)中,并使用sh -a /path/to/script.sh从cron运行它。如果这样做有效,请查看可以删除哪些环境变量。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/586026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档