Linux 159

ulimit 설정

ulimit 접속하는 쉘이나 프로세스가 사용할 수 있는 자원을 조절한다. 즉, 실행시킨 프로세스가 동시에 사용할 수 있는 파일 수 등을 조절할 수 있다. Hard Limit : -H. 한 번 설정되면 root 권한으로만 값을 증가시킬 수 있다. Soft Limit : -S. hard limit까지 조절될 수 있다. 옵션을 명시하지 않으면, 두 값이 동시에 설정된다. 설정 확인 ulimit -a # -a : 모든 값 출력 # -n : open file descriptor의 최대 수 # hard 설정 확인 ulimit -a -H # soft 설정 확인 ulimit -a -S 설정 ulimit # 예시 : max user process 값을 2048로 설정 ulimt -u 2048 명령어를 이용한 설정은 휘발..

Linux 2021.09.13

[Shell Script] 반복문

매번 구글링 해서 찾기 때문에 적어둔다. FOR 문 1. 리스트 내 요소에 대해 반복적으로 작업을 실행한다. for var in val1 val2 val3 do # CMD done var는 변수 이름이며, 값은 공백을 구분된다. foreach 문과 유사하다고 생각하면 된다. 예시) #! /bin/bash for var in 1 2 3 4 5 do echo $var done 2. 리스트가 숫자인 경우에는 중괄호를 이용하여 시작 값과 종료 값을 지정할 수 있다. # start값부터 end값까지 반복. 1 씩 증가. for var in {start..end} do # CMD done # start값부터 end값까지 반복. gap값 씩 증가. for var in {start..end..gap} do # CMD ..

Linux/Shell Script 2021.09.12

vm.overcommit 허용 설정

리눅스 서버의 vm.overcommit 허용 설정 확인과 설정 방법을 정리해둔다. 설정 확인 cat /proc/sys/vm/overcommit_memory 값 의미 0 기본값. 적당히(hueristic) overcommit 허용 1 항상 overcommit. 항상 메모리 할당에 성공한다. 2 제한적으로 overcommit 허용. 가용 메모리 내에서만 할당 가능 설정 변경 echo 1 > /proc/sys/vm/overcommit_memory echo 명령으로 값을 설정할 수 있다. 시스템 설정을 변경하는 작업이기 때문에 root 권한이 필요하다. memory commit 프로세스는 시스템 콜을 사용해 커널에 메모리를 요청한다. 커널을 시스템 콜을 받고 해당하는 메모리 영역의 주소를 전달자로 반환하는데, ..

Linux 2021.09.11

THP(Transparent Huge Pages) 비활성화

THP 리눅스는 Page 단위로 메모리를 관리하고 사용하는데, 기본적으로 페이지 크기는 4096 Bytes (4K)이다. THP는 페이지 크기를 MB, GB 등으로 할당하여 사용하는 기능 RHEL 6 이후 기본적으로 활성화되어 있다. 성능 이슈로 인해 리눅스 서버의 THP 설정을 변경하고자 한다. THP 설정 확인 cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/defrag 대괄호로 표시된 값이 현재 설정된 값이다. THP 설정 변경 (비활성화) echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/..

Linux 2021.09.09

홈 디렉터리 수동 생성

useradd 명령으로 사용자를 생성하다, 깜박하고 -m 옵션을 사용하지 않았더니 홈 디렉터리 없이 사용자가 생성되었다. 홈 디렉터리가 없으면, alias나 PATH 정보가 저장되는 사용자 설정 파일도 없어 꽤 불편하다. 사용자가 서버를 정상적으로 이용할 수 있도록 홈 디렉터리를 수동으로 생성해본다. 홈 디렉터리 생성 작업에는 root 권한이 필요하다. 방법 1. 홈 디렉터리 생성 mkdir /home/ 일반적으로 홈 디렉터리 경로는 /home 경로 아래에 사용자 이름과 같게 경로가 설정된다. 정확한 경로를 확인하고 싶다면, /etc/passwd 내용을 확인하는 것이 좋다. 일단 디렉터리를 생성하기만 해도 cd 명령 사용 시 에러는 발생하지 않게 된다. 2. 사용자 정보 복사 새로 생성한 홈 디렉터리에는..

Linux 2021.09.08

rc.local - 부팅 시 실행 스크립트

