안쓰는 docker container를 삭제한다. 다만, 일시적으로 안쓰던 것도 삭제될 수 있다.

$ docker container prune

 

일정 시간 사용하지 않은 docker container를 삭제한다.

$ docker container prune --filter "until=2400h"

2400h : 사용한지 100일(24h x 100) 이상 지난 docker container를 모두 삭제한다.

 

이후 아래를 추가로 해주는 것도 좋다.

container와 연결이 없는 image를 삭제한다.

$ docker image prune -a

 

반응형

Nvidia-docker 설치 시 오프라인, 외부망 접근 금지 등으로 인해서 pip install 이 불가능하여 수작업으로 설치해야하는 경우가 있다.

 

이 경우 아래와 같은 순서로 설치한다.

libnvidia-container1_1.13.5-1_amd64.deb
libnvidia-container-tools_1.13.5-1_amd64.deb

nvidia-container-toolkit-base_1.13.5-1_amd64.deb

nvidia-container-toolkit_1.13.5-1_amd64.deb

 

1) 기존 nvidia-docker dpkg를 삭제

# 설치된 패키지 검색
$ dpkg --list | grep nvidia
ii  libnvidia-container-tools  1.9.0-1  amd64 NVIDIA container runtime library (command-line tools)
ii  libnvidia-container1:amd64 1.10.0-1 amd64 NVIDIA container runtime library
ii  nvidia-container-toolkit   1.9.0-1  amd64 NVIDIA container runtime hook
...

# 출력된 리스트 중 불필요한 구 파일 삭제
# dpkg -r [패키지명]
$ dpkg -r libnvidia-container-tools
$ dpkg -r libnvidia-container1:amd64
$ dpkg -r nvidia-container-toolkit

 

2) 순서대로 설치

$ dpkg - i libnvidia-container1_1.13.5-1_amd64.deb
$ dpkg - i libnvidia-container-tools_1.13.5-1_amd64.deb
$ dpkg - i nvidia-container-toolkit-base_1.13.5-1_amd64.deb
$ dpkg - i nvidia-container-toolkit_1.13.5-1_amd64.deb

 

3) [필수] 도커 서비스 재가동 (docker service restart)

$ systemctl restart docker

 

※ 참고사항

- 순서가 바뀌거나 더 필요한 게 있다면 하기와 같이 친절히 표기가 되니, 맞추어 설치한다.

   dpkg: dependency problems prevent configuration of nvidia-container-toolkit:
    nvidia-container-toolkit depends on nvidia-container-toolkit-base (= 1.13.5-1); however:
    Package nvidia-container-toolkit-base is not installed.

 

- 버전에 따라서, (1.10 이하) toolkit-base 설치가 필요없다. (toolkit-base 패키지도 없다.)

 

- 아래는 설치 안해도 괜찮다.

   nvidia-container-runtime_3.13.0-1_all.deb

   nvidia-docker2_2.13.0-1_all.deb

 

- nvidia-docker 설치 패키지(deb) 받는 곳

https://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/ubuntu20.04/amd64/

 

Index of /nvidia-docker/libnvidia-container/stable/ubuntu20.04/amd64/

 

mirror.cs.uchicago.edu

 

반응형

하기처럼 docker 이미지를 출력하면 docker repository 와 tag가 <none>으로 출력되는 경우가 있다.

$  docker images
REPOSITORY                                    TAG                                   IMAGE ID       CREATED        SIZE
<none>                                               <none>                              4d78d3e67cb5   1 months ago   30.8GB

sys                                                      v1.4                                   d38be44fe367    1 weeks ago     20.8GB

    ... ...

opt                                                      v1.1                                   a38be45fe457     2 weeks ago     10.1GB

 

<none>으로 표기된 이미지를 삭제하지 않고 이름을 붙일 필요가 있다면, 하기 명령으로 repository와 tag를 부여할 수 있다.

docker image tag [image_id] [repository name:tag]

 

사례)

$ docker image tag 4d78d3e67cb5  test:v1.0

$ docker images

REPOSITORY                                    TAG                                   IMAGE ID       CREATED        SIZE
test                                                      v1.0                                   4d78d3e67cb5   1 months ago   30.8GB

sys                                                      v1.4                                   d38be44fe367    1 weeks ago     20.8GB

 

해당 원인은 여러 개가 있는데 주로 빌드 할 때, 이미 존재하는 레포지토리:태그명과 중복된 상태로 빌드하거나 이미지가 제대로 빌드 되지 않아서 발생하며 Dangling Image라고 부른다.

