잇힝
245
2017-06-20 00:20:45.0 작성 2017-06-20 00:21:19.0 수정됨
5
163

jsp에서 shell 스크립트 명령시 현재 경로가 다른 이유를 알 수 있을까요..


맥으로 이클립스 사용중이구요..


페이지가 열릴 때 간단한 쉘스크립트로  디렉토리 만들려고 하고 있습니다..

테스트겸 로컬에서 돌아가고 있는 서버구요..


request.getContextPath()로 출력한 경로와

리눅스 명령어로 pwd를 Runtime.exec("pwd"); 를 실행하면  출력되는 현재 경로가 서로 다르게 되어있습니다..


왜 이런건지 혹시 알 수 있을까요..? 

0
0
  • 답변 5

  • again432
    42
    2017-06-20 07:36:12.0

    was (java)를 기동한 경로가 기준 입니다.

    3
  • basscraft
    457
    2017-06-20 09:34:17.0

    윗분 말씀대로 was home 과 context root 의 차이겠죠

    헷갈리시면 절대 경로를 사용하시는게 좋겠습니다.


    근데 꼭 쉘스크립트로 만들어야 하는것 아니면 java File 객체를 사용하시는게 어떠신지...


    1
  • 잇힝
    245
    2017-06-20 13:26:53.0

    @basscraft 아. ^^; 웹서버에서 특정 이벤트가 발생하면   리눅스상에 짜여진 쉘 스크립트를 실행하기 위해  테스트해볼겸 쉘스크립트로  디렉터리 만든겁니다 ^^;


    Runtime클래스로 쉘스크립트를 실행하기 위해 경로를 파악하기 위함이였습니다..ㅎㅎ

    단순 디렉터리만 생성하는거라면 java File 객체를 사용하는게 낫죠 ^^; 



    0
  • basscraft
    457
    2017-06-20 13:47:29.0

    @잇힝

    구버전 JDK에서 시스템 콜을 사용하게 되면 fork() 명령을 통해 부모프로세스 JVM 메모리 크기 만큼이 할당 되는 것으로 알고 있습니다.

    Tomcat 같은 경우 jvm 메모리 설정을 비교적 크게 잡는 경우 메모리 부족으로 부모 프로세스까지 문제가 됬던 경험이 있습니다.

    최신 jdk에서는 해소가 되었는지 모르겠지만 아무튼...

    JVM 제어에서 벗어나는 것은 왠지 불안하다는 생각이 드네요

    쉘스크립트가 엄청나게 복잡해서 도저히 분석이 안되거나 특수한 기능이라 자바에서 구현이 불가능한 것이 아니라면 java 코드로 하시는게 어떨까... 하는 뜻에서 드린 말씀입니다.

    0
  • 잇힝
    245
    2017-06-20 13:56:52.0

    @basscraft 조언 너무 감사드립니다~!!


    제가 용어를 모르는게 좀 많아요 ㅎㅎ;

    시스템콜을 사용한다라는건  시스템상에 있는 프로그램(쉘스크립트 포함) 을 실행한다는 말씀이신가요.? 그걸 fork()라는 함수로 JVM에 할당된 메모리만큼 사용한다는거죠...?


    쉘스크립트를 사용하는 이유는 카메라 촬영된 데이터들이 일정용량과 일정 시간이 지나면 자동적으로 백업(http통신을 통해 외부서버에 저장) 할 수 있게 쉘스크립트로 짜려고 하고있습니다..    

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.