0

I just started to learn about systemctl, I tried to create a service file that will run a nodejs script but it fails to run and the error doesn't really tell me why.

Here are the steps I've taken:

1) Navigated to /lib/systemd/system and created a file using the following command:

sudo nano /lib/systemd/system/hello_env.service

2) Created the following service file:

[Unit]
Description=
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /home/dev/index.js
Restart=always

[Install]
WantedBy=multi.user.target

3) typed sudo systemctl daemon-reload

4) Started the process:

sudo systemctl start hello_env

5) Checked status:

sudo systemctl status hello_env

And got the following error:

> hello_env.service   Loaded: loaded
> (/lib/systemd/system/hello_env.service; disabled; vendor pres   
> Active: failed (Result: exit-code) since Wed 2020-01-29 16:00:37 IST;
> 2s ago   Process: 25605 ExecStart=/usr/bin/node
> /home/dev/index.j  Main PID: 25605 (code=exited,
> status=1/FAILURE)
> 
> Jan 29 16:00:37 sf-env systemd[1]: hello_env.service: Main process
> exited, code Jan 29 16:00:37 sf-env systemd[1]: hello_env.service:
> Failed with result 'exit- Jan 29 16:00:37 sf-env systemd[1]:
> hello_env.service: Service hold-off time ove Jan 29 16:00:37 sf-env
> systemd[1]: hello_env.service: Scheduled restart job, re Jan 29
> 16:00:37 sf-env systemd[1]: Stopped index.js - starting the bot. Jan
> 29 16:00:37 sf-env systemd[1]: hello_env.service: Start request
> repeated to Jan 29 16:00:37 sf-env systemd[1]: hello_env.service:
> Failed with result 'exit- Jan 29 16:00:37 sf-env systemd[1]: Failed to
> start index.js.

Please note that If I navigate to /home/dev/index.js and run the script with node index.js it works just fine - please advise what I'm missing

Dante
  • 133
  • Try to replace type=simple with type=forking. – Panki Jan 29 '20 at 14:53
  • doesn't work, getting error "Job for hello_env.service failed because the control process exited with error code" – Dante Jan 29 '20 at 14:59
  • Did you run systemctl daemon-reload afterwards? Does your script exit with a 0 if it works? – Panki Jan 29 '20 at 15:00
  • Yes I have, it didn't let me run systemctl start without it – Dante Jan 29 '20 at 15:01
  • As is so often the case, the log output that tells you what is going on is the part that comes before "Main process exited", that you haven't looked at or put into the question for other people to look at. And you've truncated the log lines that you did retrieve. – JdeBP Feb 02 '20 at 12:44

1 Answers1

0

I managed to resolve it by echoing this line ExecStart=/usr/bin/node /home/dev/index.js, I then saw there was an error in the script.

So for future reference, debug the ExecStart to see that it actually works.

Dante
  • 133