위처럼 repository와 tag 명을 강제로 붙여줄 수도 있으나 삭제하는 게 좋을 경우가 많다. 이 경우 하기 명령으로 삭제 한다.

아래 세 개 명령은 약간으 ㅣ차이는 있으나 모두 Dangling Image를 삭제하게 된다.

 

1) $ docker iamge prune

2) docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

3) $ docker rmi $(docker images -a|grep "<none>"|awk '$1=="<none>" {print $3}')

 

 

반응형

 

모바텀은 매우 편한 터미널이지만 종종 세션이 끊어지거나 연결이 죽는 현상(freezing)이 발생한다. 모바텀 세션이 끊기거나 죽는 현상은 2개이다.

  - 세션이 죽거나 화면이 멈추는 현상 (freezing) 

  - 사용이 오래되어 세션이 끊기는 현상 (stopped session)

 

1. 세션이 죽거나 화면이 멈추는 현상 (freezing) 

이것은 상당히 쓰기 불편한데, 하단과 같이 처리하면 해결된다.

 

모바텀 메뉴 Settings → Configuration →  SSH (tab) → GSSAPI Kerberos 체크 제거

 

리눅스에서 종종 있는 문제로 GSSAPI kerberos 가 활성화되어 있으면 keberos DNS에 질의를 하는데 DNS 응답이 늦어질 경우 접속지연이 발생한다. 이로 인해 간헐적으로 접속지연이 발생하거나 화면이 멈추는 현상이 발생한다.

 

만약 서버에서 설정하고 싶다면

vi /etc/ssh/sshd_config

GSSAPIAuthentication no

 

을 입력하고 저장한다.

 

2. 사용이 오래되어 세션이 끊기는 현상 (stopped session)

이것은 사실 정상적인 애플리케이션의 처리현상이다. 다만, 역시 불편하다.  하기와 같이 나올 때 세션이 끊긴 것이다.

 Network error: Software caused connection abort
 ─────────────────────────────────────────────────────
 Session stopped
     - Press <Return> to exit tab
     - Press R to restart session
     - Press S to save terminal output to file

 

모바텀 메뉴 Settings → Configuration →  SSH (tab) → SSH keepalive 체크 추가

(버전에 따라 다른데, Fix connection issues 체크 버튼이 보이면 추가로 체크해야 한다.)

 

반응형

우분투 Bash 쉘스크립트 작성 시 if 문 내에서 연산자 ( ==, <  등)을 사용할 때 No such file or directory 오류가 나는 경우에 해결방법은 아래와 같다.

 

□ 사례

text.sh

var=100
if [ $var < 200 ]; then
     ... ...

else 
     ... ...
fi

 

실행 결과 

$ bash test.sh
test.sh: line 3: 200: No such file or directory

 

bash 쉘(POSIX 쉘) 가이드에 따르면 하기와 같이 "<" 연산자 대신 "-lt"로 수정해야 제대로 동작한다.

[ "$var" -lt 200 ]

 

각 사용법은 하기와 같다.

 

□ POSIX 쉘 가이드 : 상황별 "<" 연산자 사용 방법

   - ※ [   공백   "$var"   -lt   200   공백   ] 처럼 '공백' 이 있어야 한다.

문법 대상 (상황) 주의 사항
[ "$var" -lt 200 ] 숫자 비교 POSIX shell 전체
[ "$var" \< 200 ] 문자 비교 POSIX shell 전체
[[ $var -lt 200 ]] 문자 비교 bash, ksh 에서만 동작
(( $var -lt 200 )) 숫자 비교 bash, ksh 에서만 동작
(( var < 200 )) 숫자 비교, var를 $ 없이도 변수로 인식함 bash, ksh 에서만 동작

 

 

□ 참고

비교 연산자 사용법 의미
== [ $A == $B ] 같다
!= [ $A != $B ] 같지 않다
> [ $A > $B ] 크다
>= [ $A >= $B ] 크거나 같다
< [ $A < $B ] 작다
<= [ $A <= $B ] 작거나 같다
&& [ $A && $B ] 논리연산 AND, 둘 다 모두 True 이면 True
|| [ $A || $B ] 논리연산 OR, 둘 중 하나가 True 이면 True

 

비교식 사용법 약어 유래 의미 비고
-z [ -z $A ]   공백이면 True $A == ""
-n [ -n $A ]   공백이 아니면  True $A != ""
-eq [ $A -eq $B ] equal to 같다 $A == $B
-ne [ $A -ne $B ] not equal to 같지 않다 $A != $B
-ge [ $A -ge $B ] greater than or equal to 크거나 같다 $A >= $B
-gt [ $A -gt $B ] greater than  크다 $A > $B
-le [ $A -le $B ] less than or equal to 작거나 같다 $A <= $B
-lt [ $A -lt $B ] less than 작다 $A < $B
-a [ $A -a $B ]   논리연산 AND, $A, $B 모두 True이면 True $A && $B
-o [ -o $A ]   논리연산 OR,  $A, $B 중 하나가 True이면 True $A || $B

 

파일 비교 사용법 의미
-f [ -f $A ] 파일  (디렉토리나 다른 형태의 파일은 False)
-d 이하 동일 디렉토리
-L   심볼링 링크 
-r   사용자가 대상에 읽기 권한(read)을 가지고 있으면 True
-w   사용자가 대상에 쓰기 권한(write)을 가지고 있으면 True
-x   사용자가 대상에 쓰기 실행(execution)을 가지고 있으면 True
-s   파일 크기가 0 이 아니면 True
-S   소켓
-nt [ $A -nt $B] $A 파일이 $B 보다 최신이면 True
-ot [ $A -ot $B] $A 파일이 $B 보다 오래되면 True
-ef [ $A -ef $B] 동일 파일이면 True

 

반응형

'Linux' 카테고리의 다른 글

docker repository <none>  (0) 2024.10.04
모바텀(MobaXterm) 세션 죽는 현상 개선  (0) 2024.09.10
tar, tar.gz 압축 및 해제  (2) 2024.07.03
Docker 중단없이 나오기(Detach)  (2) 2024.02.25
Ubuntu 버전 확인  (0) 2024.02.24

□ tar

- tar 압축

$ tar -cvf   "압축 파일명.tar"    "폴더 or 파일"

   e.g. tar -cvf target.tar source.txt

 

- tar 압축해제

$ tar -xvf "파일명.tar"

   e.g. tar -xvf target.tar

 

□ tar.gz

  기존 tar 명령어에 -z 옵션(option) 추가

 

- tar.gz 압축

$ tar -zcvf   "압축 파일명.tar"    "폴더 or 파일"  

   e.g. tar -cvf target.tar.gz source.txt

 

- tar.gz 압축 해제

$ tar -zxvf   "압축 파일명.tar.gz"

   e.g. tar -zxvf target.tar

주요 명령 옵션(command options)

options 설명
 -c  압축
 -x  압축 해제
 -v  작업진행 상태를 화면에 출력
 -f  파일명 지정
 -z  gzip 압축 또는 해제

 

반응형

 

Container를 실행(running) 상태로 두면서 나오기, 아래처럼   Ctrl 버튼 누른 상태에서 p, q를 순서대로 입력한다.

Ctrl+p+q 

 

나온 상태에서 docker ps를 실행하면

$ docker ps

CONTAINER ID   IMAGE    COMMAND    CREATED          STATUS        PORTS   NAMES
042b6ec17812   nvidia   "/opt/…"   51 minutes ago   Up 51 minutes         strange_galois

 

위 STATUS 항목에서 볼 수 있듯이 UP 상태로 그대로 실행 중인 것을 확인할 수 있다.

 

다시 접속을 위해서는 위 예제의 경우 NAMES = strange_galois 이므로 아래와 같이 명령을 수행한다.

$ docker attach strange_galois

 

여담으로 실행 중인 docker 컨테이너에 접속하는 것을 attach라고 칭하듯이, 컨테이너 중단 없이 나가는 것을 detach 라고 부른다. 또한, docker 옵션 중 -d 옵션이 detach mode를 뜻하며 아래 명령은 컨테이너 ABC를 중단없이 백그라운드로 실행한다.

 

$ docker -d -- name ABC   

 

 

 

반응형

Ubuntu 버전의 경우 몇 가지 방법으로 버전 확인을 할 수 있다.

 

가장 쉬운 방법은 하기와 같다. Ubuntu는 /etc/issue 파일에 간단한 시스템 버전 정보를 기재해 놓고 있다. 간단히 출력해서 확인이 가능하다. 해당 파일은 누구나 읽을 수 있도록 되어 있다(-rw-r--r--).

