리눅스 :`service foo start`에 매개 변수를 전달하는 방법 (명령 줄에서)?


11

시작하는 서비스에 인수를 전달하고 싶습니다. 예를 들어 디버그 모드에서 서버를 시작합니다. 처럼,

service jboss-as start debug

또는 그런. 그러나 service그것을 지원하지 않는 것 같습니다.

방법이 있습니까? (중요한 경우 RHEL 6의 경우)

참고 : 이것은 Ubuntu / Linux 와 비슷합니다 . 시작 매개 변수는 일반적으로 시작 스크립트 (sysvinit)에 대해 어떻게 정의됩니까? 그러나 동일하지 않습니다.


우분투는 sysv를 사용하지 않고 upstart를 사용합니다.
페르시아 걸프

1
시작 스크립트에서 다른 사례를 만듭니다. 예 : start-debug다음을 실행할 수 있습니다./etc/init.d/jboss-as start-debug
Guntis

답변:


10

RHEL에는 / etc / sysconfig 폴더가 있습니다. 여기서 시작 매개 변수를 정의합니다. 시작 스크립트에는 다음과 같은 내용이 포함됩니다.

if [ -f /etc/sysconfig/$prog ] ; then
    . /etc/sysconfig/$prog
fi

예를 들어 기존 서비스를 확인하십시오.

개발을 위해 시작 매개 변수를 내 보낸 변수 (예 : .bashrc)에 저장하면 언제든지 수동으로 재정의 할 수 있습니다.

편집하다

정말로 사용하고 싶다면 service다른 옵션이 있습니다.

귀하의 스크립트는 적어도 지원해야 start하고 stop. 그러나 debug명령을 구현할 수도 있습니다 . 그리고 다음과 같이 프로그램을 시작하십시오 :

service foo debug

또 다른 방법은 스크립트에서 두 번째 인수를 확인하고 다음과 같이 프로그램을 시작하는 것입니다.

service foo start debug

init 스크립트를 다음과 같이 수정하십시오.

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;

1
내 보낸 환경 변수에 관해서는 그렇지 않습니다. 서비스의 매뉴얼 페이지에 TERM과 LANG가 스크립트에 전달되는 유일한 것입니다. 물론 /etc/init.d/MyNiftyService start whatever1 whatever2를 실행하여 서비스를 항상 우회 할 수 있습니다.
Alien Life Form

나는 외계인의 우회에 의지 할 것이다. 답으로 하시겠습니까?
Ondra Žižka

5

우분투에서 시작 매개 변수는 일반적으로 다음과 같습니다.

/etc/default/<service_name>

2
맞습니다.하지만 변경이 필요할 때마다 변경하고 싶지 않습니다. 개발 중에는 자주 발생합니다. RHEL 6이 필요합니다. 질문을 편집했습니다.
Ondra Žižka

0

위에서 제안한 것처럼 시스템 특정 파일의 존재 여부를 확인한 후 추가 매개 변수를 소싱합니다.

서비스 시작에 추가 옵션을 추가하는 것을 좋아하지 않습니다.

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