ProcessBuilder Java 쉘 명령어, 스크립트 실행

2023. 12. 26. 10:52·Java
728x90

 

쉘 스크립트 실행

1. ProcessBuilder 객체 생성

ProcessBuilder builder = new ProcessBuilder();

ProcessBuilder객체를 사용하여 Linux 또는 Window의 커맨드라인의 커맨드입력을 실행할 수 있다.

2. directory(new File(“파일경로”)) : 해당 커맨드를 실행할 경로

String homeDirectory = System.getProperty("user.home");
builder.directory(new File(homeDirectory));

3. command(“커맨드”) : 커맨드 입력메서드

builder.command("sh", "-c", "ls -l | grep P");

4. ProcuessBuilder.start() :커맨드 실행

  Process process = builder.start();

5. Process.getInputStream() : 커맨드 결과 반환

StreamGobbler streamGobbler = new StreamGobbler(process.getInputStream(),System.out::println);
class StreamGobbler implements Runnable {
    private InputStream inputStream;
    private Consumer<String> consumer;
    @Override
    public void run() {
        new BufferedReader(new InputStreamReader(inputStream)).lines().forEach(consumer);
    }
}
Executors.newSingleThreadExecutor().submit(streamGobbler);

Consumer

데이터(매개변수)를 소비(사용)하고 아무것도 생성(반환)하지 않습니다.
Consumer 인터페이스는 한 개의 제네릭 타입을 매개변수로 사용합니다.

Executors

쓰레드 생성.
제공된 작업(Runnable 구현체)을 실행 하는 객체가 구현해야할 인터페이스.
Thread를 만들고 관리하는 것을 고수준의 API Executors에게 위임합니다.
Runnable만 개발자가 만들고 생성, 종료, 없애기 작업(일련의 작업)들은 Executors가 해줍니다.

ExecutorService exr = Executors.newSingleThreadExecutor(); //   풀 안에 하나의 쓰레드만 생성하고 유지
exr.submit(task);    // 쓰레드 풀에 작업을 전달

1개이기 때문에 작업을 예약한 순서대로 처리를 합니다.

 

 

728x90
'Java' 카테고리의 다른 글
  • 자바 스트림(Stream), 람다(Lambda)
  • 자바 순열, 조합 구하기 (파이썬 itertools 라이브러리)
  • [Mac OS / Java] 맥 JDK 자바 버전 변경
  • 멀티 스레드 환경, 동시성 이슈, 해결방법 | 스레드 안전성 (Thread-safe)
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    힙
    알고리즘
    스택
    덱
    DP
    DFS
    최소신장트리
    그리디
    조합
    최대공약수
    LIS
    큐
    자료구조
    구간합
    Algorithm
    정렬
    트리
    월간코드챌린지
    백준
    동적계획법
    이분탐색
    프로그래머스
    그래프
    다익스트라
    파이썬
    최단거리
    플로이드워셜
    재귀
    BFS
    구현
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
ProcessBuilder Java 쉘 명령어, 스크립트 실행
상단으로

티스토리툴바