FreeBSD rc 스크립트를 만드는 쉬운 방법이 있습니까?

FreeBSD rc 스크립트를 만드는 쉬운 방법이 있습니까?

다음 명령을 사용하여 서버를 실행하는 FreeBSD 감옥이 있습니다.

/usr/sbin/daemon /path/to/script.py

현재는 머신을 재부팅하고 감옥이 시작될 때마다 이 명령을 실행해야 합니다. 이 명령을 처음부터 시작하고 싶습니다 /etc/rc. 명령에 대한 FreeBSD rc 스크립트를 쉽게 생성할 수 있는 방법이 있습니까 daemon?


고쳐 쓰다:나는 끝까지 읽었다rc 스크립트에 대한 이 BSD 문서, 다음에서 다음 스크립트를 만들었습니다 /etc/rc.d/pytivo.

#!/bin/sh

. /etc/rc.subr

name=pytivo
rcvar=pytivo_enable
procname="/usr/local/pytivo/pyTivo.py"

command="/usr/sbin/daemon -u jnet $procname"

load_rc_config $name
run_rc_command "$1"

pytivo_enable="YES"이것은 감옥이 시작될 때 데몬으로 원하는 Python 스크립트를 시작하는 데 작동합니다 /etc/rc.conf. 경고를 발행합니다:

[root@meryl /home/jnet]# /etc/rc.d/pytivo start
[: /usr/sbin/daemon: unexpected operator
Starting pytivo.
[root@meryl /home/jnet]# 

그래서 그렇습니다폐쇄, 그리고 그것은일하다, 하지만 이보다 더 나은 기능을 얻을 수 있어야 한다고 생각합니다.

답변1

command여러 단어를 포함할 수 없습니다. 이것이 당신이 보고 있는 오류의 원인입니다 [. 플래그는 개별적으로 설정해야 합니다.

또한 pytivo_user대신 를 사용하여 실행 중인 uid를 설정 해야 합니다 daemon -u.rc.subr(8)이러한 모든 마법 변수에 대한 매뉴얼 페이지입니다.

또한 rc 하위 시스템에 pytivo가 Python 스크립트라는 사실을 알려서 프로세스가 실행 중인지 확인할 때 프로세스를 찾을 수 있도록 해야 합니다.

set_rcvar마지막으로 for 관용어를 사용해야 합니다 rcvar.

다음과 같습니다(이것이 올바른 Python 경로인지 확실하지 않습니다).

#!/bin/sh

# REQUIRE: LOGIN

. /etc/rc.subr

name=pytivo
rcvar=`set_rcvar`
command=/usr/local/pytivo/pyTivo.py
command_interpreter=/usr/local/bin/python
pytivo_user=jnet
start_cmd="/usr/sbin/daemon -u $pytivo_user $command"

load_rc_config $name
run_rc_command "$1"

답변2

rc 스크립트가 필요하지 않으면 /etc/rc.local을 사용하면 됩니다.

rc 스크립트의 경우 종속성 주석이 누락되었습니다(한 줄 이상).

# REQUIRE: LOGIN

도움이 되면 적시에 실행됩니다.

pidfile을 정의해야 할 수도 있습니다.

pytivo_pidfile="/path/to/your/pidfile"

관련 정보