LINUX.ORG.RU

Start-stop запуск бинарника на golang

 , , ,


0

1

Доброго дня!

Есть небольшой скрит, аля «Хеллоу ворд» на golang. Хочу его запустить на vps (CentOs) автоматически как фоновую службу.

Нашел пример init.d скрипта:

#!/bin/bash

# EF Service    connect service for EFDemo
#
# chkconfig: 2345 80 30
# description: connect service for EFDemo
# processname: ef_service


# Source function library.
. /etc/init.d/functions

# Source networking configuration.
#. /etc/sysconfig/network

APP_PATH=/home/www/site/htdocs/gh
EXEC=gh
DAEMON=$APP_PATH/$EXEC
OPTIONS="-c=$APP_PATH/config"
LOGFILE=$APP_PATH/ef_service.log

#if [ -f /etc/sysconfig/ef_service ];then
#        . /etc/sysconfig/ef_service
#fi

prog='GH gohttp'

start() {
        # Check that networking is up.
        [ "$NETWORKING" = "no" ] && exit 1
        
        echo -n $"Starting $prog: "
        daemon --check $EXEC nohup $DAEMON $OPTIONS < /dev/null > $LOGFILE &
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$EXEC
        return $RETVAL
}
        
stop() {
        echo -n $"Shutting down $prog: "
        killproc $EXEC
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$EXEC
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status $EXEC
        RETVAL=$?
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|status}"
        RETVAL=3
esac

exit $RETVAL 

При запуске (service gh start) пишет:
nohup: redirecting stderr to stdout
Но скрипт не запускается.

Если запускать как:
nohup ./gh &
То все работает.

Подскажите, как же всё это дело заставить работать?

Странно, все должно работать.
В данном случае программа на go не сильно должна отличаться от любой другой.

deterok ★★★★★ ()
Ответ на: комментарий от deadNightTiger

Если оно выполняет эту задачу, то возможно и можно его использовать. Но я с ним (upstart) не знаком.
Package upstart-0.6.5-13.el6_5.3.i686 already installed and latest version

Jomaster ()

Ну этих сведений маловато чтобы понять. В лог файле пусто? Может, она зависит от каких-то путей в системе?

Hater ★★ ()

у тебя в каталоге /home/www/site/htdocs/gh/ лежит выполняемый файл gh, или, всё таки, каталог /home/www/site/htdocs?

aol ★★★★★ ()
Ответ на: комментарий от Hater

В логах ничего криминального не нашел. Какие нужны дополнительные данные?

Jomaster ()
Ответ на: комментарий от Hater

А нет, вру. Яж копипастел пример, посмотрел в логфайле...

panic: open tpl/articles.html: no such file or directory

goroutine 16 [running]:
runtime.panic(0x8297380, 0x18622aa0)
        /usr/lib/go/src/pkg/runtime/panic.c:279 +0xe9
html/template.Must(0x0, 0xb76d5418, 0x18622aa0, 0x0)
        /usr/lib/go/src/pkg/html/template/template.go:296 +0x4c
main.init()
        /home/gizma/go/src/gh/sop.go:12 +0xc4

goroutine 17 [runnable]:
runtime.MHeap_Scavenger()
        /usr/lib/go/src/pkg/runtime/mheap.c:507
runtime.goexit()
        /usr/lib/go/src/pkg/runtime/proc.c:1445

goroutine 18 [runnable]:
bgsweep()
        /usr/lib/go/src/pkg/runtime/mgc0.c:1976
runtime.goexit()
        /usr/lib/go/src/pkg/runtime/proc.c:1445

goroutine 19 [runnable]:
runfinq()
        /usr/lib/go/src/pkg/runtime/mgc0.c:2606
runtime.goexit()
        /usr/lib/go/src/pkg/runtime/proc.c:1445
^[[60G[^[[0;31mFAILED^[[0;39m]

Jomaster ()
Ответ на: комментарий от Jomaster

Ну похоже что приложение зависит от того, из какого каталога его запускать. Как минимум могу предложить перед daemon поставить что-то вроде

cd $APP_PATH

Быть может, твоё приложение допускает явное указание рабочего каталога?

Hater ★★ ()
Ответ на: комментарий от Hater

Вот спасибо! Работает. Начал изучать Golang. Приложение элементарное, запуск сервера и вывод одного шаблона.
Век живи - век учись

Jomaster ()
Ответ на: комментарий от anonymous

Спасибо, можно взять на вооружения. Я думал, что зависимости от папки с шаблонами не должно быть. И они компилятся в один бинарник, а оказалась что нет. Сбила фраза - ... Весь проект компилируется в один бинарный файл, без зависимостей ...

Jomaster ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.