Linux 126

[which] sudo 권한으로 실행하는 명령어 경로 확인

서버에서 conda나 virtualenv와 같은 가상 환경을 이용해 개발 환경을 세팅하여 사용하다보면, 하나의 프로그래밍 언어를 여러 경로에 세팅하여 사용할 수 있다. 사용하는 계정의 PATH 환경 변수 등의 이유로 명령어 호출 시 실행되는 명령어의 경로가 다를텐데, 이 글에서는 sudo 권한을 빌려서 명령어를 실행할 때 어떤 명령어가 실행되는지 확인하는 방법에 대해 알아보려고 한다. 기본적으로 명령어의 실행 경로는 which 명령어를 사용하여 확인할 수 있다. which # 예시 which R which python3 sudo 권한을 빌려서 명령어를 실행할 때의 실행 경로는 which 명령어 앞에 sudo를 붙여서 확인할 수 있다. sudo which # 예시 sudo which R sudo which..

Linux 2022.04.26

[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

[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

[Ubuntu] 패키지 버전 지정 설치

기본적으로 패키지 관리자는 저장소 내에 최신판으로 패키지를 설치한다. 하지만 설치할 패키지 버전을 지정할 수도 있다. apt-cache update 명령을 통해 가져온 패키지 메타 데이터에서 유용한 정보를 검색하고 생성한다. 패키지의 가용성, 버전 번호, 종속석을 검색할 수 있다. 관련하여 살펴보기 전에 일단 저장소부터 업데이트한다. 저장소 업데이트 apt update 패키지 설치 시 설치 버전 확인 지정된 패키지의 설치 여부와 설치 시 어떤 저장소에서의 버전이 사용 가능한지, 그리고 그 우선순위를 보여준다. apt-cache policy # 예시 apt-cache policy apache2 기본적으로 설치된 패키지 버전의 우선순위는 100이며, 설치되지 않은 패키지의 우선순위는 500이다. 사용 가능한..

Linux 2022.02.12

[Linux] tmux - 설치/실행/Pane 추가

tmux (terminal multiplexer) 사용자가 단일 단말기 창 또는 원격 터미널 세션 안에서 여러 별도의 터미널 세션에 액세스 할 수 있도록 가상 콘솔을 다중화하는 데 사용한다. tmux는 많은 가상 터미널을 window와 session 단위로 관리한다. tmux server는 session을 관리하며, tmux client는 tmux server와의 socket 통신을 통해 가상 터미널을 사용자가 원하는 대로 보여준다. 이 글에서는 tmux를 이용한 화면 분할(?) 정도만 간단하게 정리해두려고 한다. 개념 Session : tmux가 관리하는 가장 큰 실행 단위. 세션에 attach, detach할 수 있으며 detach 한 세션은 종료되지 않고 백그라운드에서 계속 실행된다. 세션은 여러 ..

Linux 2022.02.11