본문 바로가기

Linux96

[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.
[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.
[Linux] DNS에서 'CNAME'과 'A 레코드(A Record)'의 차이 블로그의 2차 주소를 관리할 때, 가비아나 후이즈 같은 DNS를 이용한다. DNS에서 커스텀 도메인을 사용할 때, 서브 도메인을 등록하기 위해서 CNAME과 A 레코드 같은 정보를 관리 페이지에서 등록하게 된다. CNAME과 A 레코드 모두 서브 도메인을 등록하기 위해 필요한 정보인데 정확히 어떤 차이가 있는지 알아 둘 필요가 있다. DNS (Domain Name System) 우선 DNS(Domain Name System)부터 알아야한다. 인터넷을 구성하고 있는 서버들은 IP 주소가 할당되어 있다. IPv4의 경우 192.168.0.1 같은 숫자로 구성되어 있다. 이 IP 주소를 알면 특정 서버에 접속할 수 있다. 하지만 IP 주소는 의미가 없는 유니크 값에 불과하다. 때문에 사용자들이 외우기 힘들다... 2021. 2. 16.
[Linux] 톰캣(Tomcat) 재시작 명령 아파치 톰캣을 이용하는 시스템을 운영하다가 배포에 문제가 생겼다. 구동중인 톰캣을 재시작해야 할 일이 생겼는데, 어떤 명령으로 톰캣을 재시작 할 수 있는지 찾아봤다. 톰캣이 설치된 디렉토리를 $TOMCAT_HOME이라고 할 때, 톰캣과 관련된 바이너리는 $TOMCAT_HOME/bin 디렉토리에 모여있다. 톰캣을 재시작하는 명령은 이곳에 있는 스크립트를 실행하는 것으로 대체할 수 있다. $ $TOMCAT_HOME/bin/shutdown.sh $ $TOMCAT_HOME/bin/start.sh 종료후 시작 명령을 날려주면 된다. $ ps -aux | grep {user id} | grep tomcat 이 명령을 실행하면 현재 머신에서 로그인한 사용자 계정으로 구동시킨 톰캣 서버의 프로세스 정보를 확인할 수 있.. 2021. 2. 11.
[Linux] 디스크 입출력(I/O) 성능 측정하기 - dd, hdparam 명령 빅데이터 클러스터에서 각 호스트 장비의 입출력 성능은 매우 중요하다. 장비의 스펙이 바뀌거나 HDD에서 SSD로 구성을 변경할 때 서버의 입출력 성능을 측정해보고 싶을 때가 있다. 디스크 확인 (df -h) 우선 테스트해볼 디스크 장비를 확인해봐야한다. 시스템에 마운트되어 있는 파일 시스템 정보는 df 명령을 이용해 확인할 수 있다. $ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 63G 2.2G 58G 4% /data1 df 명령의 -h 옵션을 이용하면 사람이 읽을 수 있는 (Human Readable) 형태로 정보를 출력해준다. /dev/sda1 디스크에 대한 입출력 성능 측정을 진행하겠다. 1. dd 명령 - 쓰기 성능 테스트 가장 간단하.. 2020. 11. 19.
[Linux] 임시 디렉토리 '/tmp' 삭제 관련 설정, 'tmpwatch' 설정 파일 유닉스 계열의 운영체제에서는 임시 파일을 '/tmp' 디렉토리에 생성한다. 이 경로에 생성한 파일은 시스템이 재부팅될 때 혹은 주기적으로 커널이 지워주기 때문에 별도로 관리를 하지 않아도 된다. '/tmp' 디렉토리에 생성된 임시파일을 정리하는 규칙은 리눅스 구현체마다 조금씩 다르다. Ubuntu 데비안(Debian) 계열의 리눅스의 경우 시스템이 재부팅되는 경우에 '/tmp' 디렉토리가 지워진다. 이는 기본 값이고 /etc/default/rcS 파일에 임시 디렉토리 삭제와 관련된 룰이 저장된다. 대략 다음 내용이 저장되어 있다. # /etc/default/rcS # # Default settings for the scripts in /etc/rcS.d/ # # For information about t.. 2020. 11. 18.