apt 를 이용하여 라이브러리를 설치 할 때 인터넷이 되지 않는 환경의 VM에 파일을 설치 하기 위해서 설치 파일을 다운로드 받아야 하는 경우가 있습니다. 이때는 다음의 명령어를 이용해서 파일 uri를 확인하고 wget 명령을 이용해서 파일을 다운로드 할 수 있습니다. # krb 서버 sudo apt install --print-uris -y krb5-kdc krb5-admin-server# krb 클라이언트sudo apt install --print-uris -y krb5-user 위의 명령어를 입력하면 다운로드 파일 정보를 확인할 수 있습니다. 이 파일들을 모두 다운 받아서 다른 vm 에 설치하면 됩니다. 주의할 점은 이미 설치된 후 라면 정보가 출력되지 않을 수 있습니다. 설치 전에 미리 입력하는..
curl 에서 파일을 업로드 할 때 작은 용량의 데이터는 --data-binary 를 이용할 수 있습니다. 이때 out of memory 오류가 발생하면 -T 옵션을 이용하면 됩니다. -T(--upload-file) 옵션은 파일을 서버에 업로드 할 때 주로 사용합니다. curl -T filename.txt http://example.com/upload -d (--data-binary) 옵션은 텍스트 데이터를 그대로 전송할 때 주로 사용합니다.curl --data-binary @filename.txt http://example.com/upload
오류hue에서 커버러스(kerberos)를 설정하고 실행 할 때 다음과 같은 오류가 발생하면서 제대로 실행되지 않는 문제가 있었습니다. [28/Mar/2024 21:45:22 +0900] kt_renewer ERROR Couldn't renew kerberos ticket in order to work around Kerberos 1.8.1 issue. Please check that the ticket for 'hue/test.com@KERB.ROS' is still renewable: $ klist -f -c /tmp/hue_krb5_ccacheIf the 'renew until' date is the same as the 'valid starting' date, the ticket can..
curl을 이용하여 통신할 때 특정 상황에서 다음 오류가 발생하는 경우가 있습니다. curl은 기본적으로 HTTP2 프로토콜을 이용하여 통신하고, 이 프로토콜을 이용하던 중 오류가 발생하면 다음의 에러가 나타납니다. Error in the HTTP2 framing layer 이 오류는 옵션을 추가하여 HTTP1 통신으로 처리하면 회피할 수 있습니다. curl --http1.1 xxx
apt 를 이용하여 라이브러리를 설치 할 때 다음과 같은 오류가 발생하는 경우가 있습니다. The following packages have unmet dependencies: libsasl2-modules-gssapi-heimdal : Conflicts: libsasl2-modules-gssapi-mit but 2.1.27~101-g0780600+dfsg-3ubuntu2.3 is to be installed libsasl2-modules-gssapi-mit : Conflicts: libsasl2-modules-gssapi-heimdal but 2.1.27~101-g0780600+dfsg-3ubuntu2.3 is to be installed E: Unable to correct problems, you ..
우분투에서 이더넷이 2개 일 때 하나의 네트워크는 내부 통신을 위해 사용하고, 다른 하나는 외부 통신의 목적으로 사용할 수 있습니다. 이때 외부로 나가는 이더넷을 확인하는 방법은 2가지가 있습니다. 하나는 ip route 명령을 이용합니다. ip route 명령을 사용했을 때 default 로 표현되는 이더넷이 외부로 나갈 때 사용하는 경로가 됩니다. $ ip route default via 11.182.92.1 dev enp4s0 proto dhcp src 11.182.94.148 metric 100 다른 하나는 ifconfig 명령을 이용합니다. 외부 경로에서 파일을 다운로드 하거나, 다른 작업을 처리하여 패킷을 사용하고 ifconfig 명령으로 RX 패킷이 늘어나는 이더넷을 확인하면 됩니다. $ i..
jupyter를 설치하기 위해서 ubuntu 20에서 파이썬 3.6 버전을 설치해야 하는 경우가 있어서 python 빌드 방법을 정리합니다. 우분투 20은 파이썬 3.8 버전이 기본 설치 되어 있습니다. 파이썬 3.6 버전을 사용하기 위해서는 소스를 다운 받아서 빌드해야 합니다. 주의 사항 설치할 때 make install 을 절대 사용하면 안됩니다. 기존에 설치된 파이썬 3.8과 중복되어 기본 적인 명령(ex: apt)이 실행되지 않을 수 있습니다. sudo update-alternatives 명령을 사용해서 기본 파이썬 명령을 변경할 때도 동일한 결과가 발생할 수 있습니다. 되도록 심링크등을 이용해서 설정하는 것이 좋습니다. apt 로 설치하는 라이브러리도 함께 설치 하고 빌드 하는 것이 좋습니다. ..
ubuntu 18.04에 패키지를 설치할 때 기본적으로 apt 를 이용하지만, 인터넷이 되지 않는 환경에서 작업을 해야 할 때는 설치 파일을 다운로드 해서 설치해야 합니다. 설치 파일은 다음 위치에서 확인할 수 있습니다. https://ubuntu.pkgs.org/20.04/ubuntu-main-arm64/libsnappy1v5_1.1.8-1build1_arm64.deb.html 그리고 Download 항목에서 설치 파일 다운로드 링크를 확인할 수 있습니다. 이 파일을 받아서 dkpg 명령으로 설치할 수 있습니다. 파일로 다운로드를 받게 되면 사전에 필요한 라이브러리가 없어서 설치가 안될 수도 있습니다. 이럴때는 필요한 라이브러리를 순서대로 설치해 주어야 합니다. 스내피 라이브러리명인 libsnappy-..
ssh로 서버에 접속할 때 접속자에게 배너를 보여 줄 수 있습니다. 배너를 설정하는 방법은 다음과 같습니다. /etc/ssh/sshd_config 의 banner 설정 수정. 사용자가 생성한 파일의 경로 지정 banner 파일 생성 sshd 재시작 배너로 사용하기에 좋은 ASCII Art 를 만들어 주는 사이트를 참고해서 배너를 만들면 좋습니다. https://patorjk.com/software/taag/#p=testall&f=Ogre&t=banner Text to ASCII Art Generator (TAAG) patorjk.com
원인은 정확하게 알 수 없지만 curl을 이용하여 데이터를 확인한 결과를 다음 curl에 헤더값으로 사용하니 이상하게 다음과 같은 오류가 발생하였습니다. curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1) 오류는 다음과 같이 http1.1 옵션을 추가해서 해결하였습니다. 처음에 사용한 curl의 스트림이 계속 연결된 상태로 다음 스트림을 계속 사용해서 그런것 같습니다. curl --http1.1 http://host_url
배쉬 쉘에서는 set 을 이용해서 옵션을 켜고 끌수 있습니다. 자주 사용하는 옵션은 오류가 발생하면 스크립트를 종료하게 하는 -e와 디버깅 메시지를 출력하게 하는 -x 옵션이 있습니다. 만약 옵션을 켜고 사용하는 중에 잠시 옵션을 꺼야 한다면 마이너스(-) 대신 플러스(+)를 사용하면 됩니다. #!/bin/bash # 디버깅 메시지 출력 set -x echo "A" # 디버깅 메시지 종료 set +x echo "B" # 디버깅 메시지 출력 set -x echo "C"
df로 용량을 확인할 때는 사용량이 많은데 du로 확인할 때는 용량이 남는 경우가 있습니다. 이럴때는 lsof | grep delted 명령으로 사용중인 파일중 삭제할 스왑파일을 찾아보면 다음과 같이 VI 프로세스가 남아서 스왑파일이 남는 파일을 삭제 해주면 됩니다. # df로 확인할 때는 사용량이 291G 사용 $ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 7.3M 1.6G 1% /run /dev/sda2 440G 291G 132G 69% / tmpfs 7.8G 64K 7.8G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 7.8G 0 7.8G 0% /s..
ubuntu의 클라우드 이미지를 사용할 때 환경에 따라서 apt 사용시 락(lock)이 걸려서 사용을 하지 못하는 경우가 있습니다. 이 경우 원인은 다른 프로세스에서 apt를 사용하고 있을 때 발생합니다. 여러 가지 원인이 있을 수 있는데 저 같은 경우에는 사용하는 네트워크 환경에서 apt의 기본 리파지토리에 접근할 수 없어서 발생하였습니다. 기본 리파지토리에 접근이 안되는데 apt-daily.service 가 실행되어 다른 패키지를 설치 할 수 없는 문제가 발생하였습니다. 해결 방법 - apt-daily.service 종료 이 문제를 해결하는 방법은 apt-daily.service를 종료하고, /etc/apt/sources.list 파일을 교체 후 다시 실행하는 것입니다. https://unix.sta..
우분투에서 크론탭을 설정하는 중에 Operation not permitted 오류가 발생하는 경우가 있습니다. 이는 crontab 파일의 수정을 위한 권한이 부족할 때 발생합니다. 다음과 같이 /var/spool/cron/crontabs 파일의 수정권한이 부족하기 때문에 발생하는 오류로 해당 위치의 권한을 수정해야 합니다. # 오류 $ crontab -e crontab: installing new crontab crontab: crontabs/deploy: rename: Operation not permitted crontab: edits left in /tmp/crontab.BDmSwI/crontab # /var/spool/cron/crontabs 파일 수정 권한 부족 $ ll total 20 drwx..
CentOS에서 AdoptOpenJDK 설치할 때 명령은 다음과 같습니다. 이 명령으로 설치할 수 없다면 리파지토리 설정을 추가해야 합니다. yum install -y adoptopenjdk-8-openj9 리파지토리 설정 리파지토리는 /etc/yum.repos.d에 repo 파일을 추가하면 됩니다. $ ls /etc/yum.repos.d $ vi adopt.repo [AdoptOpenJDK] name=AdoptOpenJDK baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/$releasever/$basearch enabled=1 gpgcheck=1 gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/..
프로세스의 CPU, 메모리 사용 정보를 확인하는 방법은 ps, top 명령을 이용하는 것입니다. 프로세스의 메모리를 확인할 때는 프로세스의 PID를 알고 있어야 합니다. PS ps 명령의 -o, -p 옵션을 이용합니다. # 18299 프로세스의 정보를 확인 # pid: 프로세스 ID # pcpu: CPU 사용률 # pmem: 메모리 사용률 # rss: 물리 메모리 사용량 # vsz: 가상 메모리 사용량 # cmd: 커맨드 $ ps -o pid,pcpu,pmem,rss,vsz,cmd -p 18299 PID %CPU %MEM RSS VSZ CMD 18299 0.0 3.7 599432 3023072 /usr/lib/jvm/java 18299 프로세스의 정보를 확인해 보면 현재 3.7%의 CPU 점유율을 가지고..
CLI 환경에서 현재 사용중인 시스템의 CPU와 메모리 사용량을 알아보겠습니다. CPU 사용량 CPU 사용량을 top 명령으로 확인하는 방법을 알아보겠습니다. top 명령을 실행하면 아래와 같이 시스템의 전체 정보와 현재 실행 중인 프로세스의 정보를 확인할 수 있습니다. $ top top - 02:18:58 up 208 days, 15:21, 2 users, load average: 0.04, 0.08, 0.08 Tasks: 209 total, 1 running, 138 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 15837320k total, 12287800..
xmllint의 입력을 표준 입력(stdin)으로 사용하는 방법은 하이픈(-)을 이용하는 것입니다. 리눅스에서 사용하는 명령어는 표준출력(stdout)과 표준 입력(stdin)을 하이픈으로 표현하기도 합니다. 명령어의 표준 출력과 표준 입력을 연결하는 파이프(|)에서 하이픈(-)을 이용하면 표준 출력이 표준 입력으로 전달됩니다. 사용하는 방법은 다음과 같습니다. # sample.xml 파일을 읽어서 xml 출력 포맷과 들여쓰기를 조정 $ xmllint --format sample.xml A B # 표준입력으로 전달하면 오류가 발생 $ echo "AB" | xmllint --format Usage : xmllint [options] XMLfiles ... Parse the XML files and outp..
VI는 터미널 환경에서 많이 사용되는 텍스트 에디터입니다. 리눅스 배포판에 기본적으로 설치되어있고 다양한 기능을 가지고 있어 자주 사용하게 됩니다. 우리가 터미널 환경에서 사용하는 VI는 보통 VIM(Vi Improved)인 경우기 많습니다. VIM은 VI를 개선하여 만들어진 프로그램으로 리눅스에는 기본적으로 VIM이 VI로 alias가 등록되어 있습니다. # vi 명령의 alias 확인 $ alias vi alias vi='vim' VI의 특징 문법 강조 파일 타입을 이용하여 문법 강조 기능 제공 다양한 기능 검색, 치환, 복사, 붙여 넣기, 블록 지정 등 다양한 기본 기능 제공 단축키를 이용하여 빠른 작업 가능 테마 설정 기본 테마 변경 및 사용자 정의 테마 설정 가능 VI 사용 모드 VI는 4가지의..
리눅스의 CLI환경에서 영어를 입력하고 홈(Home) 키나 엔드(End) 키를 이용하여 커서를 이동하려고 할 때 입력한 영어문자가 대문자, 소문자로 변경되는 상태가 될 때가 있습니다. 이는 리눅스 커맨드 라인의 입력 환경이 vi로 설정되어 있어서 발생하는 문제입니다. emacs모드로 변경하면 됩니다. 수정하는 방법은 다음과 같습니다. # set -o 명령으로 변경 # -o는 옵션을 지정하는 명령 $ set -o [vi|emacs] # emacs 모드 변경 $ set -o emacs # vi 모드 변경 $ set -o vi 리눅스는 기본적으로 두 개의 입력환경을 지원합니다. 사용자가 원하는 환경을 개별 사용자의 프로파일(~/.bashrc or ~/.profile)파일이나, OS 전체의 환경 프로파일(/et..
ssh 터널링을 이용하여 원격지의 포트에 접속할 때 다음과 같은 오류가 발생하는 경우가 있습니다. channel 3: open failed: connect failed: Connection refused channel 3: open failed: connect failed: Connection refused 터널링 명령어 이때 사용한 터널링 명령어는 다음과 같았습니다. 로컬호스트의 14000포트와 원격지(10.20.30.40)의 8088 포트를 연결하였습니다. ssh -L 14000:127.0.0.1:8088 -oPort=20022 user@10.20.30.40 해결방법 원인은 원격지에 127.0.0.1에 대한 루프백설정이 막혀있어서 발생한 오류였습니다. 따라서 터널링 명령을 다음과 같이 변경하면 됩니다..
- Total
- Today
- Yesterday
- yarn
- HIVE
- ubuntu
- emr
- java
- SPARK
- S3
- Python
- 다이나믹
- HDFS
- hbase
- 백준
- 알고리즘
- 오류
- 파이썬
- 정올
- bash
- Hadoop
- 하이브
- Tez
- SQL
- 하둡
- nodejs
- mysql
- build
- oozie
- AWS
- error
- Linux
- airflow
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |