본문 바로가기

Old Posts/Linux105

[Linux] 빈 RPM 패키지 만드는 방법 리눅스 서버를 운영하다보면 빈 RPM 패키지를 만들어 설치해야할 때가 있다. 특정 소프트웨어를 Makefile로 직접 빌드해 설치하는 경우 서버에는 소프트웨어가 설치되지만 rpmdb에는 패키지 정보가 추가되지 않는다. 소프트웨어를 사용할 수는 있지만 rpm을 통해 설치하지 않아서 의존성 체크는 계속 실패하게 된다. 이 경우 빈 rpm 패키지를 만들어 설치하는 식으로 rpm의 의존성 체크를 우회할 수 있다. 예를 들어 python 패키지는 특정 버전 이후부터 python2와 python3로 패키지 이름이 변경되었다. 오래된 버전의 운영체제에서 동작하던 소프트웨어 중에는 python 이라는 이름의 패키지에 의존성이 걸려있는 경우가 있다. python2, python3가 설치되어 있고 alias도 되어 있어 .. 2023. 8. 10.
[Linux] SSH 연결 최적화 - ControlMaster, ControlPath, ControlPersist 설정 클러스터를 운영하는 경우 운영 서버로 ssh 접속을 해야하는 경우가 있다. 이 때, 환경설정에 따라 아이디, 비밀번호 이외에 추가로 OTP 등의 인증을 요구하는 경우가 있다. 하루에 한번 업무차 접속하는 경우라면 상관없지만 빈번하게 새로운 ssh 연결을 생성해야하는 경우라면 매번 해야하는 ID, Password, OTP 등의 절차가 매우 번거로울 수 있다. 이 때, ControlMaster, ControlPath, ControlPersist 설정을 해두면 번거로움을 어느정도 해소할 수 있다. ssh 설정 ~/.ssh/config 파일을 열고 다음 설정을 추가하자. Host server HostName my.host.com User myUserId ControlMaster auto ControlPath ~.. 2023. 1. 4.
[Bash] 문자열 비교 방법 리눅스 Bash 스크립트에서 문자열을 비교하고, 문자열을 자르는 방법에 대해서 알아보자. 문자열 비교 - 같은지 확인 Bash 스크립트에서 두 문자열을 == 연산으로 비교할 수 있다. #!/bin/bash str1="Hello" str2="hello" if [ $str1 == $str2 ];then echo "Equal" else echo "Not equal" fi 이 스크립트를 실행하면 다음과 같은 출력을 얻게 된다. $ ./test.sh Not equal 단순히 == 연산으로 두 문자열을 비교할 경우, 둘 중 하나가 빈 문자열일 때 에러가 발생한다. 예를 들어 #!/bin/bash str1="Hello" str2="" if [ $str1 == $str2 ];then echo "Equal" else e.. 2022. 12. 2.
[Linux] pstree 명령어 사용법 및 예제 pstree 명령어는 프로세스의 부모-자식 관계를 트리형태로 출력해주는 명령어다. 프로세스들의 관계를 트리 형태로 출력해주어 계층관계를 한눈에 알아볼 수 있게 한다. 리눅스에서 프로세스는 부모 프로세스에 의해 생성된다. 프로세스들을 관리할 때 부모-자식 관계를 알아야 하는 경우가 종종 발생하는데, pstree 명령어를 이용해서 이 관계를 알 수 있다. 트리형태로 표현되는 정보를 통해 시스템 관리자는 프로세스의 생성 관계를 직관적으로 확인할 수 있다. pstree 사용법 $ pstree [-a][-c][-h][-n][-p][-u] pstree 옵션 옵션 설명 -a 실행한 프로세스의 인자와 옵션까지 모두 표시 -c 1개의 프로세스의 중복된 개수로 출력 -h 부모 프로세스를 강조해서 출력 -n 출력시 PID .. 2022. 11. 29.
공인 IP 대역과 사설 IP 대역 인터넷에 연결되어 있는 네트워크 장비는 IP라고하는 주소가 할당된다. IP는 Internet Protocol의 약자로 인터넷에 연결되어 있는 컴퓨터의 고유주소다. IPv4 기준으로 12개의 숫자로 이루어져 있다. IP 주소는 공인 IP 대역과 사설 IP 대역으로 나눌 수 있다. 공인 IP 대역 공인 IP는 외부에 공개되어 있는 IP 주소다. 전 세계에서 유일하며 ISP(인터넷 서비스 공급자)를 통해 제공받는다. 우리나라에서는 KT, SKB, LG 등에서 IP 주소를 사용자에게 제공한다. 외부에 공개되어 있기 때문에 인터넷에 연결되어 있는 다른 컴퓨터에서 접근이 가능하다. 사설 IP 대역 로컬 IP, 가상 IP라고도 불리며 외부에서 접근할 수 없는 IP를 말한다. 가정 내 홈 네트워크나 기업의 인트라넷 같.. 2022. 11. 7.
Bash 스크립트 작성 레퍼런스 포스트 모음 Bash 스크립트를 작성할 때 참고할 만한 포스트들을 모아봤다. Bash 문법 [Bash] 조건문 문법, 사용법 및 예제 [Bash] 반복문 문법, 사용법 및 예제 [Bash] 문자열 비교 방법 [Bash] 문자열 자르는 방법 명령어 access curl compress, uncompress dd date df dir dirname du enable env file finger free gzip halt, poweroff, reboot hdparam head, tail host hostid hostname iconv id ifconfig ipcs,ipcrm iptables jobs jstat jstatd jq last lastb lastlog ldconfig ldd logger look ls lsof m.. 2022. 8. 30.
[Bash] 쉘 스크립트에서 사용자 입력 받기 (read 명령어 사용법) 쉘 스크립트를 작성하다보면 사용자의 입력을 받아야 하는 경우가 있다. Bash에서는 read 명령어를 이용해 사용자로부터 입력을 받을 수 있다. read 명령어로 사용자 입력 받기 사용자로부터 입력을 받기위해 read 명령어를 사용할 수 있다. read 명령어를 사용하는 예제를 살펴보자. #!/bin/bash echo "What is your name?" read name echo "Hello, $name!!" 사용자로부터 이름을 입력받아 인사를 하는 간단한 예제다. 이를 실행하면 다음과 같은 결과를 얻을 수 있다. $ bash test.sh What is your name? Dave Hello, Dave!! 두개 이상의 입력 받기 하나의 read 명령을 이용해 두 개 이상의 입력을 받을 수 있다. 공백.. 2022. 8. 27.
[CentOS] Go 언어(go-lang) 설치 방법 GO 언어를 CentOS에 설치하는 방법은 매우 간단하다. yum을 이용하면 된다. 우선 Go 설치를 위한 저장소 정보를 설정해준다. $ rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO $ curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee > /etc/yum.repos.d/go-repo.repo 그리고 yum 명령을 이용해 설치해주면 된다. yum install golang 제대로 설치되었는지 확인하기 위해 버전 확인을 해보자. $ go version go version go1.13.8 linux/amd64 2022. 8. 25.
[Linux] tcpdump 명령어 사용방법 tcpdump는 리눅스나 유닉스 계열 운영체제에서 네트워크 인터페이스를 통해 송수신되는 패킷의 정보를 출력해주는 프로그램이다. 특정 서버 장비에서 비정상적인 네트워크 입출력이 감지된 경우 문제의 원인을 파악하기 위해 tcpdump를 이용하면 된다. tcpdump는 libpcap 라이브러리를 이용해서 패킷을 캡쳐하고 확인된 정보를 파일로 저장한다. 따라서 확인된 정보를 wireshark 같은 분석 도구를 이용해 확인 할 수도 있다. tcpdump 설치 tcpdump는 yum을 통해 설치할 수 있다. $ sudo yum install tcpdump tcpdump 옵션 옵션 설명 -c 지정한 수 만큼 패킷을 수신 -i 지정한 인터페이스를 통하는 패킷들의 내역을 출력 -w 캡쳐한 패킷의 정보를 지정한 파일에 바.. 2022. 6. 17.