(이 글은 https://jukyellow.github.io/2021/03/05/linux-command/에서 이전한 포스팅 입니다.)

 

리눅스 변천사

                                   유닉스(커널)

                                                 SunOS(커널)
                                                     솔라리스(배포판, 상용)
             리눅스(커널)

     리눅스(무료)           레드헷 (상용)
우분투(무료)       페도라        센토스(무료)
 

OS버전 확인

솔라리스

- 커널 버전확인
$ uname -a
- 패키지버전 확인
$ cat /etc/relese

우분투

- 커널 버전확인
$ uname -a
- 패키지버전 확인
$ cat /etc/issue

CentOS

- 패키지 버전확인
$ cat /etc/system-release.

 


프로세스 목록

- 특정프로세스 확인
ps -ef | grep 문자열

조회 명령어

- 최신 변경 파일순 상세 조회
$ ls -alrt
- 하위 디렉토리까지 파일수 세기
$ ls -lR | wc -l
- 파일내 data 조회
$ grep -l "문자열" * // 모든 파일에서 검색, *제일 많이 씀
$ grep 문자열 파일명 // 특정 파일에서 문자열이 포함된 라인출력
$ grep -c 문자열 파일명 // 특정 파일에서 문자열이 포함된 라인의 갯수 출력

IP/PORT 체크

- Listen(점유) port 확인
$ netstat -an | grep 8040
- 방화벽 오픈여부 확인
$ telnet ip port
- 도메인의 IP 주소 확인
$ nslookup 도메인명

스토리지 용량체크

- 디스크 잔여 용량(disk free)
$ df -h  // 사용자가 보기 쉬운 단위로{KB, MB, GB} 잔여량 표시, *제일 많이 씀
$ df .   // 현재 디렉토리가 포함된 파티션의 남은 공간을 보여준다.
$ df -k  // Kilobyte 단위로 현재 마운트된 파티션들의 남은 공간을 보여준다.
$ df -F ufs -o i // inode 파일갯수 확인(100%차면 파일쓰기등 안됨)

-디스크 현재 사용량(disk Usage)
$ du -sh *  // 현재 디렉토리 사용용량(하위폴더 포함), *제일 많이 씀
$ du -h     // 현재 디렉토리의 사용용량(사용자가 보기쉬운값으로)
$ du -k     // Kilobyte 사용용량 표시
$ du -s * | awk '$1 > 100000'  // 특정용량 이상조회!
> 참고: https://ko.wikipedia.org/wiki/Du_(%EC%9C%A0%EB%8B%89%EC%8A%A4)

 

 

압축/해제

- 파일 압축
$ tar -cvf 파일이름  압축할파일 혹은 /디렉토리
- 파일 해제(압축풀기)
$ tar -xvf 파일이름

- jar 파일 리스트 보기
$ jar -tvf jar파일명
- jar 파일 압축 풀기
$ jar -xvf jar파일명
 

Session 관리

- 세션 타임아웃 변경
echo $TMOUT
export TMOUT=18000  # 5시간
echo $TMOUT

 

 

 

nslookup

  • DNS에 등록된 domain name을 ip addresss 반환
    nslookup www.google.com

hostname

  • hostname 확인 방법
    $ 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
    $ sudo /etc/init.d/networking restart
    [ ok ] Restarting networking (via systemctl): networking.service.

telnet/ping/tracert

  • telnet : 텔넷 접속 명령어
  • 활용: 방화벽 오픈(Ip/port) 확인용으로 주로 사용, 방화벽이 열리지 않은 경우 접속 실패 발생 
  • telnet ip port
  • ping: target ip로 네트워크 상태 확인(패킷 전송 및 응답 수신)
  • 활용 : 주로 상대방 서버의 live상태를 체크 및 방화벽 오픈 여부 목적으로 사용
    ping ip 옵션
  • tracert (리눅스 traceroute): ip 라우팅 경로 추적
  • 활용 : 내부망/외부망이 분리된 경우, 인터넷망에서 접속 실패/다운로드 실패시에 라우팅 경로를 확인하여 문제를 찾아볼수 있다.
    tracert ip
  • 기타(windows): 접속 사이트별 응답정보 확인용으로fiddler 설치 및 확인 : https://www.telerik.com/fiddler

터미널 SSH 접속

ssh -p 15022 user@123.123.123.123

Shell 특수문자와 2>&1의 의미

  • $! : 최근 백그라운드 작업의 프로세스 번호
  • 활용: 프로세스 pid를 저장해두고 stop shell에서 kill pid로 죽일때 사용가능
    echo $! > $HOME/bin/pid/stop_pid.sh
  • 2>&1 : 2(standard err)를 &1(standard output과 같은 파일로) >(redirect한다)설명: 표준에러를 표준출력 파일과 같은 stream(파일)로 write한다.
  • java -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) 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할때)

  • 참고1: https://htst.tistory.com/32
  • 크게 두가지 방식 partition(디스크 할당) or SWAPFILE(swap용 big file추가) 처리가 있음
  • partition이 존재할때 swapfile을 추가하여 간단하게 스왑메모리를 추가할수 있음.
  • 참고2: https://steps4great.tistory.com/7 –swapfile 만들기
  • sudo fallocate -l 2G /swapfile → swapfile 생성
    sudo chmod 600 /swapfile → root 사용자만 사용할 수 있도록 권한 변경
    sudo mkswap /swapfile → 스왑메모리로 변경
    sudo swapon /swapfile → 스왑메모리 활성화
  • 재부팅시 swap메모리 남아있게 설정
  • sudo vi /etc/fstab
    입력내용 → /swapfile swap swap default 0 0
  • 스왑메모리 제거
  • sudo vi /etc/fstab → 자동마운트 내용 제거 및 주석처리
    sudo swapoff -v /swapfile
    sudo swapoff on /swapfile
    sudo rm -r /swapfile

