简体   繁体   中英

Crontab not running a Processing script

I have a python script that I am running from the command line that does three things

1.) Kills all Processing programs currently running

2.) Runs a new Processing program

3.) Shut downs Raspberry Pi

When running this command from the command line, it works flawlessly. Yet, when calling this Python script using crontab, only the 1st and 3rd processes run correctly. What I want to know is why the 2nd command (running a new Processing program) works when I run the Python script from the command line, but not from a crontab?

Here is my Python script

import os # Use operating system
import  subprocess # Use subprocess calls
from time import sleep # Use sleep
from subprocess import call 


os.system('sudo killall java')
sleep(5)
child = subprocess.Popen('sudo processing-java --sketch=/home/pi/Desktop/LaserCannonProcessing/LCshutdown --run', shell=True) # 
sleep(15)
call("sudo poweroff", shell = True)

and here is my crontab

50 20  * * * sudo /usr/bin/python3 /home/pi/Desktop/Shutdown.py

Does anyone know why crontab can not successfully run the command to run a processing program? If so, is there any way I can fix this and make crontab run that line? Thanks

The cron daemon automatically sets several environment variables. The default path is set to PATH=/usr/bin:/bin.

So if the processing-java command is not present in the cron specified path, you should either use the absolute path to the command or change the cron $PATH variable.

Using shell=True is masking the problem... Eg

In [7]: child = subprocess.Popen('bla', shell=True)
/bin/sh: bla: command not found
In [8]: child
Out[8]: <subprocess.Popen at 0x107ac8c50>

You can add some debugging to your script to find out the real issue:

  • try-except around the subprocess call and shell=True
  • print the os.environ["PATH"]
  • check permissions on files (if your process needs to read/write to files)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM