시작 시 및 로그아웃 시 jar 파일을 실행하는 방법은 무엇입니까?

시작 시 및 로그아웃 시 jar 파일을 실행하는 방법은 무엇입니까?

어디서부터 시작해야 할지 모르겠습니다. 나는 데몬에 대해 읽었지만 개념을 이해하지 못했습니다.

자세한 내용은 :

  • 나는 절대 멈추지 않는 크롤러와 인터넷의 RSS를 통해 크롤러를 작성해 왔습니다.
  • 크롤러는 Java로 작성되었으므로 현재는 jar입니다.
  • 저는 Ubuntu 11.04가 설치된 컴퓨터의 관리자입니다.
  • 기계가 충돌할 가능성이 있으므로 기계를 시작할 때마다 크롤러가 실행되기를 바랍니다.
  • 그리고 로그아웃 후에도 계속 실행되고 싶습니다. 이것이 가능한지는 확실하지 않지만 대부분의 경우 로그아웃되어 있으며 여전히 크롤링을 원합니다.

어떤 아이디어가 있나요? 누군가 나에게 올바른 방향을 알려줄 수 있습니까?

가장 간단한 해결책을 찾고 있습니다.

답변1

SysVInit을 사용하여 이를 수행하는 쉬운 방법은 다음과 같습니다. 지침:

  1. 애플리케이션의 시작 및 중지 스크립트를 만듭니다. 우리의 예에서는 다음과 같은 디렉토리에 넣으십시오.

    • 시작 스크립트:/usr/local/bin/myapp-start.sh
    • 중지 스크립트:/usr/local/bin/myapp-stop.sh

    각각은 앱을 실행/중지하는 지침을 제공합니다. 예를 들어 myapp-start.sh내용은 다음과 같이 간단할 수 있습니다.

    #!/bin/bash
    
    java -jar myapp.jar 
    

    중지 스크립트의 경우 다음과 같을 수 있습니다.

    #!/bin/bash
    # Grabs and kill a process from the pidlist that has the word myapp
    
    pid=`ps aux | grep myapp | awk '{print $2}'`
    kill -9 $pid
    
  2. 다음 스크립트( myscript)를 작성하여 올려놓으십시오 /etc/init.d.

    /etc/init.d/myscript콘텐츠:

    #!/bin/bash
    # MyApp
    #
    # description: bla bla
    
    case $1 in
        start)
            /bin/bash /usr/local/bin/myapp-start.sh
        ;;
        stop)
            /bin/bash /usr/local/bin/myapp-stop.sh
        ;;
        restart)
            /bin/bash /usr/local/bin/myapp-stop.sh
            /bin/bash /usr/local/bin/myapp-start.sh
        ;;
    esac
    exit 0
    
  3. SysV를 사용하여 시스템을 시작하는 스크립트를 넣습니다. 다음 명령을 실행하십시오(루트로):

    update-rc.d myscript defaults 
    

추신: 저는 Upstart가 훌륭하고 훌륭하다는 것을 알고 있지만 이전 SysV init 시스템을 선호합니다.

답변2

예! 것이 가능하다. :)갑자기 나타나다서비스가 계속 실행되는지 확인하는 방법입니다. 5개의 패키지가 있으며 모두 기본적으로 설치됩니다.

  • init 데몬 및 initctl 유틸리티 시작
  • upstart-logd는 logd 서비스에 대한 logd 데몬 및 작업 정의 파일을 제공합니다.
  • upstart-compat-sysv는 rc 작업에 대한 작업 정의 파일과 SysVinit과의 호환성을 제공하는 재부팅, 실행 수준, 종료 및 telinit 도구를 제공합니다.
  • 시작 작업은 시스템 시작 작업에 대한 작업 정의 파일을 제공합니다.
  • system-services는 tty 서비스에 대한 작업 정의 파일을 제공합니다.

학습은 매우 즐겁고 그만한 가치가 있습니다. Upstart에는 다음과 같은 웹사이트가 있습니다.http://upstart.ubuntu.com/

답변3

3가지 빠른 제안...

  1. 만들기에스/etc/rc3.d해당하는 (다중 사용자 콘솔 모드) 의 tart 스크립트케이시스템 전원이 꺼지거나(runevel 0) 재부팅(runlevel 6)될 때 제어된 방식으로 Java 프로그램을 종료하고 /etc/rc.0잘못된 스크립트를 실행합니다./etc/rc6.d런레벨 소개.

    런레벨 2(rc2.d)에서 Java 앱을 시작할 수 있지만 크롤러로서 TCP/IP가 필요합니다. 따라서 네트워킹 서비스가 런레벨 2에서 미리 사용 가능하거나 시작되었는지 확인하십시오. 네트워킹은 확실히 런레벨 3에서 향상되었습니다.

    /etc/init.d실제 시작/종료 스크립트가 모두 포함되어 있습니다. /etc/rcN.d디렉토리에는 런레벨 N별로 각각 시작하거나 종료하기 위한 S 또는 K 접두어가 붙은 링크가 포함되어 있습니다.

  2. 에서 실행되는 프로세스는 crond로그아웃 후에도 지속되어야 합니다. 어쩌면 crontab에 추가할 수도 있습니다.

  3. 에서 실행되는 프로세스 nohup도 지속되어야 합니다. 보다nohup: 로그아웃 후에도 명령 실행.

    $ nohup java -jar myapp.jar &
    

    기본적으로 의 myapp.jar표준 출력은 이름이 지정된 파일로 이동하거나 ./nohup.out전자 $HOME/nohup.out가 쓸 수 없는 경우입니다.

답변4

Linux용 Java 버전 확인 기능을 갖춘 간단한 시작 스크립트인증 에이전트 그리고 윈도우즈인증 에이전트 .bat

관련 정보