Old Posts226 [Java] SimpleDateFormat을 이용한 날짜 포맷 변환 예제 Java를 이용해서 시간 데이터를 다루는 방법에는 몇 가지가 있다. 그 중에 가장 간단한 방법은 SimpleDateFormat 클래스를 이용해서 문자열을 파싱하거나 문자열로 시간 데이터를 표현하기도 한다. 이번 포스트에서는 SimpleDateFormat 클래스의 사용방법과 예제, 주의 사항을 다뤄보겠다. SimpleDateFormat은 java.text.DataFormat 이라는 abstract 클래스를 상속받은 클래스다. 이름에서도 알 수 있듯이 간단하게(Simple) 날짜 포맷을 다룰 수 있는 메소드를 제공한다. SimpleDateFormat 예제 - 문자열을 Date 객체로 변환 문자열로 표현된 날짜 정보를 파싱하여 Date 객체로 변환해보자. // 변환할 문자열 String dateStr = "2.. 2021. 3. 30. [Linux] ulimit 옵션 사용법 및 설정법 시스템 리소스를 질서있게 사용하려면 시스템에서 동작하는 프로세서의 자원 사용 한도를 명확하게 정해둬야한다. 마치 어린이보호 구역에서는 30km/h 이하의 속도로 달리고 고속도로에서는 100km/h로 달리도록 정해놓는 것과 같다. 리눅스 시스템에도 여러가지 자원 사용의 한계값(limit)이 정해져 있다. 시스템 리소스의 한계값에는 'soft limit'과 'hard limit'이 있다. soft limit은 프로세스가 생성되면 기본적으로 적용되는 한도 값이다. 이 값은 변경될 수 있다. hard limit은 soft limit에서 최대로 늘릴 수 있는 값으로 시스템의 수퍼 유저만 바꿀 수 있다. 리눅스 시스템에서 자원의 한계 값을 확인하고 설정할 수 있는 명령어로 ulimit을 알아둬야한다. ulimit .. 2021. 3. 2. [Linux] nf_conntrack: table full, dropping packet 에러 - ssh connection timed out 대규모 클러스터를 모니터링 하는 과정에서 간혹 ssh 접속이 안되는 문제가 발생한다. 모니터링을 수행하는 서버에서 주기적으로 클러스터의 각 노드에 접속해서 동작하고 있어야하는 데몬들이 정상적으로 떠있는지를 확인하게 되는데, 이 과정에서 ssh 접속이 안되는 문제가 발생했다. sshd 등의 데몬은 정상 동작하고 있었다. 특이한 점은 특정 호스트에서만 접속 오류가 보고되는게 아닌 클러스터의 노드들이 랜덤하게 'ssh connectin timed out' 메시지를 보인다는 것이었다. 문제를 확인하기 위해 직접 문제의 서버로 ssh 접속을 하면 접속이 잘 된다. 하이젠버그를 몸소 체함하면서 문제의 원인을 분석해봤다. 1. nf_conntrack: table full dropping packet 메시지 ssh 접.. 2021. 2. 24. [Java] java.library.path와 LD_LIBRARY_PATH 리눅스 환경에서 자바 프로그램을 실행할 때 설정해줘야 하는 환경 변수 중에 LD_LIBRARY_PATH라는게 있다. LD_LIBRARY_PATH는 '로더(Loader)'가 공유 라이브러리나 동적 라이브러리를 찾을 때 찾아가는 경로를 지정하는 환경변수다. 맨 앞에 있는 LD라는 프리픽스(Prefix)가 로더를 의미한다. 리눅스 환경에서 실행 파일을 PATH 환경변수에 지정한 경로에서 찾는 것과 동일하다고 생각하면 된다. .bashrc 파일이나 스크립트 파일에서 다음과 같이 LD_LIBRARY_PATH 환경 변수를 지정해주면 된다. $ LD_LIBRARY_PATH=/home/user/lib:/home/user/test/lib $ export LD_LIBRARY_PATH PATH 환경변수처럼 각 경로들은 '콜.. 2021. 2. 23. [Linux] 현재 사용중인 리눅스 쉘 확인하기 리눅스 환경에서 개발을 하다보면 다양한 쉘(Shell)을 만나게 된다. 가장 많이 사용되는 Bash(Bourne-again shell)부터 zsh, csh, ksh 등 다양한 목적으로 개발된 쉘들이 있다. Bash만 지원하면 좋겠지만 때에 따라서는 여러가지 쉘에서 동작하는 스크립트를 작성해야하는 경우가 있다. 각 쉘마다 지원되는 명령이 약간씩 다르고, 출력 포맷도 다를 때가 있다. 때문에 현재 사용중인 리눅스 쉘을 확인해야할 경우가 있다. 현재 시스템에사 사용가능한 쉘 확인 현재 시스템에서 사용할 수 있는 쉘들의 목록을 보려면 /etc/shells 파일을 확인하면 된다. 지금 사용하고 있는 맥북에서 /etc/shells 파일을 조회해본 결과다. 리눅스는 출력 포맷이 약간 다를 수 있지만 파일의 내용이 의.. 2021. 2. 22. [Linux] 우분투, CentOS 패키지 관리자(apt-get, yum)의 update와 upgrade 차이 우분투(Ubuntu) 리눅스를 사용하는 유저들은 패키지를 설치하기 위해 apt-get 명령을 많이 이용한다. apt-get은 Advanced Packaging Tool의 약자로 우분투를 포함한 데비안(Debian) 계열의 리눅스에서 사용되는 패키지 관리툴이다. 터미널에서 명령을 통해 손쉽게 패키지를 설치할 수 있어 GUI 기반의 패키지 설치 도구보다 더 많이 사용되는 소프트웨어다. CentOS 리눅스를 사용하는 유저들은 yum 명령을 많이 사용한다. Yum은 Yellow dog Updater, Modified의 약자로 레드햇(RedHat) 계열의 리눅스에서 사용되는 패키지 관리툴이다. apt-get과 yum은 update와 upgrade라는 명령을 제공한다. 의미상으로는 유사해보이지만 분명 다른 역할을 .. 2021. 2. 21. [Linux] date 명령 - 과거와 미래 날짜, 시간 계산하기 Bash로 작성되는 스크립트에서 시간 포맷을 명령어 인자로 입력하는 경우가 많다. 현재 시간을 구하는 것은 물론이고 특정 시간에서 '몇 일전', '몇 일후' 같이 날짜 계산을 해야하는 경우도 많다. 시스템의 시간 정보를 얻어 올 수 있는 date 명령의 옵션을 이용하면 쉽게 날짜, 시간 계산을 할 수 있다. Date 명령 $ date 2021년 2월 11일 목요일 21시 09분 13초 KST 터미널에서 date를 입력하면 현재 시간을 가져올 수 있다. Date 명령 - '-d' 옵션 리눅스의 경우 date 명령의 -d 옵션을 이용해 과거 시간을 계산해 가져올 수 있다. date -d 'yesterday'# 어제 date -d '1 day ago'# 1일전 date -d '1 week ago'# 1주일전 .. 2021. 2. 20. [Linux] Bash - pushd, popd 명령 Bash에서 현재 작업 디렉토리를 변경하기 위해서 'cd' 명령을 사용한다. Change Directory라는 의미를 갖고 있는 cd 명령을 통해 디렉토리를 오가면서 작업을 할 수 있다. cd 명령 cd 명령은 bash 명령을 배울 때, "Hello world" 프로그램처럼 가장 먼저 배우는 명령어다. $ cd path 부분에 이동하려고하는 디렉토리 경로를 입력한다. 상대경로가 될 수도 있고, 절대경로가 될 수도 있다. $ cd - cd 명령을 이용해서 디렉토리를 변경한 다음 다시 이전 디렉토리로 돌아가고 싶은 경우 path 부분에 '-' 문자를 넣으면 된다. 리모컨의 '이전채널' 버튼을 생각하면 된다. cd 명령의 가장 아쉬운 점은 경로 변경의 히스토리를 저장하지 않는 다는 것이다. A-B-C-D 순으.. 2021. 2. 19. [Linux] lsof 명령어 설치 및 사용법 lsof는 list open files의 약자로 시스템에서 열려있는 파일에 대한 정보를 출력해주는 명령어다. (대략 '엘에스오브'라고 발음하는 것 같다) 리눅스와 유닉스는 일반 파일과 디렉토리, 소켓, 파이프, 블록 디바이스, 캐릭터 디바이스에 대한 관리를 파일 시스템을 통해서 할 수 있다. 따라서 특정 프로세스가 열고 있는 파일 디스크립터(fd)를 조회해보는 행위는 시스템을 모니터링하는데 굉장한 도움이 된다. 유닉스 계열의 운영체제에서는 프로세스가 열고 있는 파일을 지웠을 때, 파일 시스템에서 ls로 보이지는 않지만 reference count가 0이 아니기 때문에 실제로 지워지지 않고 남아있는 경우가 더러 있다. 이 때, 프로세스가 열고 있는 파일이 위치한 디스크를 정상적으로 언마운트할 수 없기 때문.. 2021. 2. 18. 이전 1 ··· 20 21 22 23 24 25 26 다음