Linux 159

[systemd] systemctl을 이용한 Runlevel/Target 관리

Target 기존 Unix/Linux는 부팅 시 제공하는 기능의 수준을 결정하는 Runlevel이라는 개념을 사용했다. 다만 systemd가 도입되며 Target이라는 용어로 변경되었다. Runlevel에 따른 Target은 아래와 같다. Runlevel Target 의미 0 poweroff.target 시스템 중단 1 rescue.target 텍스트 기반의 단일 사용자 모드 2, 3, 4 multi-user.target 텍스트 기반의 다중 사용자 모드 5 graphical.target X 윈도우 기반의 다중 사용자 모드 6 reboot.target 시스템 리부팅 systemd systemd(System daemon)은 시스템 부팅 시 가장 먼저 생성된 후 다른 프로세스를 실행하는 init 역할을 대체한..

Linux 2022.06.06

[Shell Script] Quotes - 1

Quotes 다른 프로그래밍 언어와 달리 숫자나 스트링 값을 구분하기 위한 용도로 사용하지 않는다. quotes의 용도는 아래와 같다. 공백으로 분리되는 여러 개의 스트링을 하나의 인수로 만들 때 라인 개행이나 둘 이상의 공백을 유지할 때 단어 분리, globbing 발생을 방지하기 위해 키워드, 메타 문자, 특수 기능을 하는 문자나 단어를 단순 문자열로 만들기 위해 문자열을 강조하기 위해 특수 기능을 하는 문자 shell 메타 문자 문자 기능 $ 매개변수 확장, 산술 확장, 명령 치환 ` 명령 확장 ! history 확장 shell 메타 문자를 포함하는 문자열을 사용할 때 의도치 않은 동작을 수행할 수 있기 때문에 \ 또는 quotes를 이용해 특수 기능을 제거해야 한다. No quotes 따옴표 또는..

Linux/Shell Script 2022.06.04

[kill] 프로세스에 시그널 전달

시그널(SIGNAL) 프로세스에게 이벤트의 발생을 알리기 위해 전달되는 소프트웨어 인터럽트의 일종 사전적인 의미로 '신호'를 뜻하며, 리눅스에서는 프로세스끼리 서로 통신할 때 사용한다. 시그널을 발생시키는 이벤트는 Hardware Exception, Software Condition, 사용자 입력, 시스템 콜 등이 해당된다. 💡 인터럽트 (Interrupt) 갑자기 발생하는 비동기적인 통지나 이벤트 하드웨어 관점에서는 하드웨어의 변화를 감지해서 외부 입력으로 전달되는 전기 신호 인터럽트가 발생하면 프로세스는 동작을 중지하고 인터럽트 벡터와 핸들러를 실행하여 하드웨어 변화를 처리한다. 시그널은 비신뢰성과 대기하지 않는다는 성질을 가진다. 비신뢰성 : 시그널을 보낸 후 시그널의 도착했는지 확인하지 않는다. ..

Linux 2022.05.24

[whois] 도메인 세부 정보 확인

whois 인터넷 도메인 이름, IP 주소 등 인터넷 자원의 소유자와 범위를 검색하기 위한 통신 프로토콜 및 ICANN이 관여하는 도메인 관리 프로그램 💡 ICANN 국제 인터넷 주소 관리기구 (Internet Corporation for Assigned Names and Numbers) 인터넷 DNS의 기술적 관리, IP 주소 공간 할당, 프로토콜 파라미터 지정, 루트 서버 시스템 관리 등의 업무를 조정한다. 리눅스에서는 whois 라는 명령어를 통해 whois 서버에 검색을 수행할 수 있다. 설치 Ubuntu apt update apt install whois CentOS yum install whois 명령어 출력 정보 형식은 사용되는 WHOIS 서버에 따라 다르다. whois # 예시 whois ..

Linux 2022.05.23

[ldapsearch] 사용법

ldapsearch LDAP 서버에 연결하여 지정된 매개변수를 사용하여 검색을 수행한다. 이 글에서는 ldapsearch 사용 방법을 간단하게 정리한다. 설치 Ubuntu는 아래의 명령어로 설치할 수 있다. apt install ldap-utils 서버 연결/인증 ldap 서버에서 검색을 수행하기 위해서는 서버 접속 정보와 계정 정보를 인증해야 한다. 따라서 아래와 같이 ldap 서버 주소, 포트, 검색할 DN, 계정, 계정 비밀번호 등을 지정해야 한다. ldapsearh -h -p -b "" -D "" -w "" # -h : ldap 서버 주소 # -p : port 지정 # -b : 검색할 DN 경로 # -D : 인증할 계정 # -w : 계정 비밀번호 # 예시 ldapsearh -h 192.168.10..

Linux 2022.05.22

[Shell Script] Basics - 2

2022.05.14 - [Shell Script] Basics - 1에 이어서 작성한다. 명령어 작성 시 사용할 수 있는 기능 단어 분리 변수 또는 명령 치환을 quote하지 않으면 값 출력 시 IFS(Internal Field Separator)에 의해 공백을 기준으로 값이 분리된다. Filename Expansion (Globbing) 출력 값에 glob 문자(*, ?, [ ])가 포함되는 경우, 변수나 명령 치환을 quote하지 않으면 뜻하지 않은 globbing으로 인해 오류가 발생할 수 있다. $ AA="User-Agent: *" # 변수 AA 값으로 glob 문자 '*' 가 사용됨 $ echo "$AA" # quote 을 하면 globbing 이 발생하지 않음 User-Agent: * $ ec..

Linux/Shell Script 2022.05.15

[Shell Script] Basics - 1

https://mug896.github.io/bash-shell/basics.html의 내용을 간단히 정리한다. Basics | Introduction Shell basics Shell 의 기본적인 역할은 사용자에게 명령을 입력받아 실행하는 것입니다. shell 은 명령문을 작성할 때 사용할 수 있도록 많은 유용한 기능을 제공하므로 실제 명령이 실행되기 전에 she mug896.github.io Shell의 기본 역할 사용자에게 명령을 입력받아 실행한다. 사용자는 명령어 작성 시 사용할 수 있는 기능을 사용하여 명령을 작성하기 때문에, 실제 실행 전에 shell에 의해 해석 단계를 거친다. 명령어 작성 시 사용할 수 있는 기능 파일명 명령 실행 시 사용되는 이름과 같다. 리눅스에서 사용하고 있는 파일 시..

Linux/Shell Script 2022.05.14

[traceroute] 패킷 전송 경로 추적

traceroute는 패킷이 출발지에서 목적지까지 도달하기 위한 경로를 표시한다. 보통 대상 서버와 통신 가능 여부를 확인할 때 ping이나 telnet을 이용하는데 ping 테스트 시 실패가 발생하는 경우 또는 접속에 지연이 발생하는 경우, 어느 구간이 문제가 되는지를 판단하기 위해 사용할 수 있다. IPv6를 사용하고 싶다면 traceroute6 명령어를 사용할 수 있다. 윈도우에서는 같은 기능을 수행하는 명령어로 tracert가 존재한다. 설치 traceroute 명령어가 존재하지 않으면 패키지 관리자를 통해 설치하도록 한다. Ubuntu 기준으로는 아래의 명령어로 설치할 수 있다. apt update apt install traceroute 사용법 traceroute traceroute # -p ..

Linux 2022.05.11

[Linux] ping

ping은 IP 네트워크를 통해 특정 호스트가 도달 여부를 확인할 때 사용하는 명령어 중 하나이다. 대상 컴퓨터에 일정 크기의 패킷을 보낸 후(ICMP ECHO Request), 그 응답(ICMP ECHO Reply)을 받음으로써 대상 컴퓨터 동작 여부와 네트워크 상태를 파악할 수 있다. Window에도 같은 명령어가 존재하며 사용 옵션의 차이가 있을 뿐, 기본적인 사용 방법은 동일하다. 이 글은 리눅스 기준으로 작성한다. 명령어 ping ping # 예시 ping 172.217.175.228 ping www.google.com 옵션 없이 사용하면 사용자가 프로세스를 종료할 때까지 반복 실행한다. 프로세스를 종료하며, 몇 개의 패킷을 보내서 몇 개의 패킷을 받았는지, 몇 개의 패킷을 밪지 못했는지 등에 ..

Linux 2022.05.09

[which] sudo 권한으로 실행하는 명령어 경로 확인

서버에서 conda나 virtualenv와 같은 가상 환경을 이용해 개발 환경을 세팅하여 사용하다보면, 하나의 프로그래밍 언어를 여러 경로에 세팅하여 사용할 수 있다. 사용하는 계정의 PATH 환경 변수 등의 이유로 명령어 호출 시 실행되는 명령어의 경로가 다를텐데, 이 글에서는 sudo 권한을 빌려서 명령어를 실행할 때 어떤 명령어가 실행되는지 확인하는 방법에 대해 알아보려고 한다. 기본적으로 명령어의 실행 경로는 which 명령어를 사용하여 확인할 수 있다. which # 예시 which R which python3 sudo 권한을 빌려서 명령어를 실행할 때의 실행 경로는 which 명령어 앞에 sudo를 붙여서 확인할 수 있다. sudo which # 예시 sudo which R sudo which..

Linux 2022.04.26