○ linux hostname 명령어(IP/NAME) 정리

- hostname -I : host IP

- hostname -A : host Name

 

ShellScript 작성 시 명령어 값 변수 선언 방식

#!/bin/bash

SERVER_HOST_NAME = $hostname -A
SERVER_HOST_IP = $hostname -I

'OS > Linux' 카테고리의 다른 글

Linux에서 Java class 실행시키기  (0) 2018.05.11
Package 이름으로 Process PID 찾기 (Java기준 작성)  (0) 2018.05.09

Linux에서 Java 클래스를 올려 실행시키는 방법에 대한 정리를 하겠습니다. Java클래스를 실행하기 전에

Linux서버에 java파일을 올리는 것이 첫번째로 해야 합니다. 당연히 java 파일이 있어야 컴파일과 실행을 진행할 수 있습니다.
첫번째로 서버에 저장하는 방법을 확인해보겠습니다!


작성한 java 파일, jar를 서버에 저장하기

- FTP 클라이언트 소프트웨어 파일질라(FileZilla)를 이용하여 간편하게 서버에 접속하고 파일을 저장한다.

파일질라(FileZilla) : 오픈 소스 크로스 플랫폼의 자유 소프트웨어인 FTP 소프트웨어로
파일질라 클라이언트와 파일질라 서버로 구분되어 있다.

서버와 클라이언트의 파일 업/다운로드를 간편하게 할 수 있도록 도와준다. (다운로드 링크 https://filezilla-project.org/)


Linux에서 Java 실행 시키기

1. 패키지 선언이 선언이 된 java 파일을 컴파일하여 실행하기

간단하다. 올린 클래스 파일에 대해 linux 명령어로 컴파일을 하고 실행시킨다.


- java 파일 컴파일 하기

 [root@dev test]javac . HelloWorld.java

위 명령어는 현재 디렉토리에 HelloWorld.java 파일이 존제해야 실행 가능하다.
명령어에 존재하는 점(.)은 현재 디렉토리를 classpath로 지정하겠다는 의미이며
java 실행시 class 파일을 찾을 때 사용되는 경로(classpath)가 된다.

다음으로 java 명령어를 이용해 컴파일 된 class를 실행시키면 된다.

- 컴파일 된 class를 실행시키기

 [root@dev test] java HelloWorld.class

 

2. Jar 파일을 classpath에 추가한 후 컴파일하여 실행하기

먼저 Jar 파일이 무엇인지 확인해보자 

Jar = Java Archive(자바 아카이브)

여러개의 파일을 하나로 묶어서 실행할 수 있게 도와주며
jar로 만들었을 때 프로그램의 경로나 파일의 위치에 상관없이 실행이 가능한 .jar 형식의 파일이다.

1) 실행가능한 jar 파일 만들기

eclipse로 project java를 만들었다면 내부 Export 기능을 이용하여 더 편리하게 할 수 있으나
Linux내용 포스트이기 때문에 명령어로 정리해 작성해보자!!!!!

작성한 java 파일이 2개 이상이라면 먼저 실행되어야 하는 main() 함수가 어떤 class에 존재하는지 위치를 지정해야 한다.
위치에 대한 정보를 가지고 실행시 정보를 전달해주는 manifest.txt 파일을 먼저 생성한다.

두개의 예시 class로 확인해보자 ( ex-class : HelloWorldMain.class, HelloWorldSub.class )
예시는 HelloWorldMain.java, HelloWorldSub.java가 컴파일 된 상태에서 시작하니 위 1번을 참고한 후 진행한다.

- manifest.txt 파일 생성

[root@dev test] vim manifst.txt
>Main-Class :HelloWorldMain

이후 jar 명령어를 이용해 jar 파일을 생성한다.

- jar 파일 생성 example (Hello.jar 생성)

 [root@dev test] jar -cvmf manifest.txt Hello.jar *.class

 

Linux 서버 내에서 tomcat이 아닌 Java Application으로 만들어 Socket프로그램을 계속 돌릴 수 있게 하기 위해
Java Class 세개와 시작과 중지를 담당하는 두 개의 shell script를 만들게 되었습니다.

작업을 진행하면서 사용하게 된 Linux PID 얻기 관련 명령어를 정리해보겠습니다.

 


1. 프로세스 PID 확인하기

 ps -ef | grep com.socket.server.Server

현재 패키지(com.socket.server)에 클래스(Server)가 프로세스로 실행이 되고 있는지 확인하는 명령어이다.


cmd Result

[root@dev test]# ps -ef | grep com.socket.server.Server
root     32298     1  0 09:46 pts/1    00:00:02 /usr/local/java/bin/java -server -mx128M -ms64M -cp :./lib/TomcatActionSocket.jar:./lib/log4j-1.2.17.jar -DServerHome=. -Dpid=32297 com.socket.server.ServerSocketConnect
root     32545 32059  0 11:05 pts/2    00:00:00 grep com.socket.server.Server

 

 

2. 프로세스 PID만 얻어오기

 ps -ef | grep com.socket.server.Server | awk '{print $2}'

위 1번 cmd를 실하면 result와 같이 process정보를 각 열로 정리해서 보여준다
우리가 원하는 PID 정보는 2열에 존재하며 awk '{print $2}'를 붙이면 원하는 결과를 가져올 수 있다.

print 숫자에 따른 값 정보

$1 (권한)

$2 (Process ID)

$3 (부모 Process ID)

 $4~~ (etc)

 root

33298

 1

 ....(이 외 정보들)

참고로 awk '{print $2}'에 숫자는
awk '{print $1, $2}', awk '{print $1 $2}' 등 원하는 정보값을 열에 맞게 설정해서 가져올 수 있다.


cmd Result

[root@dev test]# ps -ef | grep com.socket.server.Server | awk '{print $2}'
32298
32583
[root@dev test]# ps -ef | grep com.socket.server.Server | awk '{print $1,$2}'
root 32298
root 32586

 

 

3. 얻어 온 PID정보를 파일로 저장하기

 ps -ef | grep com.socket.server.Server | awk '{print $2}' > pid

검색한 정보를 현재 디렉토리에 pid라는 이름으로 저장하는 명령이다.
이번 프로젝트를 하면서 개인적으로
PID값을 저장해서 shell Script에서 for문을 사용할 때 pid라는 파일을 불러와 사용하고 있다.


cmd Result

[root@dev test]# ps -ef | grep com.socket.server.Server | awk '{print $2}' > pid
[root@dev test]# vim pid
32005
32293

 

'OS > Linux' 카테고리의 다른 글

[ShellScript] Host IP/Name 불러오기, 변수선언  (0) 2021.01.19
Linux에서 Java class 실행시키기  (0) 2018.05.11

+ Recent posts