Linux 159

[HTTPie] http 요청 도구

HTTPie 명령줄 HTTP 클라이언트. '에이치티티파이'라고 읽는다고 소개한다. CLI와 웹 서비스 간의 인간친화적인 상호작용을 목표로 하는 프로젝트로, API와 HTTP 서버의 테스트, 디버깅, 전반적인 상호작용을 위해 설계되었다. https도 지원하는 것으로 보인다. 설치 apt install httpie 공식 문서에서 여러 환경에서의 설치 방법을 확인할 수 있다. 요청 http 메소드, URI을 지정하여 요청을 보낸다. 메소드는 생략 가능하다. http [flags] [METHOD] URL [ITEM [ITEM]] -v : 요청과 응답 둘 다 확인. # 예시 http -v GET http://localhost:5000 요청 URI에 매개변수 추가 ==를 사용하여 요청 URI에 매개변수를 추가할 수..

Linux 2022.09.21

[read] 사용자 입력 / 파일 입력

read 파일 디스크립터에서 값을 읽는 명령어다. 사용자로부터 값을 입력받아 변수에 저장하거나, 파일의 내용을 입력받을 때 사용한다. 사용자 입력 read 명령어로 사용자의 키보드 입력을 변수에 저장하여 사용한다. #! /bin/bash echo "name: " read NAME echo "Your name is" $NAME 파일 입력 파일 디스크립터를 이용하여 파일의 한 행을 변수에 저장한다. #! /bin/bash # 내용을 읽을 파일 FILE=user.sh # 파일 디스크립터로 입력 읽기 read line < $FILE echo $line 파일 내용 전체를 읽을 때는 while 문을 사용할 수 있다. #! /bin/bash FILE=user.sh while read line do echo $line..

Linux/Shell Script 2022.09.19

[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

[Apache Tomcat] WAR 배포

개요 2022.08.23 - [Ubuntu] Apache Tomcat 설치에서 설치한 Tomcat에 WAR로 패키징된 애플리케이션을 배포하려고 한다. 배포할 애플리케이션은 이미 maven 등으로 빌드해두었다고 가정한다. 이 글에서는 https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/에서 제공하는 예제 애플리케이션을 사용할 것이다. 배포 방법 1. 기본 이름(ROOT.war) 사용 Tomcat은 기본적으로 설치 경로(CATALINA_HOME)의 webapps 아래에 war 파일이 존재하면 자동으로 압축을 풀고 애플리케이션을 실행한다. 이 때 war 파일의 이름을 ROOT로 지정하면 별다른 설정 없이 애플리케이션을 실행할 수 있다. # webapps 디렉터리로..

Linux 2022.08.24

[Ubuntu] Apache Tomcat 설치

Apache Tomcat Apache Tomcat은 아파치 소프트웨어 재단에서 개발한 웹 애플리케이션 서버(WAS)이다. 웹 서버와 연동하여 실행할 수 있는 Java 환경을 제공하여 Java 서버 페이지와 Java Sevlet이 실행할 수 있는 환경을 제공한다. 이 글에서는 Ubuntu 20.04 LTS에서 Tomcat을 실행하기 위한 Java와 Tomcat 9를 설치해볼 것이다. 설치 방법 1. JDK OpenJDK 8를 설치할 것이다. # 저장소 업데이트 apt update apt install openjdk-8-jdk 2. Apache Tomcat 설치 Apache Tomcat 9 중 최신 릴리즈인 9.0.65를 설치하고자 한다. apt와 같은 패키지 관리자로 설치하는 방법도 있는 것 같지만, 이 ..

Linux 2022.08.23

[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