- 개요 : 유닉스(솔라리스) OS에서 Java Application을 운영하면서 사용했던 명령어들을 두번째로 정리해본다.
- 서비스 운영자로서 기본 유닉스 사용법 정리는 이전 블로그 참고
목차
1 | 1. nslookup |
nslookup
- DNS에 등록된 domain name을 ip addresss 반환
1
nslookup www.google.com
hostname
- hostname 확인 방법
1
2
3$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 storycompiler - 관련문제: Java 프로세스에서 UnKnownHostException 발생시, DNS에서 host이름으로 IP를 못찾는것!
- 해결방법: 로컬 캐시(/etc/hosts에 정보 기입) 및 networking restart
- 참고: https://storycompiler.tistory.com/118
1
2$ sudo /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.
telnet/ping/tracert
- telnet : 텔넷 접속 명령어
- 활용: 방화벽 오픈(Ip/port) 확인용으로 주로 사용, 방화벽이 열리지 않은 경우 접속 실패 발생
1
telnet ip port
- ping: target ip로 네트워크 상태 확인(패킷 전송 및 응답 수신)
- 활용 : 주로 상대방 서버의 live상태를 체크 및 방화벽 오픈 여부 목적으로 사용
1
ping ip 옵션
- tracert (리눅스 traceroute): ip 라우팅 경로 추적
- 활용 : 내부망/외부망이 분리된 경우, 인터넷망에서 접속 실패/다운로드 실패시에 라우팅 경로를 확인하여 문제를 찾아볼수 있다.
1
tracert ip
- 기타(windows): 접속 사이트별 응답정보 확인용으로
fiddler 설치 및 확인 : https://www.telerik.com/fiddler
터미널 SSH 접속
1 | ssh -p 15022 user@123.123.123.123 |
Shell 특수문자와 2>&1의 의미
- $! : 최근 백그라운드 작업의 프로세스 번호
- 활용: 프로세스 pid를 저장해두고 stop shell에서 kill pid로 죽일때 사용가능
1
echo $! > $HOME/bin/pid/stop_pid.sh
- 2>&1 : 2(standard err)를 &1(standard output과 같은 파일로) >(redirect한다)
설명: 표준에러를 표준출력 파일과 같은 stream(파일)로 write한다.
1
2
3
4java -Dtype=TEST com.test.java test.cfg > test.out 2>&1 &
#java프로세스를 실행하는데 test.out파일로 표준출력을 write함.
#그리고 표준에러도 표준출력과 같은 파일로 쓰고, java프로세스는 백그라운드(&)로 실행
#표준에러를 파일에 쓰도록 했기때문에, 화면(screen)에 Exception내용이 찍히지 않음
파일 생성시간 기준으로 찾기/삭제하기
- 참고: https://joont.tistory.com/129
- 방법: find의 -newer 옵션(지정한 파일의 날짜보다 이후에 수정된 파일을 찾아주는 옵션) 활용
1
2
3
4
5
6
7
8
9
10
111) touch -t 20160501 begin (우분투는 yyyyMMddhh24mi 까지 입력해야 됨?)
2-1) find . -newer begin -print
> begin 파일보다 이후에 수정된 파일을 검색합니다. 즉, 2016년 5월 1일 이후의 파일을 검색하게 되는것이죠.
2-2) find . ! -newer begin -print
> find의 부정연산자를 사용하면 2016년 5월 1일 이전의 파일도 검색 가능합니다.
2-3) touch -t 20160530 end, find . -newer begin -a ! -newer end -print
>2016년 5월 1일부터 2016년 5월 30일 사이에 수정된 파일을 검색하는 방법입니다.
3) find . -newer begin -a ! -newer end | wc -l
> 개수 구하기
4) find . -newer begin -a ! -newer end -exec rm -f {} \;
> 삭제하기 (*주의: 반드시 . 현재디렉토리 기준으로 찾기바람, /를 쓰면 최상위 경로가 됨)
SWAP 메모리 추가(1G->3G할때)
크게 두가지 방식 partition(디스크 할당) or SWAPFILE(swap용 big file추가) 처리가 있음
partition이 존재할때 swapfile을 추가하여 간단하게 스왑메모리를 추가할수 있음.
참고2: https://steps4great.tistory.com/7 –swapfile 만들기
1
2
3
4sudo fallocate -l 2G /swapfile → swapfile 생성
sudo chmod 600 /swapfile → root 사용자만 사용할 수 있도록 권한 변경
sudo mkswap /swapfile → 스왑메모리로 변경
sudo swapon /swapfile → 스왑메모리 활성화재부팅시 swap메모리 남아있게 설정
1
2sudo vi /etc/fstab
입력내용 → /swapfile swap swap default 0 0스왑메모리 제거
1
2
3
4sudo vi /etc/fstab → 자동마운트 내용 제거 및 주석처리
sudo swapoff -v /swapfile
sudo swapoff on /swapfile
sudo rm -r /swapfile
웹서버 설정과 WAS Timeout설정
웹서버(Sun ONE) 설정파일
- /opt/sunone61/https-xxx/config/object.conf : URI 패턴을 등록하고 해당하는 요청일때 필터링 기능 동작
- /opt/sunone61/https-xxx/config/server.xml : 웹서버 포트등 설정
1
2
3<Object name="weblogic_do" ppath="*.do">
Service fn="wl_proxy" WebLogicCluster="xxx.xxx.xxx.xxx:9820,xxx.xxx.xxx.xxx:9820" DynamicServerList="OFF" Idempotent="ON" WLIOTimeoutSecs="3600" KeepAliveEnabled="false" CookieName="NLPS_ADMIN_JSESSIONID"
</Object>
설정파일(object.conf) 옵션 설명
- WLIOTimeoutSecs (HungServerRecoverSecs) : WLS로 request를 보내고 response를 받기 위해 대기하는 시간, default 300초
- KeepAliveEnabled : Plug-in과 WLS의 연결을 지속할 것인지 여부를 결정
client request를 처리한 후 WLS와의 연결을 닫아버릴 것인지 연결된 상태로 두었다가 다음 요청이 들어왔을 때 재사용할 것인지 설정
Default => true(Netscape and Microsoft IIS) & ON (Apache) - Idempotent (ON/OFF) :
WebLogic서버로 부터 request전송시 에러가 발생하거나, 서버로부터 결과를 기다리는 중에 위에 정의된 WLIOTimeoutSecs 시간 초과되어서 에러 발생시 요청을 다시 보낼 것인가를 지정
서버와 연결은 되었는데 그 이후에 에러가 발생 하였을 경우 해당 옵션이 ON이면 다시 연결을 시도하고, 요청을 보내게 되므로 중복 요청의 가능성이 있다. OFF권장
WAS Timeout 설정
- 세션 Timeout 설정:
- 웹로직 콘솔: 배치->프로젝트명->구성 > “세션시간초과” 항목
- 서버 xml파일
- web.xml : /WEB-INF 하위, web.xml의 경우에 단위는 분이다.
1
2
3<session-config>
<session-timeout>60</session-timeout>
</session-config> - weblogic.xml : 단위는 초이다.
1
2
3
4
5
6<session-descriptor>
<session-param>
<param-name>TimeoutSecs</param-name>
<param-value>3600</param-value>
</session-param>
</session-descriptor>