웹서버 설정과 WAS Timeout설정

웹서버(Sun ONE) 설정파일

  1. /opt/sunone61/https-xxx/config/object.conf : URI 패턴을 등록하고 해당하는 요청일때 필터링 기능 동작
  2. /opt/sunone61/https-xxx/config/server.xml : 웹서버 포트등 설정
    <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) 옵션 설명

  1. WLIOTimeoutSecs (HungServerRecoverSecs) : WLS로 request를 보내고 response를 받기 위해 대기하는 시간, default 300초
  2. KeepAliveEnabled : Plug-in과 WLS의 연결을 지속할 것인지 여부를 결정client request를 처리한 후 WLS와의 연결을 닫아버릴 것인지 연결된 상태로 두었다가 다음 요청이 들어왔을 때 재사용할 것인지 설정
    Default => true(Netscape and Microsoft IIS) & ON (Apache)
  3. Idempotent (ON/OFF) :WebLogic서버로 부터 request전송시 에러가 발생하거나, 서버로부터 결과를 기다리는 중에 위에 정의된 WLIOTimeoutSecs 시간 초과되어서 에러 발생시 요청을 다시 보낼 것인가를 지정
    서버와 연결은 되었는데 그 이후에 에러가 발생 하였을 경우 해당 옵션이 ON이면 다시 연결을 시도하고, 요청을 보내게 되므로 중복 요청의 가능성이 있다. OFF권장

WAS Timeout 설정

  • 세션 Timeout 설정:
  1. 웹로직 콘솔: 배치->프로젝트명->구성 > “세션시간초과” 항목
  2. 서버 xml파일
  • web.xml : /WEB-INF 하위, web.xml의 경우에 단위는 분이다.
    <session-config>
    <session-timeout>60</session-timeout>
    </session-config>
  • weblogic.xml : 단위는 초이다.
    <session-descriptor>
    <session-param>
    <param-name>TimeoutSecs</param-name>
    <param-value>3600</param-value>
    </session-param>
    </session-descriptor>

 

+ Recent posts