当我通过 SSH 连接到一台机器并运行btmgmt find
它时,它在产生输出的意义上“有效”。
但是,当我通过运行此命令时
- 一个 cron 作业,或者
- 我从 cron 作业中分离的脚本,或者
- 我正在执行并与 SSH 会话分离的脚本
它不会产生任何输出,甚至不会产生错误消息。
知道为什么吗?
答案1
这似乎与一个已知的错误有关(https://www.spinics.net/lists/linux-bluetooth/msg85222.html)btmgmt
如果没有交互式标准输入存在/断开连接,它就会默默地失败。一个简单的解决方法是:
yes | btmgmt
答案2
假设您使用某些 Linux 发行版,您在使用 cron 作业或脚本时是否将输出重定向到文件?默认情况下,cron 将输出通过电子邮件发送给拥有 cron 作业的用户。
请参见https://www.man7.org/linux/man-pages/man8/cron.8.html
Cron 检查所有存储的 crontab 并检查每个作业以查看它是否需要在当前分钟运行。执行命令时,任何输出都会邮寄给 crontab 的所有者(或者发送给 crontab 中 MAILTO 环境变量中指定的用户,如果存在的话)。还可以使用 -s 选项将任何作业输出发送到 syslog。
此外,如果您在后台运行脚本,则需要将标准输出重定向到一个文件,以便您检查输出。对于前。
/my/home/script.sh >> output.txt 2>&1
- 这会将输出和错误消息重定向到 /my/home 下的 output.txt 文件