You can help yourself by collecting any error messages that are generated when
cron runs your scripts. As you're aware, your shell will send error messages to the
stderr stream when they occur. When you run the program from your terminal screen, this
stderr stream goes to your terminal, and you see it. However, your
cron job does NOT run under your userid, and its
stderr stream does NOT go to the screen.
Fortunately, Linux allows us to "redirect" the
stderr stream, and we can redirect it to a file on our system. Doing this is very simple, but the command itself will seem arcane until you study it for a bit. You can redirect the error messages from your
cron jobs by changing your
crontab file as follows:
@reboot /home/pi/launchjuvia.sh >> /home/pi/cronjoblog 2>&1
@reboot /home/pi/launchfuta.sh >> /home/pi/cronjoblog 2>&1
After reboot, you can inspect the file
/home/pi/cronjoblog, and read any error messages. If you have trouble deciphering the error messages, feel free to post them here & we'll try to help.
A coupla' other notes:
- I don't think you need to call out
bash in your
- I don't understand what you're doing with the first line in your
crontab. If you're trying to schedule a
reboot recall that
sudo is normally required (i.e.
sudo reboot instead of
reboot). In any case, I'd recommend you resolve the errors in your script first, then tackle your scheduled reboots once you have that sorted.
- @Ingo's answer also has merit.
systemd is technically superior to
cron in some respects - an important one being that it has knowledge of resource availability during the boot process. However,
cron is (IMHO) simpler, and inserting a
sleep command in your
crontab will usually resolve resource availability issues. For example:
@reboot /bin/sleep 10; /home/pi/launchjuvia.sh >> /home/pi/cronjoblog 2>&1
This will postpone execution of your shell script for 10 seconds after
cron starts, and by then the resources needed for successful execution may be available. You may need to experiment a bit to find the "best" value for sleep time.