Linux 159

[md5sum] 파일 무결성 확인 명령어

md5sum md5(Message-Digest algorithm 5) 해시 알고리즘을 이용해 파일의 checksum을 계산하는 명령어로, 대부분의 unix 시스템에 내장되어 있다. 계산된 checksum은 128bit로, 32자의 문자열에 해당한다. 💡 checksum md5sum에서 언급하는 checksum은 해시 함수를 적용하여 나온 고정된 길이의 값, 즉 해시값을 뜻한다. 해시값은 해시 코드, 해시섬(hashsum), 체크섬이라고 불리기도 한다. 해시값과 체크섬은 그 의미가 조금 다르지만, 해시값을 체크섬과 동일한 목적으로 사용하는 경우가 많다. 해시 함수는 같은 입력값에 대해 같은 출력값을 보장하기 때문에, 데이터가 중간에 조금이라도 변경되면 md5sum 값은 달라지게 된다. 이러한 특성을 이용해..

Linux 2022.04.22

[diff] 파일 내용 비교

diff 리눅스 기본 명령어 중 하나로, 파일을 한 줄씩 비교하여 출력한다. 출력 값이 없으면 두 파일이 동일하다는 의미이다. 3개의 파일을 한 번에 비교하고 싶다면 diff3 명령을 사용할 수 있다. 명령어 일반적으로 기준이 되는 파일을 먼저 나열한다. diff [OPTION]... FILES # 예시 diff old.txt new.txt 예시) 3번째 줄과 5번째 줄이 변경된 것을 알 수 있다. 로 시작하는 행은 new.txt의 내용이다. 즉, fff가 fox로 변경되고, tiger라는 문자열이 추가된 것을 확인할 수 있다. 아무런 옵션 없이 사용하면 변경된 내용만을 확인할 수 있는데, -u 옵션을 사용하면 변경된 내용과 변경되지 않은 내용을 한 번에 확인할 수 있다. diff -u FILES # -..

Linux 2022.04.18

[cp] 파일/디렉터리 권한 유지

cp를 이용해 파일을 복사 시 기존 파일의 소유자나 권한 그대로 유지되지 않을 수 있다. 복사를 수행한 사용자의 umask 설정에 따르기 때문이다. 파일의 소유자와 권한을 유지하여 파일을 복사하기 위해서는 -p 옵션을 사용해야 한다. 명령어 cp -p # -p : --preserve=mode,ownership,timestamps와 동일. # --preserve : 지정된 속성을 유지하여 파일을 복사한다. 기본값은 mode,ownership,timestamps이다. context, links, xattr, all 속성이 지정될 수 있다. 확인 -p 옵션 없이 파일 복사한 경우 복사된 cp-test 파일의 소유자와 권한이 원본 파일과 달라진 것을 확인할 수 있다. -p 옵션 사용하여 파일 복사한 경우 복사된..

Linux 2022.03.28

[Ubuntu] E: Packages were downgraded and -y was used without --allow-downgrades.

Ubuntu 서버에서 특정 패키지를 다운그레이드 하고자 아래의 명령을 사용했다. apt-mark unhold kubeadm && \ apt-get update && apt-get install -y kubeadm=1.21.1-00 && \ apt-mark hold kubeadm 하지만 기존에 설치되어 있던 패키지의 버전(1.23.1-00)이 높아 에러 메시지와 함께 설치가 정상적으로 이뤄지지 않았다. 에러 메세지 E: Packages were downgraded and -y was used without --allow-downgrades. 메시지 내용을 보니 패키지를 다운그레이드 할 때는 -y 옵션을 사용하지 못하는 것 같다. 에러 메시지가 안내하는 대로 --allow-downgrades 옵션을 사용하면..

Linux 2022.03.27

[grep] 특정 문자열 제외

2022.03.03 - [grep] 대소문자 구분 없이 문자열 찾기 위 글에 이어 grep 명령어 사용법을 하나 더 적어둔다. grep 명령은 지정한 문자열을 포함한 행을 찾을 뿐만 아니라, 포함하지 않는 행을 찾아 반환하기도 한다. -v 옵션을 사용하면 된다. 명령어 grep -v PATTERN [FILE...] # -v, --invert-match : 입력받은 패턴과 일치하지 않는 행을 반환한다. # 예시 grep -v '#' docker/Dockerfile Dockerfile에서 '#'로 주석 처리한 행을 제외한 실제 실행 내용만을 확인할 수 있다. -i 옵션과 같이 사용하면 대소문자 구분 없이 입력 받은 패턴을 제외한 내용을 확인할 수 있다. grep -vi PATTERN [FILE]

