본문 바로가기

Computer Science/Linux

[centos7] OpenSSL1.1.1 설치 centos7에서 python 3.10 버전을 컴파일 할 때 openssl 1.1 이상의 라이브러리가 필요하다. 하지만 기본적으로 깔려있는 버전은 openssl 1.0 버전이다. 다음은 centos7에서 openSSL 1.1.1을 설치하고 pyenv에서 python3.10.x 버전 설치하는 방법을 정리했다. 에러메시지 Installing Python-3.10.7... ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? Please consult to the Wiki page to fix the problem. https://github.com/pyenv/pyenv/wiki/Common-build-problems BUILD .. 더보기
[linux] shell 명령어 반복 실행(watch) shell에서 명령어를 반복적으로 실행해야 할 때가 있다. 시스템의 자원 사용량을 모니터링하거나 명령어를 반복적으로 입력하면서 결과를 확인 해야하는 경우이다. 필자의 경우에는 k8s를 사용할 때 kubectl get pods 명령어를 지속적으로 입력하며 확인할 때 사용하였다. 문법: watch -n [시간:초] 예시: 10초마다 pods 정보를 출력 watch -n 10 kubectl get pods 더보기
[Linux/Shell] OSError: [Errno 7] Argument list too long: 'bash' 오류 해결 방법 bash shell을 호출하면서 매우 긴 argument를 넣는 경우 이러한 에러를 볼 수 있다. 필자는 echo 로 엄청나게 긴 json 스트링을 파일에 리다이렉션 하는 경우 발생했다. 예를 들면 다음과 같다. 오류예시 코드: echo ${verrrrrry long string} > tmp.json >> OSError: [Errno 7] Argument list too long: 'bash' 이 외에도 디렉토리의 하위에 파일이 매우 많은경우 ls 를 수행했을 때도 발생할 수 있다. 이러한 경우 사용하는 argument 사이즈를 줄이거나, stack 사이즈를 늘려서 더 많은 argument를 받을 수 있게 해야한다. stack 사이즈 조절(최대치 허용): ulimit -s unlimited 추가로 she.. 더보기
[Linux/Shell] 리눅스 쉘에서 인자(Argument)의 limit을 확인하는 방법 shell에서 argument를 사용할 때 특정 길이를 넘지 않도록 해야한다. 아마 일반적인 경우에는 그런일이 별로 없겠지만 가끔 인자가 특정 길이를 넘기면 오류가 발생하는 것을 확일할 수 있다. OSError: [Errno 7] Argument list too long: 'bash' 그렇다면 어떻게 하면 인자의 limit을 확인할 수 있을까? 방법은 다음과 같다. 인자 최대길이(바이트)를 출력하는 command: getconf ARG_MAX 결과: 더보기
[linux] 리눅스 종류 및 버전 확인 - 대부분의 리눅스에서 사용가능 방법 1. OS에 관련된 릴리즈 정보를 모두 출력한 뒤 unique한 row만 남기는 방식으로 출력한다. cat /etc/*-release | uniq 방법 2. grep을 활용하여 검색 grep . /etc/*-release 실행예시 (Ubuntu 14.04.3) root@zetawiki:~# grep . /etc/*-release /etc/lsb-release:DISTRIB_ID=Ubuntu /etc/lsb-release:DISTRIB_RELEASE=14.04 /etc/lsb-release:DISTRIB_CODENAME=trusty /etc/lsb-release:DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS" /etc/os-release:NAME="Ubuntu" /etc/os.. 더보기
channel 1: open failed: administratively prohibited: open failed Error while using SSH port forwarding SSH 포트포워딩 사용 중 에러 발생 channel 1: open failed: administratively prohibited: open failed Port forwarding option modification required in file '/etc/ssh/sshd_config' '/etc/ssh/sshd_config' 파일에서 포트포워딩 옵션 수정이 필요 sudo vi /etc/ssh/sshd_config - AllowTcpForwarding no + AllowTcpForwarding yes 더보기
아마존 리눅스(Amazon Linux)에서 몽고디비(mongoDB)설치 (yum repo 추가) 아마존 리눅스에서 이런 에러가 나타난다면 해당 repo 설정이 필요하다. If such an error appears on Amazon Linux, the mongodb repo setting is required. $ sudo yum install mongodb-org Loaded plugins: priorities, update-motd, upgrade-helper No package mongodb-org available. Error: Nothing to do /etc/yum.repos.d/mongodb-org-5.0.repo 폴더를 새성하여 mongoDB repo정보를 추가 Create a /etc/yum.repos.d/mongodb-org-5.0.repo file so that you can i.. 더보기
#!/bin/sh 는 왜 쓰는거야? - 셔뱅, 해시뱅(shebang, hashbang) 아마 초보 개발자들이 처음 선배들의 쉘이나 파이썬 코드를 보면 의문이 생길껍니다. 아니 첫줄에 주석인데 저건뭐지? 의미없는걸 왜 꼭 챙겨서쓰는거지? 이건 주석이 아니라 셔뱅(shebang)입니다. sharp(#) + bang(!) 합성어로 Unix계열 OS(리눅스, Mac)에서 스크립트(bash, python등등) 코드 최상단에서 해당 파일을 해석해줄 인터프리터의 절대경로를 지정합니다. 지정된 인터프리터 프로그램이 대신 실행되어 스크립트의 실행을 시도할 때 처음 사용되었던 경로를 인수로서 넘겨주게 됩니다. 시스템마다 인터프리터의 절대경로는 다를 수 있기때문에 가능하면 심볼릭 링크가 있는 /usr/bin/env를 경로로 사용하는 것이 좋습니다. 더보기