프로그래밍/Linux 19

POSIX 표준에 따라 CLI 애플리케이션 만들기

POSIX (Portable Operating System Interface) UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격. CLI 애플리케이션은 Flag, Option, Argument, Subcommand로 이루어져 있다. 처음 써보는 CLI 앱이어도 --help를 쳐서 나오는 설명을 읽고 당황하지 않고 쓸 수 있다. 프로그램마다 기상천외한 사용법이 있는게 아니라 어떠한 규칙이 있어보이는데, 그것이 바로 POSIX 표준 덕분이다. POSIX 표준은 Command line 옵션을 지정하고 구문분석하는데 사용되는 일련의 규칙을 제공하여 다양한 CLI 툴을 이해하고 사용하기 쉽게 만들 수 있도록 한다. #..

LXD와 LXC의 차이

LXD란 무엇인가? 컨테이너 매니저다. LXD 자체는 컨테이너가 아니다. LXC라고하는 Linux Container를 구동할 수 있도록 해준다. 추가적으로, 클러스터링 같은 기능을 지원한다. LXC란 무엇인가? 리눅스 컨테이너. LXC container는 가상머신 같다.(VM-like) Docker 컨테이너는 변경사항이있고, 종료하고 다시 띄우면 변경사항을 잃는다. 반면에, LXC는 가상머신을 재부팅한 것처럼 변경사항이 유지된다.

[lxc] 인스턴스 생성 실패 Failed detecting root disk device: No root device could be found 해결방법

ubuntu@:~$ sudo lxc launch ubuntu:22.04 manager1 Creating manager1 Error: Failed instance creation: Failed creating instance record: Failed initialising instance: Invalid devices: Failed detecting root disk device: No root device could be found lxc 인스턴스 생성시에 No root device could be found 오류가 떴을 경우, profile에 root disk에 대한 storage 설정을 해주어야한다. storage 목록이 만약에 비었다면, $ lxc storage ls +------+--------..

[Linux] 자바 버전 변경하기

JAVA 16버전을 사용하는 서버에서 안드로이드 빌드를 하는걸 구현하는 도중 "jlink executable /usr/lib/jvm/java-16-openjdk-amd64/bin/jlink does not exist."라는 오류가 발생했었는데, java-11-openjdk 아래에만 jlink가 설치되어 있었다. 그래서 16에서 11로 버전을 변경하게되었는데, 방법을 살펴보자. 1-1. 빠르고 쉬운 방법 update-alternatives를 이용하면된다. $ update-alternatives --config java 대체 항목 java에 대해 (/usr/bin/java 제공) 2개 선택이 있습니다. 선택 경로 우선순? 상태 ---------------------------------------------..

Linux 날짜 기준으로 오래된 파일 삭제하기

find # 수정된지 2일 지난 파일 find -mtime +1 # 수정된지 2일 이내의 파일 find -mtime -1 # 수정된지 2일 지난 파일을 삭제 find -mtime +1 -delete # 수정된지 2일 지난 txt 파일을 삭제 find -name '*.txt' -mtime +1 -delete find 명령어를 이용하여 특정한 날짜 기준으로 파일을 삭제할 수 있다. 아래는 find 명령어의 관련 옵션들이다. 옵션명 설명 mtime modification time, 수정시간 (내용) ctime change time, 변경 시간 (속성/권한/크기 변화) atime access time, 접근 시간 (open) name 파일 이름 delete 삭제 crontab에 Task 등록하여 주기적으로 삭제..

2 > &1의 진짜 뜻

# stdin, stdout, stderr "2>&1"를 알아보기전에 이들이 무엇인지 먼저 알아보아야한다. 표준입력(stdin), 표준출력(stdout), 표준에러(stderr)는 unix 커맨드를 실행할때 생성되는 3가지 데이터 스트림(data stream)이다. 스트림은 데이터를 전송할 수 있는 어떤 것인데, 여기서 세 데이터 스트림이 전송하는 데이터는 텍스트(text)다. # File Descriptor 알다시피, unix의 모든 것은 파일이다. 위 표준입/출력/에러 3가지도 unix에겐 파일인데, 프로세스가 열려있는 파일들을 관리하고 이 파일들에 접근하도록 하기 위해서 파일 디스크립터(File Descriptor)라는 추상 개념을 이용하게된다. 이름은 숫자가 아닐것처럼 생겼지만, 파일 디스크립터는..