Linux 2022.03.04

[grep] 대소문자 구분 없이 문자열 찾기

문자열을 찾을 때 사용하는 grep 명령어는 기본적으로 입력받은 정확한 문자열을 포함한 행을 찾아 반환한다. 예시 ) 하지만 대문자 입력의 경우 shift 키를 눌러야하거나, capsLock 키를 눌러야 하므로 빠르게 검색하기엔 조금 귀찮을 때가 많다. 다행히 grep 명령은 -i 옵션을 사용하면 대소문자를 구분하지 않고 원하는 문자열을 포함한 행을 검색할 수 있다. grep -i PATTERN [FILE...] # -i, --ignore-case : PATTERN과 입력 파일 모두에서 대소문자 구분을 무시한다. # 예시 grep -i run docker/Dockerfile

Linux 2022.03.03

[make] Makefile 실행

make Unix/Linux에 포함되어 있는 명령어로, 파일 관리 유틸리티 소프트웨어다. Makefile이라는 파일을 참조하여 컴파일러에 명령을 전달하며, 파일에 기술된 shell 명령어가 순차적으로 실행될 수 있도록 한다. 주로 컴파일 명령어를 기술하여, 여러 개의 소스파일을 대상으로 여러 단계의 컴파일 과정을 한 번에 진행한다. Makefile make 명령으로 실행할 명령을 기술한 파일 목적 파일, 재료 파일, 명령어와 매크로가 매크로가 기술되어 있다. 구조 CC = gcc # 매크로 정의. CC는 컴파일러를 뜻한다. # 타겟절. 규칙 정의 # 목적 파일 : 의존성 # 명령어 target 1 : dependency1 dependency2 cmd1 cmd2 target 2 : dependency3 d..

Linux 2022.03.01

[Ubuntu 14] update-rc.d - 서비스 비활성화

Ubuntu 18.04 이상 정도의 버전에서는 systemctl을 이용하여 서비스를 관리한다. 여기서 관리한다는 것은 서비스를 시작하거나 중지하거나, 부팅 시 자동 시작(enable)하도록 추가하거니, 부팅 시 자동 시작하도록 설정된 작업을 부팅 시 자동 시작에서 제외(disable)하는 등의 작업을 말한다. 명령어 # 부팅 시 자동 시작 systemctl enable # 부팅 시 자동 시작에서 제외 systemctl disable 그 이전의 버전에서는 service 명령어를 이용하여 서비스를 관리한다. 단, 서비스 명령은 /etc/init.d/ 아래의 서비스 스크립트에 정의된 인자값만을 지원하기 때문에, disable 또는 enable 인자를 사용할 수 없을 수도 있다. apache2를 그 예시로 들 ..

Linux 2022.02.28

[nvidia-smi] Failed to initialize NVML: Driver/library version mismatch

Nvidia GPU를 사용하는 서버에서 nvidia-smi 명령어 수행 시 아래와 같이 에러 메시지가 출력되면서 동작하지 않는 경우가 있다. dmesg 명령을 사용하면 아래와 같은 NVRM: API mismatch 메세지를 볼 수 있는데, 클라이언트가 가진 버전과 kernel module의 버전에 차이로 인한 메세지라는 것을 확인할 수 있다. 보안 업데이트를 자동으로 수행하는 unattended-upgrade에 의해 버전 업데이트가 발생했기 때문에 버전에 차이가 생긴 게 그 원인이다. 관련 이력은 아래와 같이 확인할 수 있다. 업데이트 이력 확인 1. apt 로그 확인 view /var/log/apt/history.log 2. unattended-upgrades 로그 확인 view /var/log/una..

Linux 2022.02.20

[Ubuntu 20.04 LTS] Node.js 설치 / NodeSource

Node.js Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임 JavaScript로 브라우저 밖에서 서버를 구축하는 등의 코드를 실행할 수 있게 해주는 런타임 환경 이 글에서는 Ubuntu 환경에 node.js 설치하는 방법에 대해 정리한다. 설치 방법에는 Ubuntu 기본 패키지 저장소 사용, nvm 사용 등 여러 가지 방법이 존재하지만 Ubuntu 기본 패키지 저장소를 사용하면 10.19.0이라는 오래된 버전이 설치되기 때문에, NodeSource PPA를 추가하여 작성일 기준 최신 TLS 버전(16.13.2)을 설치할 것이다. NodeSource 엔터프라이즈급 Node 지원 제공에 초점을 맞춘 회사 Node.js의 최신 버전이 포함된 저장소를 관리하고 있다. 방법 패..

Linux 2022.02.19