Service is not starting on Centos on boot
Solution 1
I don't see a # chkconfig: - 30 60
line in your start-up script mandating the order number in the startup sequence (30) or shutdown (60) sequence.
What symlinks are being set up in /etc/rc[0-6].d/
for your service?
IIRC when none is defined prio 50 is used. That could result in trying to start your service before other dependancies have been started.
Solution 2
A stock CentOS installation will typically have Defaults requiretty
set in /etc/sudoers
. This will cause sudo -u $user $command
to fail inside an init script on startup, as the script isn't necessarily running in a "complete" tty.
Usefully, CentOS provides a common init functions file (/etc/rc.d/init.d/functions
) that contains the daemon
function - a wrapper for running programs with different options (e.g., user, nice, pid files, etc.).
Try modifying your script as follows:
# Source function library.
. /etc/rc.d/init.d/functions
...
start)
if [ -f $JASPER_HOME/ctlscript.sh ]; then
echo "Starting JasperServer"
daemon --user $JASPER_USER $JASPER_HOME/ctlscript.sh start
fi
;;
This will use runuser -s /bin/bash $user
to create a shell with the correct permissions in order to run the command, neatly avoiding any environment-meddling or security issues with su
or sudo
.
Related videos on Youtube
silverdagger
Updated on September 18, 2022Comments
-
silverdagger almost 2 years
I have a service installed to start jasper reporting server on boot. I believe it is correctly setup.
here is the startup script placed in /etc/init.d/jasperserver
#!/bin/sh ### BEGIN INIT INFO # Provides: jasperserver # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start JasperServer at boot time # Description: Enable service provided by JasperServer. ### END INIT INFO JASPER_HOME="/opt/jaspersoft/jasperreports-server-5.5" case "$1" in start) if [ -f $JASPER_HOME/ctlscript.sh ]; then echo "Starting JasperServer" sudo -u ec2-user $JASPER_HOME/ctlscript.sh start fi ;; stop) if [ -f $JASPER_HOME/ctlscript.sh ]; then echo "Stopping JasperServer" sudo -u ec2-user $JASPER_HOME/ctlscript.sh stop fi ;; restart) if [ -f $JASPER_HOME/ctlscript.sh ]; then echo "Restarting JasperServer" sudo -u ec2-user $JASPER_HOME/ctlscript.sh restart fi ;; status) if [ -f $JASPER_HOME/ctlscript.sh ]; then sudo -u ec2-user $JASPER_HOME/ctlscript.sh status fi ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 ;; esac
Also, I run the command
sudo chmod +x /etc/init.d/jasperserver
I then have run the commands
sudo chkconfig --add jasperserver sudo chkconfig jasperserver on
If I run:
chkconfig --list | grep jasper
I see:
jasperserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off
I can also run:
sudo service jasperserver (start|stop|restart)
successfully
However when I issue a reboot, the service isn't running. I wondered if there's a way I can get logging information or enable logging to be able to tackle this.
More detail
uname -a Linux jaspersoft.localdomain 3.10.42-52.145.amzn1.x86_64 #1 SMP Tue Jun 10 23:46:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Also after adding the line:
# chkconfig: 2345 70 30
the symlinks are as follows:
[ec2-user@jaspersoft ~]$ ls -laF /etc/rc.d/rc3.d/*jasper* lrwxrwxrwx 1 root root 22 Aug 6 08:09 /etc/rc.d/rc3.d/S70jasperserver -> ../init.d/jasperserver*
and likewise for /etc/rc.d/rc[2-5].d/jasper
-
c4f4t0r almost 10 yearsit can be util if you say your centos version, anyway are you sure you don't have nothing in your log?
-