Linux 154

[tar] 압축/해제

tar Tape ARchiver의 준말로 여러 파일을 하나의 파일로 묶거나 풀 때 사용한다. 💡 아카이버 (Archiver) 여러 개의 파일을 하나로 파일로 합치는 프로그램 파일을 저장 장치에 저장하거나 전송할 때 파일이 많으면 관리하기 힘들기 때문에, 하나의 파일로 처리하기 위한 목적으로 만들어졌다. tar는 여러 파일을 하나의 파일로 묶기만 할 뿐, 데이터 크기를 줄이기 위한 압축을 수행하지는 않는다. 대신 gzip, bzip2 등의 방식으로 압축할 수 있는데, 이는 tar 명령의 옵션으로 처리할 수 있다. tar 명령에 의해 만들어지는 파일은 .tar 확장자를 사용한다. gzip으로 압축된 경우에는 .targz, tgz을, bzip2로 압축된 경우에는 .tar.bz2, .tb2, tbz, tbz2 ..

Linux 2022.06.29

[Shell Script] Variables - 2

Variables 2022.06.27 - [Shell Script] Variables - 1 글에 이어서 작성한다. Variable states 변수는 3가지 상태를 가질 수 있다. 1. 변수 없음 또는 unset 변수에 값을 대입한 적이 없는 상태로 아래 명령어로 선언만 했거나 unset 명령을 사용한 경우에 해당된다. declare local 2. 값이 NULL인 경우 = ="" ='' 3. 값이 NULL 이외인 경우 =123 =" " ='hello, world' 값 구분하기 조건문 if를 사용하면 값을 가진 상태와 가지지 않은 상태를 구분할 수 있다. 값이 없는 경우 test -v ; echo $?; 💡 test 명령 파일 형식 또는 값을 비교한다. 값이 없거나 NULL인 경우 test -z ; e..

Linux/Shell Script 2022.06.28

[Shell Script] Variables - 1

Variables 변수명은 알파벳, 숫자, _로 구성되며, 숫자는 맨 처음에 올 수 없다. 변수 이름을 대문자로 사용할 때는 환경 변수와 중복되지 않도록 주의해야 하며, 자식 프로세스에서도 생성한 변수를 사용할 때는 export해야 한다. 현재 Shell에 정의된 모든 변수 확인 compgen -A variable 또는 $ 를 입력하고 tab을 입력하여 변수 목록을 확인할 수도 있다. 정의된 변수 삭제 unset -v # 예시 unset -v num 특징 같은 줄에 여러 변수를 생성할 수 있다. ;로 구분하지 않아도 된다. 단 local, declare, export 명령을 사용하는 경우에는 적용되지 않는다. foo=100 bar=$foo zoo=$bar echo $foo $bar $zoo 변수명으로 명..

Linux/Shell Script 2022.06.27

[Shell Script] Escape Sequences

Escape 문자 Escape 문자는 아래의 경우에서 처리된다. echo -e " " 또는 echo -e ' ' $ ' ' printf "" 또는 printf ' ' printf %b sh에서의 echo " ", echo ' ' 모두 이스케이프 문자를 처리한다. 따라서 -e 옵션이 없다. Quotes에 따른 escape 문자 처리 비교 echo 명령의 -e 옵션에 따른 escape 문자 처리 해석 시에는 -e 옵션을 제거한 후 명령을 실행해보고 비교하면 된다. sh와 bash에서 8진수, 16진수 처리 sh에서는 echo, printf에서 16진수를 사용할 수 없다. bash는 echo, printf, $ ' ' 모두 처리가 조금 다르다. sh, bash 모두 사용하려면 8진수를 사용해야 한다. 8진수,..

Linux/Shell Script 2022.06.26

[Shell Script] Quotes - 2

2022.06.04 - [Shell Script] Quotes - 1에 이어서 작성한다. Single quotes ' ' 모든 문자를 그대로 표시하며 escape도 되지 않는다. 따옴표로 감싼 문자열 내에서 따옴표를 입력할 때는 아래와 같은 방법으로 입력한다. no quotes 상태에서 ' escape '를 쌍따옴표로 감싸기 echo 'test'\''test' echo 'test'"'"'test' Single quotes 사용이 필요한 경우 1. Command String 사용 시 큰따옴표를 사용하면 작성 당시 변숫값이 확장되어 정의되므로 실행 시 의도대로 동작하지 않을 수 있다. 2. Trap Handler 사용 시 3. Prompt 설정 $' ' escape를 사용할 수 있는 single quotes..

Linux/Shell Script 2022.06.07

[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