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.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.