우분투 12.04에서 부팅시 서비스를 시작하는 방법을 다른 사용자로 실행 하시겠습니까?


0

나는 서버를 가지고있다. ClueReleaseManager 나는 별도의 사용자로부터 Ubuntu 12.04 시스템에 설치했다. pypi ), 시작할 때이 서버를 시작할 수 있기를 원합니다.

나는 이미 몇 가지 명령으로 간단한 bash 스크립트를 만들려고 노력했다. (사용자로 로그인 pypi, 가상 파이썬 환경을 사용하고, 서버를 시작한다.) 그러나 이것은 제대로 작동하지 않는다. 단말기가 다운되거나 서비스 상태를 묻기 시작하면 서비스가 시작되고 사용자로 로그인됩니다. pypi ...?

그래서, 여기에 질문 : ClueReleaseManager 서비스가 부팅시에 올바르게 시작되도록하고, 런타임 중에 서비스가 사용자로부터 실행되는 동안 (start / stop / ..) 제어 할 수있는 단계는 무엇입니까? pypi?

추가 정보 및 제약 조건 :

  • 나는 이것을 가능한 한 간단하게하고 싶다.
  • 다른 패키지 / 프로그램을 설치하지 않고
  • 나는 Ubuntu 12.04 init 구조에 익숙하지 않다.
  • 웹에서 찾은 모든 정보는 매우 희소하고 혼동 스럽거나 잘못되었거나 다른 사용자로 서비스를 실행 한 경우에는 적용되지 않습니다. root.

답변:


1

서비스를 시작하는 기본 스크립트는 다음과 같습니다.

#!/bin/sh

# This is for the 'update-rc.d', so it knows when to start your service.
### BEGIN INIT INFO
# Provides:          your-script
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: a short description
# Description:       a long description
### END INIT INFO

COMMAND="echo -n 'I am: '; whoami"

log () {
    echo "$@"
    logger -p user.info -t "ClueReleaseManager [$$]" "$@"
}

main () {
    case "$1" in
        stop)
        # stop your service
            echo "Stopping"
            ;;
        start)
            # run your service as user pypi
            # doesn't need password as root
            echo "Starting"
            # you probably want to start it in background
            # (don't block the other services)
            (su - pypi -c "$COMMAND") &
            ;;
        restart|force-reload)
        # restart your service
            echo "Restarting"
            ;;
        *)
        # wrong command
            echo "Unknown command: '$1'"
            ;;
    esac
}

# If you want, you can even log the whole.
# Unless you changed it it should go to /var/log/syslog
main "$1" 2>&1 | log


# Better exit with success, not sure if this can screw up Ubuntus boot process.
exit 0

update-rc.d 방법 : /etc/init.d/your-script (또는 링크)에 넣으십시오. 실행 파일을 만들고 init 서비스에 추가하십시오.

$ sudo chmod +x /etc/init.d/your-script
$ sudo update-rc.d your-script defaults

이제 서비스를 시작하고 중지 할 수 있습니다.

$ sudo your-script start
$ sudo your-script stop
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.