본문 바로가기

linux

Linux - 리눅스 서버 튜닝: CentOS 7/8 & Ubuntu 18/20 성능 최적화 및 보안 강화 리눅스 서버를 처음 설치한 뒤 안정성과 성능을 높이기 위해 꼭 필요한 OS 튜닝 작업을 정리했습니다.이 가이드는 CentOS 7/8과 Ubuntu 18/20에서 공통적으로 적용할 수 있는 설정입니다.1. OS 기본 설정1.1 패키지 업데이트* CentOSyum update -y * Ubuntuapt update && apt upgrade -y 1.2 타임존 설정 및 시간 동기화서버 시간을 정확히 설정하여 로그 관리 및 작업 스케줄에 오류가 없도록 합니다.* 타임존 설정timedatectl set-timezone Asia/Seoul* 시간 동기화- Chrony 사용yum install -y chrony # CentOSapt install -y chrony # Ubuntusystemctl enable --n.. 더보기
Linux - OpenSSL 소스 설치 가이드: SSH 및 NTP 데몬 문제 해결 및 설정 OpenSSL을 소스 설치하거나 업데이트할 때, 설정이 꼬여서 SSH나 NTP 같은 중요 서비스가 실행되지 않을 수 있습니다.특히, OpenSSL은 시스템의 다른 패키지들과 많이 의존적이기 때문에 설치 시 경로 설정과 옵션을 신중히 설정해야 합니다.이번 글에서는 OpenSSL 설치 과정에서 발생한 문제 해결하는 방법을 정리합니다.1. 문제 상황: OpenSSL 설치 후 SSH와 NTP 데몬 오류OpenSSL을 소스 설치한 후, SSH나 NTP 데몬을 재시작할 때 아래와 같은 오류 메시지가 발생할 수 있습니다.# SSH 데몬 재시작 시 오류[root@localhost]# systemctl restart sshdStopping sshd: [ OK ]Starting sshd: [FAILED]OpenSSL ve.. 더보기
Linux - Crontab에서 Command Not Found 오류 해결 리눅스에서 crontab을 통해 주기적으로 명령어를 실행하려 할 때, 특정 명령어를 찾지 못해 "command not found" 오류가 발생하는 경우가 있습니다. 이는 crontab의 기본 PATH 설정이 제한적이기 때문인데요, 기본적으로 /usr/bin 등 제한된 경로만 인식하기 때문에 다른 경로에 설치된 프로그램이나 도구는 찾지 못하는 경우가 발생합니다. 이 글에서는 Python, Node.js 등 다양한 도구를 crontab에서 원활히 실행하기 위한 PATH 설정 방법을 알아보겠습니다. Crontab을 모른다면? Linux - Crontab (크론탭)Crontab 1. cron이란 : 일정시간마다 프로그램을 자동으로 실행시키는 데몬입니다. (Windows 의 작업스케줄러와 유사함) 2. crond.. 더보기
Linux - 리눅스 프로세스 감지 및 재시작 스크립트 | systemd & Crontab 활용 서버에서 프로세스가 비정상적으로 동작하거나 중단되는 상황에 자동으로 재시작하는 방법이 필요했습니다.systemd와 스크립트를 조합하여 서비스가 중단되었을 때 자동으로 재시작되도록 설정할 수 있습니다.스크립트 구조kill_my_service.sh: 특정 프로세스를 강제로 종료하는 역할을 합니다.check_my_service.sh: 주기적으로 프로세스 상태를 점검하고, 필요시 프로세스를 재시작합니다. 이 스크립트는 crontab을 이용해 매 분마다 실행됩니다.kill_my_service.sh#!/bin/bashfunction killProcess(){ while : do if [ `ps -ef | grep $1 | grep -v grep | wc -l` -eq 0 ] ; .. 더보기
Linux - 일반계정으로 1024이하 포트 사용방법 (setcap / getcap) 리눅스에서 1024 이하의 포트는 일반적으로 root 권한이 있어야만 사용할 수 있습니다.하지만 보안 이유로 인해 일반 사용자 계정으로 웹 서버(Apache 또는 Tomcat)를 실행해야 하는 경우가 많습니다.이때 capabilities 기능을 사용하여 일반 사용자도 root 권한 없이 1024 이하의 포트를 사용할 수 있습니다.Capabilities란?root 계정은 모든 권한을 갖고 있지만 일반 사용자 계정에게 root 권한을 부여하지 않으면서 특정 작업을 허용하려면 capabilities 기능을 사용할 수 있습니다. root 권한을 나누어 특정 작업(예: 포트 바인딩)을 수행할 수 있게 해 줍니다.특히 cap_net_bind_service라는 권한을 사용하면 일반 사용자도 1024 이하의 포트(“p.. 더보기
Linux - 리눅스 jq 명령어 사용법 | JSON 데이터 필터링 및 파싱 방법 1. jq란 무엇인가?jq는 JSON 데이터를 처리하고 파싱 할 수 있도록 도와주는 유틸리티입니다. 마치 sed나 awk처럼 사용되며, JSON 포맷의 데이터를 필터링하고 변환하는 데 특화되어 있습니다. 복잡한 JSON 데이터 구조에서 특정 값만 추출하거나 데이터를 재구성하는 데 매우 유용합니다.2. jq 설치하기 # aptsudo apt-get updatesudo apt-get install jq# apt(select version)sudo apt-get install jq=1.5*# yumsudo yum install jq# yum(select version)sudo yum install jq-1.5# dnfsudo dnf install jq# source codegit clone cd jqautor.. 더보기
Linux - /proc/[PID]/status 파일 정보 리눅스에서는 각 프로세스에 대한 정보를 /proc 디렉토리를 통해 확인할 수 있습니다. 이 디렉토리는 시스템이 동작하는 동안 생성되며, 각 프로세스에 대한 상태 정보를 제공하는 가상 파일 시스템입니다. /proc 아래에는 각 프로세스 ID(PID)를 이름으로 하는 디렉토리가 있으며, 그 아래 status라는 파일을 통해 해당 프로세스의 상세 정보를 확인할 수 있습니다./proc/[PID]/status 파일 개요status 파일은 프로세스의 상태를 설명하는 정보가 있고 성능 모니터링, 문제 해결, 시스템 최적화를 위해 사용합니다.주요 정보 필드Name프로세스 이름 (예: sshd)Umask파일 생성 마스크 (권한 설정 시 기본 마스크 값)State프로세스의 현재 상태 (R: 실행 중, S: 대기 중, D:.. 더보기
Linux - Date 명령어로 타임스탬프 변환하기 리눅스(Linux)에서 date 명령어는 시스템의 날짜와 시간을 출력하거나 설정하는 데 사용됩니다. 날짜와 시간을 다루는 다양한 형식을 지원하며, 이를 통해 타임스탬프를 읽기 쉽거나 특정 형식으로 변환할 수 있습니다. 또한, 타임스탬프 값을 받아 사람이 이해할 수 있는 날짜로 변환하는 기능도 제공합니다.1. date 명령어 기본 사용법리눅스의 date 명령어는 기본적으로 현재 시스템의 날짜와 시간을 출력합니다.# date2024. 10. 02. (수) 09:17:42 KST기본 출력 형식은 시스템의 로케일 설정에 따라 다를 수 있지만, 일반적으로 "년-월-일 시:분:초" 형식으로 나타납니다.특정 형식으로 날짜와 시간을 출력하고 싶다면 + 옵션을 사용하여 원하는 포맷을 지정할 수 있습니다.# date +".. 더보기