bobthecow / genghis

The single-file MongoDB admin app
http://genghisapp.com
MIT License
1.45k stars 166 forks source link

system boot #88

Closed panosru closed 11 years ago

panosru commented 11 years ago

Hello, how can I add genghisapp on debian system boot? I'm not familiar with gems to be honest, I tried to run ln /usr/local/rvm/gems/ruby-2.0.0-p0/gems/genghisapp-2.2.2/bin/genghisapp /etc/init.d/ but when I run /etc/init.d/genghisapp I get

#> /etc/init.d/genghisapp
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- /etc/genghis (LoadError)
    from /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /etc/init.d/genghisapp:9:in `<main>'

so update-rc.d won't work either.

Thanks!

bobthecow commented 11 years ago

I think the problem you're running into is that genghisapp (the executable) references genghis.rb using relative paths. Have you tried a shell script which runs genghisapp instead?

#!/usr/bin/env bash

genghisapp
panosru commented 11 years ago

@bobthecow Hello! I actually created this:

 #> cat /etc/init.d/genghis
#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

cmd="genghisapp"

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
    cat "$pid_file"
}

is_running() {
    [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}

case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
      $cmd > "$stdout_log" 2> "$stderr_log" \
        & echo $! > "$pid_file"
        if ! is_running; then
        echo "Unable to start, see $stdout_log and $stderr_log"
        exit 1
        fi
    fi
    ;;
    stop)
  $cmd --kill > "$stdout_log" 2> "%stderr_log"
    #if is_running; then
    #    echo "Stopping $name"
    #    kill `get_pid`
    #    rm "$pid_file"
    #else
    #    echo "Not running"
    #fi
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    status)
    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0

And it works, could be better but at least it work! Any improvement is welcome! :)

bobthecow commented 11 years ago

Hey, as long as it works, what more can you ask for? ;)

Glad you got it working.