My systemd service is as follows.
[Unit] Description=@CPACK_PACKAGE_DESCRIPTION_SUMMARY@ Before=network-pre.target Wants=network-pre.target DefaultDependencies=no Requires=local-fs.target After=local-fs.target [Service] Type=oneshot ExecStart=/home/pi/test2.sh RemainAfterExit=yes [Install] WantedBy=network.target
#!/bin/sh echo Hi this working........ > output
It is made executable by
sudo chmod 777 /home/pi/test2.sh.
I have started the systemd service using
sudo systemctl start caportal. It runs successfully.
sudo systemctl status caportal
caportal.service - @CPACK_PACKAGE_DESCRIPTION_SUMMARY@ Loaded: loaded (/etc/systemd/system/caportal.service; enabled) Active: active (exited) since Wed 2019-04-10 07:01:15 UTC; 1h 3min ago Process: 286 ExecStart=/home/pi/test2.sh (code=exited, status=0/SUCCESS) Main PID: 286 (code=exited, status=0/SUCCESS) CGroup: /system.slice/caportal.service Apr 10 07:01:15 raspberrypi systemd: Started @CPACK_PACKAGE_DESCRIPTION_SUMMARY@.
Its showing that the service is working fine but the file
output is not written with "Hi this working........ ".
But when we run
test2.sh using command `sudo /home/pi/test2.sh', its working fine.
Why the script is not working when used with systemd service?
Your script is writing to a relative path called
output. A relative path does not begin with
/; an absolute path begins with
The path is relative to the current working directory. Since you did not define
WorkingDirectory= and you're running the service as a system service, it defaults to the root directory
/. You should be able to find the file at
/output (Current working directory
/ plus the relative path
If you are expecting the file to be written at a particular path, you should either specify an absolute path in your script or a
External links referenced by this document: