728x90

IT 417

[Linux] sed 커맨드 상황별 사용법

쉘에서 데이터를 가공할 때 sed를 자주 사용하게 되는데, 상황에 따른 사용예를 정리한 포스팅이다. sed 커맨드는 Linux/Unix/BSD/OSX의 경우 기본적으로 설치되어 있으므로, sed 커맨드를 사용하기 위해 따로 설치할 필요는 없다. 이 포스팅의 경우 Redhat계 Linux메인이므로 경우에 따라 작성법이 조금 다를 수 있다는 점을 유의하길 바란다. 그럼 바로 본론에 들어가도록 하겠다. '#'로 시작하는 코멘트행을 삭제할 때 sed '/^#/d' source.txt 빈 행을 삭제할 때 sed '/^#/d' source.txt 행의 맨 앞이 #인 행과 빈 행을 삭제 cat source.txt | grep -v '^#' | sed '/^$/d' file1.txt의 15행부터 26행까지를 삭제한 후..

IT/기초 지식 2021.11.03

[python] Numpy배열 ndarray를 결합시키는 방법(concatenate, stack, block 등)

여러 개의 Numpy 배열 ndarray를 결합(연결)하기 위한 다양한 함수가 있다. 이번 포스팅에서는 아래의 내용에 대해서 설명하도록 하겠다. - numpy.concatenate()의 기본 사용법 - 결합할 배열 ndarray의 리스트를 지정 - 결합할 축(차원)을 지정 : 인수 axis - numpy.stack()으로 새로운 축(차원)에 따른 결합 - numpy.block()으로 배치를 지정하여 결합 - numpy.vstack()으로 세로로 결합 - numpy.hstack()으로 가로로 결합 - numpy.dstack()으로 깊이 방향으로 결합 기존의 축(차원)에 따라 결합하는 것이 numpy.concatenate()로, 새로운 축에 따라 결합하는 것이 numpy.stack()이다. 예를 들어, 2차..

IT/언어 2021.11.02

[Linux] expect를 이용한 Linux 커맨드 입력 자동화

Linux환경에서 어떤 패키지를 설치할 때 yes를 입력해야거나 선택지를 입력해야할 경우가 있는데, 이럴 때 그러한 입력을 자동화할 수 있는 것이 expect이다. expect란? Linux에서의 커맨드 대화를 자동화하도록 할 수 있는 모듈의 하나이다. Tcl이라는 프로그래밍 언어 베이스의 커맨드로 커맨드라고 이야기했지만, 사용방법은 스크립트형식이 될 것이다. expect는 Tcl의 슈퍼 세트로, expect 스크립트내에서 Tcl를 이용할 수 있다. 또한 expect는 yum이나 apt-get에서 설치할 수 있다. expect의 사용법 예를 들어, passwd 커맨드. 이것은 유저의 패스워드를 변경하는 커맨드이므로, 옵션이나 어떠한 것을 붙이지 않은 보통 사용할 경우에는 반드시 커맨드 "대화"가 발생한다..

IT/기초 지식 2021.10.20

[Singularity] Singularity + headless VNC + Pipenv를 사용한 강화학습 환경 만들기(gym, pybullet)

들어가기에 앞서 GPU 서버 상에 GUI가 보이는 환경이 필요했기 때문에 정리하였다. - gym(OpenAI Gym): 강화학습 알고리즘을 개발하고, 비교하기 위한 툴 키트 - pybullet(PyBullet Robotics Environments) : 심층강화학습을 위한 물리 시뮬레이션 환경 headless VNC란 VNC란 떨어져 있는 환경의 GUI를 조작하는 리모트 데스크톱을 의미하지만, 앞에 붙어 있는 headless머신이란 디스플레이를 가지지 않은, 즉 GUI가 없는 머신을 일컫는다. 즉 GUI를 가지지 않는 공유 GPU가 붙은 서버 상에, xfce 환경(GUI)를 만들어, 거기다 브라우져상에 VNC를 붙여 pytorch가 GPU상에서 움직이는 환경을 만들 수 있다. headless VNC를 사..

IT/기초 지식 2021.10.14

[Docker] Supervisor을 Docker에서 사용하기

Supervisor이란? 전통적(?)으로 Docker 컨테이너는 실행시에 1개의 프로세스를 실행한다. 예를 들어, Apache 데몬이나 SSH 서버의 데몬과 같은 것이 있다. 그러나 컨테이너 내에서 여러 개의 프로세스를 실행하고 싶을 경우가 있을 것이다. 이러한 소망을 실현시킬 수 있는 몇 가지 방법이 있다. 프로세스 관리 툴을 설치해 컨테이너의 CMD 명령으로 단순히 Bash 스크립트를 사용할 수 있도록 하면되는데, 이 때의 프로세스 관리 툴 중 하나가 Supervisor이다. Supervisor을 사용해, 컨테이너 내의 여러 개의 프로세스를 관리할 수 있다. 프로세스의 재실행도 가능하다. 즉 Docker시점에서 본다면, "Docker Container상에서는 Process가 Foreground로 실행..

