Linux 130

[journalctl] service 로그 확인

journalctl Linux 서비스 매니저인 systemd는 로그 데이터를 journal이라는 바이너리 형식으로 저장한다. journalctl은 journal에서 로그를 검색하고 조회할 수 있는 systemd 유틸리티 중 하나이다. 보통 systemctl status와 함께 사용한다. 표시한 부분이 바로 로그 데이터에 해당한다. journalctl로 동일한 내용을 확인할 수 있다. 사용법 옵션 없이 실행하면 systemd의 로그를 확인할 수 있다. journalctl 최근 n개 메시지 확인 journalctl -n # 예시 journalctl -n# 최근 10게 journalctl -n 20# 최근 20개 message catalog로부터의 상세 설명 추가 확인 journalctl -x 최신 에러 메시..

Linux 2022.09.12

[awk] 개념

awk 파일 또는 input 데이터로부터 레코드를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 프로그램이다. AWK를 이용하면 다음과 같은 작업을 할 수 있다. 텍스트 파일 전체 내용 출력 파일의 특정 필드 출력 특정 필드에 문자열을 추가하여 출력 패턴이 포함된 레코드 출력 특정 필드의 연산 수행 결과 출력 필드 값을 비교한 결과에 따른 레코드 출력 awk 기능을 개발한 사람들의 이니셜(Alfred V. Aho, Peter J. Weinberger, Brian W. Kernighan)을 조합하여 명명되었다. 동작 방식 awk는 awk programming language로 작성된 프로그램을 실행하는데, 입력 데이터로부터 주어진 패턴을 포함하는 라인(레코드)을 탐색한 후, 라인을 발견하면..

Linux 2022.09.10

[linux] n초 주기로 스크립트/명령어 실행

개요 일정한 주기마다 스크립트나 명령어를 실행하는 대표적인 방법은 크론탭을 사용하는 것이다. 다만 크론탭의 최소 주기는 1분이라 초 단위로 명령어나 스크립트를 실행해야 할 때에는 사용할 수 없다. 이 글에서는 초 단위로 스크립트나 명령어를 실행하는 방법을 간단히 정리해둔다. watch 프로그램을 주기적으로 실행하여 결과를 전체 화면에 표시한다. watch [options] command # -n : --interval. 실행 주기 # -t : header 제외하여 출력 # 예시 watch -n 1 -t "date >> date.log" 예시 명령어의 경우 표준 출력을 리다이렉션 했기 때문에 출력이 보이지 않는다. 하지만 tail -f로 출력 파일을 확인하면 정상적으로 실행되는 상태임을 확인할 수 있다. ..

Linux 2022.09.03

[tree] 디렉터리 구조 확인

tree 디렉터리의 구조를 계층적으로 표시하는 도구 전체 구조를 대략적으로 파악할 때 유용하게 사용할 수 있다. 설치 ubuntu의 경우에는 apt를 이용해 설치할 수 있다. apt install tree 기본 사용 구조를 확인할 디렉터리를 지정하여 실행한다. 기본값은 현재 경로이다. tree 디렉터리만 출력 -d 옵션을 주어 실행하면 디렉터리 정보만 확인할 수 있다. tree -d # -d : 디렉터리 목록만 확인 depth 제한 -L 옵션을 주어 실행하면 탐색할 깊이를 제한할 수 있다. tree -L # -L : level. 디렉터리 구조를 보여줄 최대 깊이 # 예시 tree -L 1 파일 전체 경로 표시 전체 경로를 표시할 때는 -f 옵션을 주어 실행한다. tree -f # -f : 각 파일의 모든..

Linux 2022.08.12

[Ubuntu 20.04] Hostname 설정

Hostname 재부팅 시 서버의 Hostname이 다른 값으로 변경되는 일이 있어 명령어 또는 설정 파일을 통해 hostname 설정 방법을 정리해둔다. Hostname 확인 1. hostname 시스템의 호스트명을 보여주거나 설정한다. hostname 2. hostnamectl 시스템 호스트명을 제어한다. hostnamectl 출력 결과의 Static hostname은 /etc/hostname 파일에 설정이 저장되며 사용자에 의해 설정될 수 있다. 3. /etc/hostname 설정 파일에서 hostname을 읽어 들일 수도 있다. cat /etc/hostname Hostname 설정 1. hostname 명령 재부팅 전까지만 유지된다. hostname # 예시 hostname devOps-EC2-t..

Linux 2022.07.27

[Ubuntu/virtualenv] AttributeError: module 'virtualenv.create.via_global_ref.builtin.cpython.mac_os' has no attribute 'CPython2macOsArmFramework'

현상 Ubuntu 20.04 LTS에서 python virtualenv를 이용해 가상환경을 구성하려고 한다. pip도 설치되어 있지 않은 빈 OS 상태였기 때문에 아래와 같이 virtualenv 설치를 진행했다. # root 계정으로 전환 sudo -i # 패키지 저장소 업데이트 apt update # python3 pip 설치 apt install python3-pip # virtualenv 설치 pip install virtualenv # 설치 확인 pip list 설치 확인 시 아래와 같이 설치된 모습을 확인했다. 하지만 가상 환경 생성을 시도했을 때 명령어를 찾지 못해 다시 패키지를 설치하라는 안내가 출력되었다. 따라서 안내된 명령어로 다시 python virtualenv 설치했다. 그리고 아래와..

Linux 2022.07.20

[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] 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

[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

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

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

Linux 2022.05.24
1 2 3 4 5 6 7 8 ··· 13