linux - ffmpeg 在被 cron 调用时返回“没有这样的进程”错误
问题描述
我有一个 .sh 脚本每小时从声卡录制
#!/bin/bash
if ps -efa | grep -v grep | grep ffm | grep /home/user/auto-record > /dev/null
then
echo running
exit
else
/usr/bin/ffmpeg -y -f pulse -i alsa_input.pci-0000_00_14.2.analog-stereo -loglevel fatal -f segment -strftime 1 -segment_time 3600 -segment_atclocktime 1 -c:a libmp3lame -b:a 192k /home/user/auto-record/%Y-%m-%d/rec_%H-%M-%>
fi
它检查是否有 ffmpeg 正在运行,如果没有,则开始录制。我每分钟在 crontab 中将其设置为 cronjob
* * * * * /bin/bash /home/user/autoRec.sh
但它返回给我错误
alsa_input.pci-0000_00_14.2.analog-stereo: No such process
如果我只是将它作为/home/user/autoRec.sh运行,它会按预期工作。我错过了什么?
解决了
显然
- 在脚本开头添加这些行中的一个或多个
- 作为根运行它
解决了这个问题
/home/USERNAME/.bashrc
/home/USERNAME/.profile
export PULSE_RUNTIME_PATH="/run/user/$(id -u)/pulse/"
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
解决方案
推荐阅读
- c# - SqlClient.SqlException:从 Fluent API 获取数据时列名 ClassNameId 无效
- python - 如何按名称应用 python 函数?
- python - 如何正确循环和构建 pyspark 数据框
- postgresql - 如果 order by 应用于多个列,则 order by 不在计算列上工作
- elasticsearch - 在 Elasticsearch 的生产部署中将现场数据变为 true 是一种好习惯吗?
- javascript - 为什么 SQL 语句将“缺失”列的值更新为 NULL?
- haskell - 在 Haskell 中创建一个具有 Int 或它们的数组的代数数据类型
- python-3.x - 如何在 Python (Pandas) 中删除 3 行中的重复项
- node.js - 将 PDF 文件存储到 nodejs 文件系统
- laravel - Laravel 和 select2 问题