IT/기초 지식 2021.10.14

[Docker] Docker 이미지를 오프라인에서도 사용하는 방법

인터넷에 접속할 수 없는 환경에서도 Docker 공식 리포지터리로 부터 Docker 이미지를 얻어내 사용하고 싶을 경우 방법에 대해 알아보려고 한다. 사용환경 - 다운로드용 PC : 인터넷에 연결 가능한 환경. Windows10에 Docker(version 17.09.0-ce) 도입. - Docker환경 : 다운로드용 PC와 소통이 가능하지만, 인터넷에는 연결되어 있지 않은 환경. Ubuntu상에 Docker(version17.03.2-ce) 도입. 실행 먼저 이미지 다운드로드용 PC상에서 Docker pull 커맨드를 사용하여 이미지를 얻어낸다. 예에서는 wordpress를 얻어내고 있다. #### 다운드로드용 PC PS C:\Users\User01> docker pull wordpress Using ..

IT/기초 지식 2021.10.13

[Docker/Singularity] Docker, Singularity의 차이

Singularity와 Docker의 호환성 문제 Singularity는 Docker image를 변환하여 Singularity image로써 실행할 수 있는 기능을 가지고 있다. Singularity가 도입되어 있는 머신에서는 no-root로 Docker image를 실행할 수 있다. 그 외에도 Singularity는 명시적으로 마운트를 하지 않아도 현재 디렉토리가 Singularity 컨테이너내의 워크 디렉토리가 되도록 하거나, Docker과 비교하여 파일 시스템의 isolation 제약이 일부 완화되어 있는 등 특정 용도에 따라서는 편리할 때가 많다. 하지만, Singularity와 Docker를 동일시하여 다루다가는 다양한 함정에 빠지게 된다. 여기서 몇 가지를 소개하도록 하겠다. Docker r..

IT/기초 지식 2021.10.12

[Docker] Docker 컨테이너에 네트워크 액세스하기(docker run -p 옵션)

들어가기에 앞서 $ docker run -t -p 9000:8080 gihyodocker/echo:latest 위의 docker run 커맨드에서 -p 9000:8080의 부분이 이해가 잘 안가서 정리하는 내용이다. TCP/IP접속과 포트 Docker에 대한 이야기를 하기 전에 TCP/IP 접속과 포트에 대해서 알보자. 이미 이 내용을 잘 알고 있다면 넘겨도 괜찮다. 예를 들어 웹브라우저에서 https://qiita.com 에 접속하는 것을 생각해보자. 보통 별로 신경쓰지 않지만, 블라우저에 표시하는 데이터를 qitta.com으로 부터 취득하기 때문에 https접속하지만, 그 토대가 되는 것이 TCP/IP 접속이다. 그 때 필요한 것이 "IP주소"랑 "포트 번호"이다. IP주소는 "호스트명"으로부터 DN..

IT/기초 지식 2021.10.12

[python] python을 이용해 GPU 사용률 등의 정보 얻기(nvidia-smi커맨드)

linux의 경우 nvidia-smi 커맨드를 사용해서 바로 GPU 사용률 등에 대한 정보를 취득할 수 있으나, windows환경에서는 곤란할 때가 있다. windows환경 상에서 python 코드를 이용한 nividia-smi커맨드를 적용할 수 있는 방법을 알아보고자한다. python으로 nividia-smi의 정보를 얻을 수 있는 함수 만들기 import subprocess import json DEFAULT_ATTRIBUTES = ( 'index', 'uuid', 'name', 'timestamp', 'memory.total', 'memory.free', 'memory.used', 'utilization.gpu', 'utilization.memory' ) def get_gpu_info(nvidia_..

IT/언어 2021.09.24

[Docker] Docker 커맨드 치트 시트

자주 사용하는 커맨드 # 실행중인 컨테이너에 들어가기 $ docker-compose exec hoge_app bash # stop $ docker-compose stop # docker-compose관리 하의 컨테이너를 삭제하고, 연결된 볼륨도 삭제 $ docker-compose rm -v # 캐시를 사용하지 않고 빌드 $ docker-compose build --no-cache # 컨테이너를 일괄 삭제 $ docker rm `docker ps -a -q` # 모든 볼륨을 삭제 $ docker volume rm $(docker volume ls -qf dangling=true) # 이미지의 목록 $ docker images -a # 이미지의 일괄 삭제 $ docker rmi `docker images -..

IT/기초 지식 2021.09.23
728x90