시작 스크립트를 만들고 싶습니다. 도움과 조언이 필요하다


13

Atm, 나는 직업을 무작위로 시작하고 멈춰야한다. 입력하여 시작 java -jar foo.jar하고 pid를 찾아서 죽입니다. 그것을 죽이는 것은 데이터 손실이나 손상 또는 다른 것을 야기하지 않으며 단지 FYI입니다. 첫 번째 명령은 특정 디렉토리에서 실행해야하기 때문에 두 단계를 모두 수행하는 것이 지루합니다 /usr/share/jetty.

그래서 나는 라인에 뭔가를 생각하고 있었다

service foo startservice foo stop시작 서비스를 중지합니다. 그게 가능하고 더 중요합니까? 다른 해결책이 있습니까?

감사.

답변:


13

그래 Upstart는 이것에 대한 아주 좋은 옵션입니다. 새 파일을 만드십시오.

sudoedit /etc/init/my-jetty-jar.conf

파일 이름을 원하는대로 변경할 수 있지만 여기에 붙여 넣으십시오.

description     "Run my jetty jar"

# no start option as you might not want it to auto-start
# This might not be supported - you might need a: start on runlevel [3]
stop on runlevel [!2345]

# if you want it to automatically restart if it crashes, leave the next line in
respawn

script
    cd /usr/share/jetty
    su -c "/usb/bin/java -jar /path/to/foo.jar" nobody
end script

그것에 대해 몇 가지 메모, 나는 su보안을 위해 아무도하지 않을 거야 . su다른 계정에 필요할 수도 있지만로 실행하지 않는 것이 좋습니다 root.


변경 사항을 적용하려면 다시 시작해야합니까? update-rc.d작동하지 않음 /
theTuxRacer

update-rc.d시동 작업이 필요하지 않습니다 .
Oli

upstart는 inotify를 사용하여 / etc / init를 감시하므로 일반적으로 아래 파일에 대한 모든 편집 내용을 알고 있습니다. 'start my-jetty-jar'이외의 다른 작업을 수행 할 필요가 없습니다. 아, 그리고 @Oli, 당신은 확실히 시작하지 않고 일을 가질 수 있습니다. 런레벨에서 중지 [! 2345]는 앞으로 파일 시스템을 마운트 해제하기 전에 중지 될 것이라고 보장하지 않기 때문에 나쁜 방법으로 플래그가 지정 될 수 있습니다.
SpamapS

불행히도 start.jar가 다른 프로세스를 생성하므로 사용자의 접근 방식으로 죽지 않기 때문에 Jetty 8의 솔루션은 더 이상 작동하지 않는 것 같습니다. 이 문제를 해결하기 위해 다른 질문을 작성했습니다. stackoverflow.com/questions/10796242/…
Sebi

4
@Sebi 당신은 expect fork( script시작 하기 전에 ) 거기 에 붙어 있어야 할 수도 있습니다 .
Oli
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.