Read the statement by Michael Teeuw here.
Starting MM Crontab
-
Hi.
I have been using crontab to start my MM for ages and it has always worked well. After updating it no longer seems to work. cron calls a script that has the following.
cd ~/MagicMirror DISPLAY=0 npm start
Now, I have seen that it is suggest to use
node --run start:X11
going forward and I have updated my start script with same but that does not seem to work either.So my
mm.sh
now looks like,cd ~/MagicMirror DISPLAY=0 node --run start:X11
But as mentioned, this does not work.
Any ideas?
-
@mumblebaj said in Starting MM Crontab:
DISPLAY=0 node --run start:X11
It should be
start:x11
and notstart:X11
.Are you still using X11?
Does it run when you start it manually?
Can you provide the logs from the startup?
-
@KristjanESPERANTO Sorry, typo, it is lower
x
. It start when I manually runnpm start
. When I manually runnode --run start:x11
it works fine. When I manually run the script./mm.sh
it works fine. When calling it from the cron nothing. In my log I see the commandnode --run start:x11
but MM does not launch. -
@mumblebaj is the cron jon in the user crontab (contrab -e) ? or root (sudo crontab -e) ?
if root, the pm2 job doesn’t exist there, it opnly exists under user who created the pm2 job
-
@sdetweil in my user,
crontab -e
. It worked just fine until I updated my mirror this morning. I don’t use pm2 on my installation for my own reasons… 😉 -
@mumblebaj said in Starting MM Crontab:
It worked just fine until I updated my mirror this morning.
only MM update?
note that we changed the startup strings.
“start”: “node --run start:x11”,
-
@sdetweil Yep, only MM update. Let me try
start: node --run start:x11
and see what happens. -
@mumblebaj Just an idea: Maybe the node version used in Cron could be to old. When you run a script manually in your terminal, your full user environment (including things like .bashrc or .zshrc) is loaded. Cron runs in a much more minimal environment — it often doesn’t load your shell config files, so tools like nvm (Node Version Manager) might not be available.
How to fix it:
- Use the full path to Node: Find it with
which node
and use that path in your cron job. - Set the environment manually in cron: You can define your PATH at the top of the cron file.
- Source nvm in your script: If you use nvm, add source
~/.nvm/nvm.sh
andnvm use <version>
before calling node.
- Use the full path to Node: Find it with
-
@KristjanESPERANTO Thanks Kristjan. But I don’t see how updating MM could cause this. I only updated MM with Sam’s upgrade script. Don’t see how that has changed anything with regards to how Crontab works. Maybe it is related to changing the launch to
node --run start
. I can see the command being fired in the log but it does not launch MM like it did before the upgrade.Anyhow, I manually launch it for now till I find a suitable solution.
-
@mumblebaj did you use npm start before?
it ‘may’ be the path as @KristjanESPERANTO mentioned
so from the user command line do
which node
and use that result in the cron command