Autorun Python Script can't write files

16 views
Skip to first unread message

stl...@gmail.com

unread,
Apr 16, 2021, 12:01:34 PM4/16/21
to BeagleBoard
I want my autorun python script to write information into a text file.  This works fine when the python file is run from the Cloud9 interface, but does not run properly when the beagleboard restarted.  

The command that is failing is:

with open("/home/debian/logs/testlog.txt",'a',encoding = 'utf-8') as f:
   f.write("bbb autorun test\n")

I am running Buster IoT Image 2020-04-06 on a beagle board black.

I have tried using chmod 666, chmod 755 etc, on the target file and enclosing directory with no success.

I see a number of older threads about using chron, but these don't seem applicable in light of having autorun.

Any idea what is preventing this script from writing to a file when it is autorun?  Is this a permissions issue and how would I change that?

Here's the whole file if it helps.  Again, this runs in its entirety from Cloud9.  When it is in the autostart folder and the BBB is restarted, it goes no further than turning on relay3.

Thanks in advance,
-Steve Lentz

#!/usr/bin/python3
#//////////////////////////////////////
#
#   autorun test
#
#//////////////////////////////////////
#
import Adafruit_BBIO.GPIO as GPIO
import time

relay3 = "P9_30"
relay4 = "P9_27"
GPIO.setup(relay3, GPIO.OUT)
GPIO.setup(relay4, GPIO.OUT)

GPIO.output(relay3, GPIO.HIGH)

with open("/home/debian/logs/testlog.txt",'a',encoding = 'utf-8') as f:
   f.write("bbb autorun test\n")

GPIO.output(relay4, GPIO.HIGH)
time.sleep(30)
GPIO.output(relay4, GPIO.LOW)
time.sleep(1)
GPIO.output(relay3, GPIO.LOW)

exit()

Dennis Lee Bieber

unread,
Apr 16, 2021, 3:28:47 PM4/16/21
to Beagleboard
On Fri, 16 Apr 2021 09:01:33 -0700 (PDT), in
gmane.comp.hardware.beagleboard.user
"stl...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org"
<stlentz-Re5JQEe...@public.gmane.org> wrote:

>I want my autorun python script to write information into a text file.
> This works fine when the python file is run from the Cloud9 interface, but
>does not run properly when the beagleboard restarted.
>
>The command that is failing is:
>
>with open("/home/debian/logs/testlog.txt",'a',encoding = 'utf-8') as f:
> f.write("bbb autorun test\n")
>
>I am running Buster IoT Image 2020-04-06 on a beagle board black.
>
>I have tried using chmod 666, chmod 755 etc, on the target file and
>enclosing directory with no success.
>
>I see a number of older threads about using chron, but these don't seem
>applicable in light of having autorun.
>
>Any idea what is preventing this script from writing to a file when it is
>autorun? Is this a permissions issue and how would I change that?

I have no idea what systemd does when starting Cloud9 and processing
its "autorun" directory...

Personally, I would move your file /out of/ Cloud9 into some location
in your home directory...

{in Cloud9}
debian@beaglebone:/var/lib/cloud9$ mv autorun/autotest.py ~

... and then add it to that user's crontab...

{rest is all via SSH using PuTTY}
debian@beaglebone:~$ crontab -e
no crontab for debian - using an empty one

Select an editor. To change later, run 'select-editor'.
1. /usr/bin/vim.nox
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
5. /bin/nano-tiny

Choose 1-5 [2]: 3
crontab: installing new crontab

{the vim session is not shown}

Locating the actual crontab file...

debian@beaglebone:~$ sudo cat /var/spool/cron/crontabs/debian
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.Wesos5/crontab installed on Fri Apr 16 15:00:39 2021)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
@reboot sleep 30 && /home/debian/autotest.py
>/home/debian/logs/unexpected.log 2>&1

debian@beaglebone:~$
Note: the crontab operation wrapped, the redirection is part of the
@reboot line.

I found I had to put in the 30 second delay to allow the system time to
set up the GPIOs, without the job failed on

GPIO.setup(relay3, GPIO.OUT)

with a missing file or permission error.

I ended on 30 seconds as that is where dmesg had a major break...

[ 25.949286] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
[ 26.184613] IPv6: ADDRCONF(NETDEV_UP): usb1: link is not ready
[ 66.991145] remoteproc remoteproc0: wkup_m3 is available
[ 67.376203] remoteproc remoteproc0: powering up wkup_m3



--
Dennis L Bieber

Steve Lentz

unread,
Apr 16, 2021, 10:18:06 PM4/16/21
to beagl...@googlegroups.com
Dennis:

Thanks for this, I had to increase the hold off to 60 seconds but that’s fine for my purposes.  

I discovered that sudo systemctl status cron gives good output for debugging.

While troubleshooting, I made my script executable with chmod 777 autotest.py although I’m not certain this was necessary.

-Steve



On Apr 16, 2021, at 3:28 PM, Dennis Lee Bieber <dennis....@gmail.com> wrote:

On Fri, 16 Apr 2021 09:01:33 -0700 (PDT), in
gmane.comp.hardware.beagleboard.user
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/k4mj7g99ck3j9l01upctmbtuj500b3afoh%404ax.com.

Reply all
Reply to author
Forward
0 new messages