기본 콘텐츠로 건너뛰기

Ubuntu – Service(e. Tomcat) 등록 및 삭제

새로 시작하는 서비스를 등록하기 위해 스크립트 작성과 서비스 등록법을 설명한다.
해당 자료는 askubuntu.com에서 참조하였다.
Init 스크립트
#!/bin/bash

### BEGIN INIT INFO
# Provides:        tomcat7
# Required-Start:  $network
# Required-Stop:   $network
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
# Short-Description: Start/Stop Tomcat server
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

start() {
 sh /usr/share/tomcat7/bin/startup.sh
}

stop() {
 sh /usr/share/tomcat7/bin/shutdown.sh
}

case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Run as $0 "; exit 1;;
esac
위 스크립트 작성 후 /etc/init.d/에 위치시킨다.
chmod 755 /etc/init.d/tomcat7
update-rc.d tomcat7 defaults
등록 후
service tomcat7 [start|stop|restart]
로 사용이 가능하다.
그럼 update-rc.d는 무엇일까? 우분투는 부팅시 서비스를 등록 할 수 있다. 그 때 이 명령어를 이용한다.
방법은 위와 동일하다.
1. /etc/init.d/ 위치에 스크립트 생성
2. chmod를 이용하여 권한 부여
3. update-rc.d를 이용하여 서비스를 등록 한다.
삭제 법은 아래와 같다
update-rc.d -f ‘service name’ remove
아래는 런레벨에 대해서 설명하고 있다.
레벨설명
0시스템 정지
1단일 사용자 모드
2~5다중 사용자 모드
6시스템 재가동
update-rc.d 명령은 /etc/init.d/와 rcN.d 디렉토리의 파일 사이에 연결을 만든다.
그 연결 파일의 명칭은 ‘S’, ‘K’로 시작, 그 뒤로 두자리 숫자와 등록된 스크립트 파일명으로 구성된다. 각 rcN.d 는 N에 해당하는 런레벨으로 실행 될 때 ‘S’로 시작되는 스크립트들이 실행되고, ‘K’는 해당 런레벨 N을 빠져 나올 때 실행되게 된다. ‘S’, ‘K’ 뒤에 숫자는 실행 순서를 나타내게 된다.

현재 등록된 update-rc.d 시작 프로그램의 리스트를 확인하기

명령어를 친다.
ls /etc/rc?.d

다음과 같이 나온다.
Screen Shot 2014 01 05 at 5 20 36

나는 시작프로그램은 jong-blahblah 와 같은 형식으로 만들었다.

grep 검색어로 지정해서 찾는다.
ls /etc/rc?.d | grep jong-

Screen Shot 2014 01 05 at 5 21 00

ls /etc/rc0.d 로 확인해 보는 게 더 깔끔하겠다.

다음과 같이 나온다.

댓글

이 블로그의 인기 게시물

[Java] Http File Download 이어받기

Http 서버로부터 다운로드 받는 파일을 이어받기 위해서는 Http Header에 아래 두가지 정보를 추가해 주면 된다. URLConnection conn = url.openConnection(); conn.setRequestProperty("Accept-Ranges", "bytes"); conn.setRequestProperty("Range", "bytes=" + mOffset + "-"); 그러면 서버에서는 해당 Offset으로부터 File을 다운로드 시켜준다. 클라이언트가 요청헤더에 Range 필드를 포함 시켜서 보내면, 서버는 그 정보를 가지고 어디서 부터 파일을 보낼지 판단을 합니다. 하지만 클라이언트가(브라우저) Range 필드를 포함 시켜야 할지를 판단하는 기준은 최초 다운로드 요청시 서버의 응답헤더에 따라 다음 요청헤더에 Range 헤더를 생성할지 않할지 판단하게 됩니다. 그걸 당락짓는 응답 헤더 필드는 다음과 같습니다. Accept-Ranges , ETag, Last-Modified 반드시 위 필드를 응답 헤더에 같이 보내줘야 클라이언트는 다음 요청시 Range헤더를 포함시켜 보내게 됩니다. 참고로 말씀 드리면 위 필드를 포함 시켜서 보내더라도 value는 반드시 " " 로 묶어서 보내야 합니다. 안그러면 브라우저는 죽어도 Range 필드를 생성시키지 않습니다. HTTP 1.1 스펙은 따옴표를 강제적으로 해줘라 이런 내용 없습니다. 자바기준 40byte의 파일이라치면 클리이언트 요청을 두번으로 나누었다치면 이케 connection.setRequestProperty("Range", "bytes=0-20"); connection.setRequestProperty("Range", "bytes=20-40"); 단 co...

java 특정 디렉토리에 있는 파일 목록을 읽어내기, 정렬해서 가져오기

폴더 리스트 가져오기 String path="C:\"; File dirFile=new File(path); File []fileList=dirFile.listFiles(); for(File tempFile : fileList) {   if(tempFile.isFile()) {     String tempPath=tempFile.getParent();     String tempFileName=tempFile.getName();     System.out.println("Path="+tempPath);     System.out.println("FileName="+tempFileName);     /*** Do something withd tempPath and temp FileName ^^; ***/   } } 정렬해서 가져오기 import java.io.FileFilter; import java.io.IOException; import java.util.Arrays; import java.util.Date; import org.apache.commons.io.comparator.LastModifiedFileComparator; import org.apache.commons.io.filefilter.FileFileFilter; public class LastModifiedFileComparatorTest { public static void main(String[] args) throws IOException { File directory = new File("."); // get just files, not directories File[] files = directory.listFiles((FileFilter) FileFileFilter.FILE); System.out.println("Defaul...