<myapp> .service를 시작하지 못했습니다 : <myapp> .service 장치를 찾을 수 없습니다


13

내 파이썬 봇을위한 슈퍼 기본 init.d 스크립트를 만들었습니다.

#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

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

start() {
    echo "starting torbot"
    python /home/ctote/dev/slackbots/torbot/torbot.py
    # example: daemon program_name &
}

stop() {
    # code to stop app comes here
    # example: killproc program_name
}

case "$1" in
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

그리고 설정 torbot.py으로 +x하고 #!/usr/local/bin/python상단에. 그래도 실제로 시작하려고하면 다음과 같은 결과가 나타납니다.

:/var/lock/subsys$ sudo service torbot start Failed to start torbot.service: Unit torbot.service not found.

뭔가 빠졌습니까?

답변:


4

우분투 16.04 이상을 사용하는 경우 서비스 파일 작성 에 대한 systemd 문서를 검토하십시오

이 스크립트는 이전 init 시스템 용이며 레거시 호환성 계층에서 관리합니다.


2

나를 위해 Ubuntu 16.04를 사용하고 있습니다.

먼저 init 함수를 변경하십시오

. /etc/init.d/functions

. /lib/lsb/init-functions

그런 다음 쉘에서 / etc / rc *에서 스크립트로 연결되는 심볼릭 링크를 만듭니다.

sudo update-rc.d <myapp> defaults 95

여기서 95를 의미하는 것은 무엇입니까?
Gherman

@Gherman의 우선 순위
turson

1

좋아, 나는이 stackoverflow 답변 ( 17.04에서 upstart 스크립트 실행? ) 몇 가지 단계를 시도했지만 내 환경은 다음과 같습니다.

  1. 17.10의 우분투
  2. Gunicorn 19.x 서버에 Python 앱이 있는데이 애플리케이션을 서비스로 시작해야합니다.

먼저 foo.service 파일을 작성해야합니다.

[Unit] 
Description=FooServer 

[Service] 
Restart=on-failure
WorkingDirectory=/path/to/your/working/directory/where the foo lives
ExecStart=/what/process/will call foo eg: in my case I used gunicorn app:app
ExecReload=/bin/kill -HUP $MAINPID 
KillSignal=SIGINT 

[Install] 
WantedBy=multi-user.target

'='부호의 왼쪽에있는 모든 단어의 의미와 그에 상응하는 upstart는 https://wiki.ubuntu.com/SystemdForUpstartUsers 링크에 있습니다.

파일이 준비되면 파일 이름을 'foo.service'로 지정합니다 (.service 확장자는 중요합니다)

파일을 /lib/systemd/system

그런 다음 전화를 걸어 서비스를 활성화해야합니다

systemctl enable foo

심볼릭 링크를 만들 때 루트 암호를 입력하라는 메시지가 표시됩니다.

번거 로움없이 여기까지 도달하면 좋습니다. 귀하의 서비스는 따라서 시작됩니다

sudo service foo start

systemctl status foosudo service foo stop서비스를 중지 하는 상태를 보려면



0

나는 같은 문제가 있었는데, 이것이 나를 위해 일한 해결책입니다. 시험:

sudo systemctl 데몬 재로드

sudo systemctl enable daemon_app.service

sudo systemctl start daemon_app.service

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