'windows service'에 해당되는 글 5

  1. 2010.11.05 Oracle APEX 를 실행하는 프로그램 찾기
  2. 2010.04.05 Thread dump 생성
  3. 2009.04.04 윈도우 서비스 시작/정지/상태보기
  4. 2009.01.09 Tomcat 6 설치(Windows Service에 등록)
  5. 2009.01.08 Subversion 관리

Oracle APEX 를 실행하는 프로그램 찾기

간만에 개발서버에 접속하려는데 Oracle APEX 에 접속이 되지 않는다.
어떤 서비스를 실행시켜야 하는지 모르겠다.
포트가 8080이니깐 찾아보자.
> netstat -nao | findstr 8080
  TCP    127.0.0.1:8080         0.0.0.0:0              LISTENING       1388
(외부에서는 접속 못하게 되어 있네.)

PID가 1388인 프로세스를 찾자.
> tasklist | findstr 1388
TNSLSNR.EXE                 1388 RDP-Tcp#133             0      7,852 K

아마 오라클 서비스겠지.
>sc qc "OracleXETNSListener"
[SC] GetServiceConfig SUCCESS

SERVICE_NAME: OracleXETNSListener
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 0   IGNORE
        BINARY_PATH_NAME   : C:\oraclexe\app\oracle\product\10.2.0\server\BIN\tn
slsnr.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : OracleXETNSListener
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem


Thread dump 생성

- Unix
  • # Ctrl+\ //console
  • # kill -3 pid //damon, man page에서 QUIT에 해당하는 시그널을 확인할 것.

- Windows
  • Ctrl+Break //console
  • 윈도우즈 서비스로 구동중이라면 SendSignal을 이용해서 원하는 프로세스에 Signal(Ctrl+Break)을 보낼 수 있다.
  • Tomcat 6.0은 모니터 프로그램을 통해서 Thread dump를 남길수 있다.
    이 때 덤프는 jakarta_service_yyyymmdd.log에 남는다.


- todo 파일이 생성되는 곳..............

윈도우 서비스 시작/정지/상태보기

- services.msc

- net start | stop SERVICE_NAME

- sc start | stop | query | delete SERVICE_NAME
> sc query mysql //services.msc를 실행시키지 않고도 콘솔에서 서비스의 실행상태 확인가능
SERVICE_NAME: mysql
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
                                (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0


- 서비스가 있는지 확인

> sc query | findstr /i couch
SERVICE_NAME: Apache CouchDB01d0440336206df0
DISPLAY_NAME: Apache CouchDB


-

[SC] StartService FAILED 1053: //서비스등록시 binpath에 입력한 인자가 잘못 되었다.


Tomcat 6 설치(Windows Service에 등록)

고객사에 설치한 Tomcat 6 에서 문제가 발생해서 테스트를 위해서 Tomcat 5.5 가 설치되어 있는 윈도우머신에 Tomcat 6 를 추가로 설치하게 되었다.

Tomcat 5.5 가 서비스에 "Apache Tomcat" 이라는 표시 이름으로 등록되어 있어서 Tomcat 6 를 서비스로 등록할 수 없다.[각주:1]
Tomcat 5.5(서비스 이름은 Tomcat5) 를 "Apache Tomcat 5" 이라는 표시 이름으로 변경한 뒤 Tomcat 6 을 에러없이 설치를 완료할 수 있다.

> %CATALINA_HOME%/bin/tomcat5 //US//Tomcat5 --DisplayName="Apache Tomcat 5"

옵션은 Apache Tomcat 6.0 Windows service HOW-TO 를 참고.

하여튼 설치후 디렉토리 구조가 예전과 조금 달라진 것을 알 수 있다.
%CATALINA_HOME%/common/ 가 없어지고 lib/ 만 있다.
예전에 있던 common/endorsed/ 가 필요한데 없다. 난감하다.

윈도우 서비스에 등록된 경우 Configure Tomcat 를 누르면 나오는 Tomcat Properties 의 Java 탭에서 옵션을 지정할 수 있다.
%CATALINA_HOME%/endorsed/ 를 만들고 java.endorsed.dirs 속성에서 endorsed/ 를 지정해준다.

*참고
Java Endorsed Standards Override Mechanism
자바기술 지원 표준 (Java Endorsed Standards)


  1. MySQL 5(?) 에서는 서비스 등록시 이름을 선택할 수 있음. [본문으로]

Subversion 관리

- 저장소 관리
  1. 저장소 생성
    > svnadmin create --fs-type fsfs d:/svn_base/rep1 //rep1 이라는 저장소 생성

  2. svnserve.conf 설정(d:/svn_base/rep1/conf/)
    anon-access = none //익명사용자의 접근을 막는다.
    auth-access = write
    password-db = passwd
    authz-db = ../../conf/authz //여러 저장소에서 각각 지정하지 말고 한곳에서 관리하도록 할 수 있다.

  3. 권한 설정(authz) : Path-Based Authorization
    [/]
    * =
    pantarei = rw

    [rep1:/prj1/trunk]
    mir = rw

    [rep2:/]
    * = r #읽기전용

  4. 서버 시작
    > svnserve -d -r d:/svn_base //svn 프로토콜을 사용, 3690 포트 사용

- 서비스 등록
sc \\DEVTEST create svnserve binpath= "C:/Subversion/bin/svnserve.exe --service -r D:/Resources/svn_repos" DisplayName= "Subversion svnserve"

- 저장소 여러 개 사용하기
  1. 위와 같이 저장소를 모아둔 디렉토리를 기준으로 svnserve 를 실행시킨다.
  2. > svnserve -d -r d:/svn_base/rep2 --listen-port 3691
  3. password-db, authz-db 를 한곳에서 관리한다.


- 버전 정보 보기

> svnadmin --version //svnlook --version 동일
svnadmin, 버젼 1.4.6 (r28521)
    Dec 20 2007, 16:19:22에 컴파일 됨
...