2015-08-27 1 views
2

J'essaie de faire fonctionner mon script, qui devrait être exécuté quand mon Beaglebone démarre. Si j'exécute la commande dans le terminal, tout fonctionne correctement. Si je redémarre le Beaglebone le script fonctionne bien aussi. Mais si je déconnecte et redémarre tout fonctionne à l'exception des commandes via l'interface série.Le script crontab n'exécute pas les commandes série

Mon crontab:

SHELL=/bin/bash 
PATH=/usr/local/sbin:/usr/local/bin/:/bin:/usr/sbin:/usr/binusr/bin 
@reboot /bin/bash /usr/bin/script.sh 

Mon script:

#!/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 

J'ai aussi essayé rc.local mais sans succès

+0

Est-ce que ça marche si vous dormez plus longtemps? – Barmar

+0

no. Si essayé jusqu'à 5 s de sommeil – Dan

+0

sans doute sans rapport, mais pourquoi vous «exporter DISPLAY»? Savez-vous que 'cron' et' rc.local' fonctionneront sans serveur X? –

Répondre

0

Assurez-vous que vous n'êtes pas frapper toutes les autorisations SELinux. Essayez de prendre "shields down", signifiant "setenforce 0", réessayez, et voyez si cela fonctionne. (puis de nouveau à setenforce 1)

Si cela a fonctionné, avec SELinux désactivé, vous devrez déterminer comment contourner certaines autorisations en examinant le journal d'audit. Regardez ce qui arrive à/var/log/audit/*, puis lisez sur audit2why et audit2allow pour modifier les autorisations spécifiques.

+0

Est-ce que SELinux est installé par défaut? Parce que je ne peux rien trouver. Aussi, pourquoi ça marche si je redémarre le Beaglebone? Ne bloque pas le script aussi, si la permission est le problème – Dan

+0

Oui, les distributions modernes les installent par défaut. Cela vaut la peine d'essayer. Notez que vous ne pouvez effectuer ces instructions que si vous avez un accès root. Cela pourrait faire la différence que vous ne pouvez pas le voir, vous n'êtes pas root quand vous regardez ou mettez en place – macetw

0
/bin/stty -F /dev/ttyO1 -echo 

Résout le problème.