Linux 154

[Shell Script] Basics - 2

2022.05.14 - [Shell Script] Basics - 1에 이어서 작성한다. 명령어 작성 시 사용할 수 있는 기능 단어 분리 변수 또는 명령 치환을 quote하지 않으면 값 출력 시 IFS(Internal Field Separator)에 의해 공백을 기준으로 값이 분리된다. Filename Expansion (Globbing) 출력 값에 glob 문자(*, ?, [ ])가 포함되는 경우, 변수나 명령 치환을 quote하지 않으면 뜻하지 않은 globbing으로 인해 오류가 발생할 수 있다. $ AA="User-Agent: *" # 변수 AA 값으로 glob 문자 '*' 가 사용됨 $ echo "$AA" # quote 을 하면 globbing 이 발생하지 않음 User-Agent: * $ ec..

Linux/Shell Script 2022.05.15

[Shell Script] Basics - 1

https://mug896.github.io/bash-shell/basics.html의 내용을 간단히 정리한다. Basics | Introduction Shell basics Shell 의 기본적인 역할은 사용자에게 명령을 입력받아 실행하는 것입니다. shell 은 명령문을 작성할 때 사용할 수 있도록 많은 유용한 기능을 제공하므로 실제 명령이 실행되기 전에 she mug896.github.io Shell의 기본 역할 사용자에게 명령을 입력받아 실행한다. 사용자는 명령어 작성 시 사용할 수 있는 기능을 사용하여 명령을 작성하기 때문에, 실제 실행 전에 shell에 의해 해석 단계를 거친다. 명령어 작성 시 사용할 수 있는 기능 파일명 명령 실행 시 사용되는 이름과 같다. 리눅스에서 사용하고 있는 파일 시..

Linux/Shell Script 2022.05.14

[traceroute] 패킷 전송 경로 추적

traceroute는 패킷이 출발지에서 목적지까지 도달하기 위한 경로를 표시한다. 보통 대상 서버와 통신 가능 여부를 확인할 때 ping이나 telnet을 이용하는데 ping 테스트 시 실패가 발생하는 경우 또는 접속에 지연이 발생하는 경우, 어느 구간이 문제가 되는지를 판단하기 위해 사용할 수 있다. IPv6를 사용하고 싶다면 traceroute6 명령어를 사용할 수 있다. 윈도우에서는 같은 기능을 수행하는 명령어로 tracert가 존재한다. 설치 traceroute 명령어가 존재하지 않으면 패키지 관리자를 통해 설치하도록 한다. Ubuntu 기준으로는 아래의 명령어로 설치할 수 있다. apt update apt install traceroute 사용법 traceroute traceroute # -p ..

Linux 2022.05.11

[Linux] ping

ping은 IP 네트워크를 통해 특정 호스트가 도달 여부를 확인할 때 사용하는 명령어 중 하나이다. 대상 컴퓨터에 일정 크기의 패킷을 보낸 후(ICMP ECHO Request), 그 응답(ICMP ECHO Reply)을 받음으로써 대상 컴퓨터 동작 여부와 네트워크 상태를 파악할 수 있다. Window에도 같은 명령어가 존재하며 사용 옵션의 차이가 있을 뿐, 기본적인 사용 방법은 동일하다. 이 글은 리눅스 기준으로 작성한다. 명령어 ping ping # 예시 ping 172.217.175.228 ping www.google.com 옵션 없이 사용하면 사용자가 프로세스를 종료할 때까지 반복 실행한다. 프로세스를 종료하며, 몇 개의 패킷을 보내서 몇 개의 패킷을 받았는지, 몇 개의 패킷을 밪지 못했는지 등에 ..

Linux 2022.05.09

[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