본문 바로가기

Old Posts226

[Linux] 리눅스 시스템 로그 파일들 정리 리눅스 서버를 운영하다보면 다양한 형태의 장애 상황을 만나게 된다. 갑자기 CPU 사용률이 100%를 친다던가 네트워크 대역을 전부 소모해버린다던가, 메모리 사용량이 폭증하는 등의 이벤트가 발생할 수 있다. 이 경우 리눅스에서 남기는 다양한 로그 정보들을 열어보면서 문제를 분석할 수 있다. 리눅스의 로그들은 주로 /var/log 디렉토리에 저장된다. 이 디렉토리에는 다양한 시스템 로그 파일들이 기록된다. /var/log/messages 시스템에 문제가 생겼을 때 가장 먼저 확인해보는 로그 파일이다. syslog.conf 설정 파일에 로그를 남기지 않도록 지정된 내용을 제외한 모든 항목들이 기록된다. 많은 항목들이 기록되기 때문에 일반적으로 grep 명령어를 통해서 확인한다. /var/log/secure .. 2021. 6. 16.
[Java] LinkedHashMap 사용법 및 예제 - HashMap과 차이점 LinkedHashMap Map 인터페이스를 구현한 클래스 중에 TreeMap과 HashMap은 매우 단순해서 많이 사용된다. 그 외에 조금 특이한 Map 클래스들이 있는데 LinkedHashMap이 그 중 하나다. LinkedHashMap은 Map에 입력된 순서를 기억하는 자료구조다. LinkedHashMap에 저장되는 키와 값은 Map.Entry 클래스를 구현한 Node 클래스에 저장된다. Node 클래스에는 before, after 멤버가 있는데, LinkedHashMap에 입력된 순서에 따라 연결 리스트 구조를 형성한다. LinkedHashMap 사용법 LinkedHashMap은 기본적으로 HashMap이다. 사용법은 HashMap과 동일하다. HashMap에 대해서 정리해 놓은 포스트를 참고하자.. 2021. 6. 16.
[Java] TreeMap 사용법 및 예제 TreeMap TreeMap은 이진트리를 기반으로 Map 인터페이스를 구현한 컬렉션 클래스다. HashMap과 마찬가지로 키와 값(Key-Value) 쌍을 저장한다. HashMap은 키의 해시값을 기반으로 해시테이블을 구축하는 반면 TreeMap은 키 값을 이용해서 이진트리를 구축하고, 이진 트리의 노드에 값을 엔트리(Entry) 형태로 저장한다. 이진트리를 구축했기 때문에 키 값에 따라 정렬된 상태로 저장한다. TreeMap이 키와 값을 내부에 저장하는 이진트리는 '레드-블랙트리(Red-Black Tree)'로 구현되어있다. 일반적인 이진트리의 성질에 균형잡힌 트리(Balanced Tree)의 특성을 부여한 이진트리로 노드들이 트리의 전반에 걸쳐 고르게 분포된다. (이는 곧 Skew 되지 않음을 의미하.. 2021. 6. 14.
[Java] HashMap 사용법 및 예제 HashMap 자바에서 제일 많이 사용되는 컬렉션 객체 중 하나가 바로 HashMap 일 것이다. HashMap은 Map 인터페이스를 구현한 대표적인 클래스로 Map의 특성을 그대로 이어받았다. HashMap은 키와 값으로 구성된 엔트리(Entry) 객체를 저장하는 자료구조로 키 객체의 해시코드를 이용해서 해시테이블을 탐색, 값을 가져오는 동작을 한다. HashMap에서 동일한 키에 대응되는 값은 하나만 저장할 수 있다. 따라서 동일한 키에 대응되는 값을 여러번 put() 메소드로 추가하면, 기존의 값은 덮어쓰여지고 마지막에 추가한 값이 살아남게 된다. HashMap은 이름에서도 알 수 있듯이 해시코드를 이용해서 값을 탐색한다. 따라서 특정 키에 해당하는 값을 빠르게 찾아올 수 있다는 장점이 있다. Ha.. 2021. 6. 10.
[Linux] 명령행(터미널)에서 메일 보내기 - sendmail, mail(mailx) 명령 사용법 및 예제 모니터링 스크립트를 작성하고 crontab을 이용해서 주기적으로 실행하도록 설정하는 경우, 문제가 생겼을 때 메일을 통해서 원격으로 리포트를 받아보길 원할 때가 있다. 리눅스에서는 이런 경우 메일 전송을 해주는 유틸리티를 이용해서 모니터링 결과를 메일로 전송할 수 있다. sendmail 설치 CentOS 기준 yum을 이용해서 sendmail을 설치해준다. $ sudo yum install sendmail sendmail-cf -y 그리고 sendmail 서비스를 실행해준다. $ sudo systemctl start sendmail.service $ sudo systemctl enable sendmail.service mailx 설치 CentOS 기준, yum을 이용해서 mailx를 설치해준다. $ su.. 2021. 6. 9.
[Linux] mktemp 명령 사용법 및 예제 - 임시 파일 만들기 Bash 스크립트를 작성하다가 임시로 파일을 만들어서 사용하고 싶은 경우가 있다. 특정 파일 경로를 사용하면 스크립트를 동시에 실행할 경우 파일의 내용이 덮어쓰여지게 된다. 따라서 현재 실행 중인 프로세스에서만 접근할 수 있는 임시 파일을 생성할 필요가 생길 수 있다. 이럴 때 mktemp 명령을 사용하면 편하다. mktemp 사용법 mktemp 명령은 다음과 같이 사용할 수 있다. $ mktemp /tmp/tmp.Jgx8ybtklqk mktemp 명령을 실행하면 /tmp 디렉토리에 임의의 파일이 생성되고 생성된 파일의 이름이 리턴된다. 스크립트 내에서 임시로 사용할 파일을 생성할 때, 이 명령을 사용하고 출력되는 파일 이름을 사용하면 된다. -d 옵션을 이용해서 임시 디렉토리도 생성할 수 있다. $ m.. 2021. 6. 8.
[Java] TreeSet 사용법 및 예제 TreeSet TreeSet 클래스 역시 Set 인터페이스를 구현한 클래스다. Set 인터페이스를 구현했기 때문에 데이터에 대한 중복 저장을 하지 않으며, 저장된 순서를 유지하지 않는다. 해시코드를 이용해서 내부 해시 테이블에 데이터를 저장하는 HashSet과 다르게 TreeSet은 내부에 데이터 저장을 위한 RB-Tree(Red/Black Tree) 자료구조를 가지고 있다. RB 트리는 이진탐색트리(Binary Search Tree)의 일종으로 저장된 값들이 트리 전체에 고루 저장되도록하여 비정상적으로 트리의 높이가 높아지는 현상이 없게 만든 균형트리(Balanced Tree)다. 아무튼 내부에 RB 트리를 이용해서 값을 저장하기 때문에 현재까지 저장된 값들 중 최소 값 혹은 최대 값을 출력할 수 있으.. 2021. 6. 4.
[Java] HashSet 사용법 및 예제 HashSet HashSet 클래스는 Set 인터페이스를 구현한 클래스다. HashSet 클래스의 속성을 알아보기 전에 Set에 대해서 알 필요가 있다. Set은 우리말로 '집합'이라는 뜻을 가지고 있다. Set에는 데이터를 중복해서 저장할 수 없다. 동일한 데이터를 여러번 Set에 추가하더라도 결국 Set에는 하나의 데이터만 저장된다. HashSet은 데이터를 추가한 순서를 기억하지 않는다. 추가된 데이터를 정렬해주지도 않는다. 따라서 ArrayList처럼 인덱스를 통한 접근은 불가능하다. HashSet에 데이터를 추가하면, 객체의 hashCode() 메소드를 이용해서 HashSet에 추가하려는 데이터의 해시코드가 존재하는지 확인한다. 만약 동일한 해시코드를 갖는 객체가 존재한다면 equals() 메소.. 2021. 6. 3.
[Java] Deque (덱/데크) 사용법 및 예제 Deque(덱/데크) 덱은 Double-Ended Queue의 줄임말로 큐의 양쪽에 데이터를 넣고 뺄 수 있는 형태의 자료구조를 의미한다. 하나의 자료구조에 큐(Queue)와 스택(Stack)을 합쳐 놓은 형태라고 생각하면 된다. Deque의 앞쪽으로 데이터를 넣고 뒤쪽에서 빼면, 큐(Queue)처럼 사용할 수 있고, Deque의 앞쪽에 넣고 다시 앞쪽에서 빼면 스택(Stack)처럼 사용할 수 있다. 덱은 양쪽으로 입출력이 모두 가능하지만 이 중에 한쪽으로만 입력이 가능하도록 설정한 덱을 스크롤(Scroll)이라고 하며, 한쪽으로만 출력할 수 있도록 설정한 덱을 셸프(Shelf)라고 한다. Deque 사용법 Deque 생성 자바에서의 Deque은 인터페이스로 구현되어 있다. Deque deque1 = n.. 2021. 6. 1.