There is an init.d script posted at https://confluence.atlassian.com/display/STASH/Running+Stash+as+a+Linux+service#RunningStashasaLinuxservice-Usinganinit.dscript , but it is geared more toward Debian-based systems than RHEL-based systems. As is, the script has issues with chkconfig. Is there an init.d script available for us who use the RHEL-based systems?
This is a self-answer question. I'm posting a script below.
Personal solution:
#!/bin/sh # # stash Startup script for stash. # # chkconfig: 2345 85 28 # description: Initscript for Atlassian Stash ### BEGIN INIT INFO # Provides: $stash # Required-Start: $local_fs $network $syslog # Required-Stop: $local_fs $syslog # Should-Start: $syslog # Should-Stop: $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Initscript for Atlassian Stash # Description: Automatically start Atlassian Stash when the system starts up. # Provide commands for manually starting and stopping Stash. ### END INIT INFO # # Author: Billy Wilson # <billybob.wilson AT gmail.com>. # Source function library . /etc/rc.d/init.d/functions # RUNUSER: The user to run stash as RUNUSER=stash # STASH_INSTALLDIR: The path to the Stash installation directory STASH_INSTALLDIR="/usr/local/src/atlassian-stash-latest" # STASH_BINDIR: The path to the Stash installation binaries STASH_BINDIR="$STASH_INSTALLDIR/bin" # STASH_HOME: The path to the Stash home directory STASH_HOME="/var/lib/stash" # STASH_PID: The path to the Stash PID file STASH_PID="$STASH_INSTALLDIR/work/catalina.pid" # For SELinux we need to use 'runuser' instead of 'su' if [ -x /sbin/runuser ] then SU=runuser else SU=su fi # Set defaults for Stash name and description NAME=stash DESC="Atlassian Stash" # Read configuration variable file if present [ -r /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME # Function to run commands as $RUNUSER with $STASH_HOME exported run_with_home() { if [ "$RUNUSER" != "$USER" ] then $SU - "$RUNUSER" -c "export STASH_HOME=$STASH_HOME; $STASH_BINDIR/$1" else export STASH_HOME=$STASH_HOME; $STASH_BINDIR/$1 fi } script_result=0 start(){ [ -x "$STASH_BINDIR/start-stash.sh" ] || exit 5 STASH_START=$"Starting $NAME service: " if [ -e $STASH_PID ] then echo $"$NAME is already running as PID `cat $STASH_PID` (or the PID file is dead)." echo_failure echo exit 1 else echo -n "$STASH_START" run_with_home start-stash.sh > /dev/null sleep 2 pid=`head -n 1 "$STASH_PID" 2>/dev/null` if [ "x$pid" != x ] then success "$STASH_START" echo else failure "$STASH_START" echo script_result=1 fi fi } stop(){ [ -x "$STASH_BINDIR/stop-stash.sh" ] || exit 5 echo -n $"Stopping $NAME service: " if [ -e "$STASH_HOME/.lock" ]; then run_with_home stop-stash.sh > /dev/null ret=$? if [ $ret -eq 0 ] then echo_success else echo_failure script_result=1 fi else # not running; per LSB standards this is "ok" echo_success fi echo } restart(){ stop start } condrestart(){ [ -e "$STASH_HOME/.lock" ] && restart || : } case "$1" in start) start ;; stop) stop ;; status) status -p "$STASH_PID" stash script_result=$? ;; restart) restart ;; condrestart|try-restart) condrestart ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}" >&2 exit 2 esac exit $script_result
I realise this is an old thread, but I wanted to say thanks. Also I would offer that a "standard" RHEL/CentOS init script usually sources /etc/sysconfig/stash as opposed to /etc/default/stash if it exists to allow for "configuration" such as directories, users, etc. without customizing the script itself.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks again! I was glad to find this and it works great (I made the same change).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
i have some trouble with the init script. The Start is working perfectly but shutdown dont get run on system reboot.
RedHat checks for a lock file for your script in /var/lock/subsys/<scriptname> or it won't run your K* scripts.
You need to add an touch in the start routine and a rm -f in the stop routine.
Regards,
Florian
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Billy,
There is a script for FishEye that I think that can help you:
Could you please try it just editing the paths to Stash installation and tell me how it goes for you?
Regards,
Celso Yoshioka
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for your response. I edited the paths and ran it, but the functionality of that script doesn't align well with what I would expect from an init.d script in RHEL. For example, `service stash status` tails a log file, but I would expect it to report if the service is running, along with a PID if available.
Also, it doesn't use the sourced functions in /etc/rc.d/init.d/functions, such as `success`, `failure`, `echo_success`, `echo_failure`, and `status`. Using these functions standardizes the format of `service stash` output with with the rest of my services.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.