$ cat /etc/issue

 

보다 상세한 정보는 /etc/os-release에 기재되어 있다. 구체적인 정보를 확인할 수 있으므로 가장 좋은 방법이라고 생각된다.

$ cat /etc/os-release

 

lsb_release 명령을 사용하는 방법도 있다.

$ lsb_release -a 

 

lsb_release의 경우 -d 옵션을 사용할 수도 있다.

$ lsb_release -d

 

이외 방법으로 hostnamectl 을 통해서 간접 확인이 가능하다. 참고로 hostnamectl은 시스템 host 명을 설정하는 데 사용하는 명령이다.

 

$ hostnamectl

 Static hostname: h100-cluster-002
       Icon name: computer-server
         Chassis: server
      Machine ID: de2a9aa515524021a6eddac86033f257
         Boot ID: 2e1df185400f43eea56e427114449f4c
Operating System: Ubuntu 22.04 LTS
          Kernel: Linux 5.15.0-25-generic
    Architecture: x86-64
 Hardware Vendor: HPE
  Hardware Model: HPE Cray XD670

 

반응형

 

 

윈도우 환경에서 우분투 원격 접속 할때, 접속은 되지만 검은 화면(black screen)만 보이는 경우가 많다. (사실 대부분...?)

이 경우, xrdp X session start script에 아래 세 줄을 추가해서 해결할 수  있다.

 

unset DBUS_SESSION_BUS_ADDRESS 
unset XDG_RUNTIME_DIR 
. $HOME/.profile

 

우선 startwm.sh 파일을 연다. 하기처럼 해당 파일의 특정 위치에 추가해야 한다.

$ sudo vi /etc/xrdp/startwm.sh

#!/bin/sh
# xrdp X session start script (c) 2015, 2017 mirabilos
# published under The MirOS Licence

                         ... 중략 ....
        
        test -z "${LC_NUMERIC+x}" || export LC_NUMERIC
        test -z "${LC_PAPER+x}" || export LC_PAPER
        test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE
        test -z "${LC_TIME+x}" || export LC_TIME
        test -z "${LOCPATH+x}" || export LOCPATH
fi

if test -r /etc/profile; then
        . /etc/profile
fi

# 추가할 부분
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
. $HOME/.profile

test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession
~

 

추가한 세 줄은 test ... exec.. 위에 위치해야 하며 이후 xrdp 서비스를 재시작한다.

$service xrdp restart

 

원격 접속을 다시 시작해서 결과 확인한다. 

 

□ 관련 페이지

- Ubuntu GUI 원격접속 https://driz2le.tistory.com/467

 

Ubuntu GUI 원격접속

윈도우 원격접속을 이용해서 Ubuntu GUI 환경으로 접속을 위해 xrdp 를 이용할 수 있다. 우선 하기와 같이 xrdp vnc3server tightvncserver를 삭제한다. 해당 서비스의 경우 높은 확률로 vnc error ( VNC error - probl

driz2le.tistory.com

 

반응형

'Linux' 카테고리의 다른 글

Docker 중단없이 나오기(Detach)  (2) 2024.02.25
Ubuntu 버전 확인  (0) 2024.02.24
Ubuntu 디스크 용량 확인  (0) 2024.02.07
[Windows] Jupyter notebook 띄우기  (2) 2024.02.07
Ubuntu USB 만들기 (ubuntu 22.04)  (0) 2023.09.08

□ 환경

- Ubuntu 

 

디스크 별 용량 확인
df -h
 
특정 디렉토리 용량 확인
du -hs folder
(-h : byte 형태로 출력)

특정 폴더에 있는 폴더 및 파일 용량 출력
du -hs 폴더명

 

특정 폴더에서 파일 용량이 큰 순서대로 출력
du -h --max-depth=1 폴더명 | sort -hr

특정 디렉토리에 있는 폴더들에 대해 용량 크기 순으로 정렬하여 출력
sudo du -ah --max-depth=1 폴더명 | sort -hr

반응형

'Linux' 카테고리의 다른 글

Ubuntu 버전 확인  (0) 2024.02.24
xrdp 원격 접속, 검은 화면 해결(black screen)  (2) 2024.02.22
[Windows] Jupyter notebook 띄우기  (2) 2024.02.07
Ubuntu USB 만들기 (ubuntu 22.04)  (0) 2023.09.08
pip 최신 버전 맞춤 설치하기  (0) 2023.06.05

+ Recent posts