Как запустить службу Java от имени пользователя без полномочий root на CentOs 6

У меня есть скрипт, который запускает java-приложение как сервис на CentOs 6. Вот он:

#!/bin/sh
# chkconfig: - 80 20

SERVICE_NAME=cn4server
PATH_TO_JAR=/usr/local/share/myserver/cn4server.jar
PID_PATH_NAME=/usr/local/share/myserver/cn4server-pid
case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."
        if [ ! -f $PID_PATH_NAME ]; then
            nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
                        echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is already running ..."
        fi
    ;;
    stop)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stoping ..."
            kill $PID;
            echo "$SERVICE_NAME stopped ..."
            rm $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ...";
            kill $PID;
            echo "$SERVICE_NAME stopped ...";
            rm $PID_PATH_NAME
            echo "$SERVICE_NAME starting ..."
            nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
                        echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
esac 

Работает хорошо, но есть проблема: запускается под рутом. Как я могу изменить скрипт для запуска java-приложения от имени другого пользователя?


person Fedorov7890    schedule 10.07.2014    source источник
comment
Я считаю, что этот вопрос относится к стеку Unix.   -  person Elliott Frisch    schedule 10.07.2014
comment
Проверьте ярлык cron @reboot и поместите его в crontab соответствующего пользователя.   -  person Markus W Mahlberg    schedule 10.07.2014
comment
Я пытался, но, к сожалению, @reboot cron не работает для пользователя без полномочий root на CentOs. Вот некоторое объяснение: unix.stackexchange .com/questions/109804/   -  person Fedorov7890    schedule 10.07.2014
comment
Наконец кронтаб заработал. Моя ошибка заключалась в передаче неправильных аргументов.   -  person Fedorov7890    schedule 11.07.2014


Ответы (1)


Решение для меня было: crontab для пользователя без полномочий root с перезапуском строки @reboot /usr/local/share/myserver/cn4server.sh

Он отлично работает, хотя это обходной путь.

person Fedorov7890    schedule 11.07.2014