0

I am using CentOs 7.5.1804 and have a problem with a service. When i start my service with systemctl it fails with the message

which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
Java not found!

Following the error message i did a which java

and it returns

which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
Java not found!

But when i log in to the system as the user app i get a feedback from java java -version

java version "1.8.0_161" 
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

Here is a snip of my service located in /etc/systemd/system

[Service]
Type=forking
User=app
Group=app
ExecStart=/opt/div/ui/bin/service.sh -s start -t myserver
ExecStop=/opt/div/ui/bin/service.sh -s stop -t myserver
SuccessExitStatus=143
TimeoutStartSec=0
TimeoutStopSec=240
#install
[Install]
WantedBy=multi-user.target

What do i miss? Any suggestions ?

Mchoeti
  • 226
  • 3
  • 5
  • what do you get, if you log in as user **app** and run a `which java`? I think if you run `java -version` with the same user, that has an error with `which java`, you won't get a correct version feedback – chloesoe Aug 23 '18 at 20:39
  • When i use which java i get the reply:/opt/jdk/current/bin/java When i use java -version the reply is: java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode – Mchoeti Aug 24 '18 at 09:12

1 Answers1

2

Systemd uses a fixed search path and strongly encourages using full paths for executables.

From the systemd.exec man page:

Systemd uses a fixed value of
       /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin.

Best solution is to use the full path to the java executable in your service.sh script.

virullius
  • 1,048
  • 1
  • 9
  • 23