我正在尝试让我的脚本工作,它应该在我的 Beaglebone 启动时执行。 如果我在终端中执行命令,一切正常。如果我重新启动 Beaglebone,脚本也能正常工作。但是,如果我关闭电源并再次启动它,除了通过串行接口(interface)的命令外,一切正常。
我的定时任务:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin/:/bin:/usr/sbin:/usr/binusr/bin
@reboot /bin/bash /usr/bin/script.sh
我的脚本:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binusr/bin
export DISPLAY=:0.0
/bin/stty -F /dev/ttyO1 raw
sleep 0.2
/bin/stty -F /dev/ttyO1 38400
sleep 0.2
echo 'ont' > /dev/ttyO1
echo "test"
exit 0
我也尝试过 rc.local 但没有成功
最佳答案
确认您没有使用任何 SELinux 权限。尝试取下“shields down”,意思是“setenforce 0”,再试一次,看看它是否有效。 (然后回到setenforce 1)
如果这样做成功了,在关闭 SELinux 的情况下,您将不得不设计如何通过检查审计日志来绕过某些权限。观察/var/log/audit/* 发生了什么,然后阅读 audit2why 和 audit2allow 以修改特定权限。
关于linux - crontab 脚本不执行串行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32247610/