rc.local 부팅 시 자동으로 명령어나 스크립트를 실행하는 방법 중 하나 rc는 Run Command의 약자이다. 시스템 부팅 시 가장 마지막에 실행된다. 루트 권한으로 실행되며, 정상적으로 실행되지 않는 경우에는 실행 권한이 있는지 확인해봐야 한다. PATH와 같은 환경 변수가 설정되지 않을 수 있기 때문에 환경 변수를 설정하거나, 절대 경로로 명령어를 지정하여 실행하는 것이 좋다. /etc/rc.d/rc.local 파일로 심볼릭 링크가 걸려있을 수 있다. /etc/init.d/rc.local /etc/rc.local이라는 파일이 존재하는 경우, 해당 파일을 실행시킨다. 아래는 /etc/init.d/rc.local의 정보이다. #! /bin/sh ### BEGIN INIT INFO # Provide..

Linux 2021.09.07

>/>> - 입출력 리다이렉션

표준 입력(Standard Input) 쉘에서 키보드로 명령을 입력받는 것 표준 출력(Standard Output) 키보드로 입력 받은 명령의 실행결과를 모니터로 출력하는 것 표준 에러(Standard Error) 키보드로 입력 받은 명령의 에러 메시지를 모니터로 출력하는 것 입출력 리다이렉션 표준 스트림의 흐름 변경 리다이렉션을 사용하여 출력과 입력의 방향을 지정할 수 있다. 기호 방향 의미 > 표준 출력 명령의 결과를 파일로 저장(write or overwrite) >> 표준 출력 명령의 결과를 파일에 덧붙여 저장(append) & 명령의 결과와 에러를 파일로 저장 &>> 2>&1 명령의 결과와 에러를 파일에 덧붙여 저장. &>>는 2>&1로 대체되었다. >! 파일을 생성하고 명령의 결과를 파일에 저..

Linux 2021.09.03

crontab 백업

crontab 실행 옵션 중 -r은 현재 설정된 크론탭을 삭제한다. 개발서버는 그래도 괜찮겠지만 운영서버에서 크론탭을 삭제해버리면 꽤 곤란하다. 실시간으로 계속 수행하는 작업이 있다면 장애로 이어질 수 있을 뿐만 아니라, 깐깐한 이는 책임소재를 묻기 위해 시스템 로그를 다 확인하는 지난한 작업도 개의치 않는다. 그리고 실수할 때의 손은 무조건 눈보다 빠르기 때문에 인지했을 때는 이미 늦어있을 것이다. 혹시 크론탭을 날려도 바로 복구할 수 있도록 백업을 해두는 것이 좋다. 백업 방법은 간단하다. 백업 스크립트를 생성해서 크론탭에 등록하면 된다. 방법 1. 백업 스크립트 작성 #!/bin/bash DATE=`date +%Y-%m-%d` USER="$(id -un)" crontab -l > $backup_cr..

Linux 2021.09.02

sed - 문자열 치환

개요 2021.07.26 - sed - 쉘에서 파일 내용 일부 삭제에 이어 이번 글은 명령어로 파일 내에 특정 문자열을 찾아 다른 문자열로 바꾸려고 한다. 엑셀이나 텍스트 편집기의 ctrl + f 후, 바꾸기 기능이라고 생각하면 된다. 명령어 sed -i 's///g' # -i : 편집 결과를 파일에 저장 # 예시 sed -i 's/#/=/g' text.txt s/// SERACH에 해당되는 문자열을 찾아서 REPLACE로 치환한다. 일반 텍스트 또는 정규표현식을 사용할 수 있다. g 한 행에 같은 내용이 여러 번 나타나도 모두 치환한다. 예시 결과 여러 파일 한 번에 변경 파일 지정 시 *을 사용하면 해당하는 파일을 한 번에 변경할 수 있다. 예시 sed -i 's/#/=/g' *.txt sed -i ..

Linux 2021.08.24

last reboot - 마지막 재부팅 시간 확인

last reboot 시스템 재부팅 로그 확인 사용자의 로그인 시간을 확인하는 last 명령 중 부팅 시간만을 표시하며, 시간을 기준으로 내림차순 정렬로 보여준다. 명령어 last reboot 실행 결과 재부팅 당시의 리눅스 커널 정보, 재부팅 시간, 재부팅 후 가동 시간을 표시한다. 리눅스 커널 정보 : 4.14.219-164.354 재부팅 시각 및 종료 시각 : Sun Aug 15 04:31 - 04:54 가동 시간 : (00:22) 즉, 가장 마지막으로 재부팅된 시각은 8월 15일 4시 31분으로, 13분 동안 동작하다 시스템 종료되었다. 제일 마지막으로 재부팅했을 때만 표시하고 싶다면 아래 명령어를 이용하면 된다. last reboot | head -n l

Linux 2021.08.21