반응형

DB서버를 만들기 위해 몇가지 확인 하던 중 상당히 거슬리는 녀석을 만났다. 바로 /dev/loopN 

root@homesystem:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           382M  1.7M  381M   1% /run
/dev/sda5       457G   13G  421G   3% /
tmpfs           1.9G  8.9M  1.9G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/loop0      128K  128K     0 100% /snap/bare/5
/dev/loop1       62M   62M     0 100% /snap/core20/1434
/dev/loop2       66M   66M     0 100% /snap/gtk-common-themes/1519
/dev/loop3       56M   56M     0 100% /snap/core18/2344
/dev/loop4      249M  249M     0 100% /snap/gnome-3-38-2004/99
/dev/loop5       52M   52M     0 100% /snap/snap-store/518
/dev/loop6       65M   65M     0 100% /snap/gtk-common-themes/1514
/dev/loop7       56M   56M     0 100% /snap/core18/2284
/dev/loop8       62M   62M     0 100% /snap/core20/1405
/dev/loop9       55M   55M     0 100% /snap/snap-store/558
/dev/loop10     219M  219M     0 100% /snap/gnome-3-34-1804/77
/dev/loop11      45M   45M     0 100% /snap/snapd/15534
/dev/loop12      44M   44M     0 100% /snap/snapd/15177
/dev/loop13     219M  219M     0 100% /snap/gnome-3-34-1804/66
/dev/sda1       511M  4.0K  511M   1% /boot/efi
tmpfs           382M   28K  382M   1% /run/user/1000

 

/dev/loop 는 뭘까? 검색을 해보니 loop 디바이스라고 많이 불리오고 있었다. 뭐하는 놈인지 알아보자.

Unix 및 Linux와 같은 운영체제에서 파일은 루프 장치를 사용하여 블록 파일로 액세스 할 수 있습니다. 이러한 시스템의 RAM 점유와 관련이 없습니다. '/dev/loop' 장치는 파일 시스템 이미지가 있는 파일을 블록 장치인 것처럼 취급합니다. 스냅패키지가 그런 방슥으로 생성되기 때문에 loop device는 스냅입니다. 라고 한다. 영문을 그냥 번역했더니 어질어질하다.

 

그래서 지원도 되는거니?

 

어디에서 명확한 설명이나 답변이 없다. 그래서 그냥 다해보기로 했다. 어차피 재설치하면 그만이야.

 

#1 df -h 명령어 입력시 꼴보기 싫은 녀석 제외하는 방법

df -h -x squashfs -x tmpfs

root@homesystem:/var/lib/snapd/snaps# df -h -x squashfs -x tmpfs
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
/dev/sda5       457G   13G  421G   3% /
/dev/sda1       511M  4.0K  511M   1% /boot/efi

 

저걸 언제 다 외워서 쓸까? 지성인 답게 편리한 방법을 생각해보자...

 

#2 냅다 지워버리기

sudo apt autoremove --purge snapd

root@homesystem:~# sudo apt autoremove --purge snapd
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지를 지울 것입니다:
  chromium-codecs-ffmpeg-extra* gstreamer1.0-vaapi* libfwupdplugin1* libgstreamer-plugins-bad1.0-0* libllvm11* libva-wayland2* snapd*
0개 업그레이드, 0개 새로 설치, 7개 제거 및 34개 업그레이드 안 함.
이 작업 후 232 M바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까? [Y/n] y
(데이터베이스 읽는중 ...현재 195719개의 파일과 디렉터리가 설치되어 있습니다.)
chromium-codecs-ffmpeg-extra (1:85.0.4183.83-0ubuntu0.20.04.2)를 제거합니다...
gstreamer1.0-vaapi:amd64 (1.16.2-2)를 제거합니다...
libfwupdplugin1:amd64 (1.5.11-0ubuntu1~20.04.2)를 제거합니다...
libgstreamer-plugins-bad1.0-0:amd64 (1.16.2-2.1ubuntu1)를 제거합니다...
libllvm11:amd64 (1:11.0.0-2~ubuntu20.04.1)를 제거합니다...
libva-wayland2:amd64 (2.7.0-2)를 제거합니다...
snapd (2.54.3+20.04.1ubuntu0.2)를 제거합니다...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.7) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for dbus (1.12.16-2ubuntu2.1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
(데이터베이스 읽는중 ...현재 195581개의 파일과 디렉터리가 설치되어 있습니다.)
Purging configuration files for snapd (2.54.3+20.04.1ubuntu0.2) ...
Stopping snap-bare-5.mount
Stopping unit snap-bare-5.mount
Waiting until unit snap-bare-5.mount is stopped [attempt 1]
snap-bare-5.mount is stopped.
Removing snap bare and revision 5
Removing snap-bare-5.mount
Stopping snap-core18-2284.mount
Stopping unit snap-core18-2284.mount
Waiting until unit snap-core18-2284.mount is stopped [attempt 1]
snap-core18-2284.mount is stopped.
Removing snap core18 and revision 2284
Removing snap-core18-2284.mount
Stopping snap-core18-2344.mount
Stopping unit snap-core18-2344.mount
Waiting until unit snap-core18-2344.mount is stopped [attempt 1]
snap-core18-2344.mount is stopped.
Removing snap core18 and revision 2344
Removing snap-core18-2344.mount
Stopping snap-core20-1405.mount
Stopping unit snap-core20-1405.mount
Waiting until unit snap-core20-1405.mount is stopped [attempt 1]
snap-core20-1405.mount is stopped.
Removing snap core20 and revision 1405
Removing snap-core20-1405.mount
Stopping snap-core20-1434.mount
Stopping unit snap-core20-1434.mount
Waiting until unit snap-core20-1434.mount is stopped [attempt 1]
snap-core20-1434.mount is stopped.
Removing snap core20 and revision 1434
Removing snap-core20-1434.mount
Stopping snap-gnome\x2d3\x2d34\x2d1804-66.mount
Stopping unit snap-gnome\x2d3\x2d34\x2d1804-66.mount
Waiting until unit snap-gnome\x2d3\x2d34\x2d1804-66.mount is stopped [attempt 1]
snap-gnome\x2d3\x2d34\x2d1804-66.mount is stopped.
Removing snap gnome-3-34-1804 and revision 66
Removing snap-gnome\x2d3\x2d34\x2d1804-66.mount
Stopping snap-gnome\x2d3\x2d34\x2d1804-77.mount
Stopping unit snap-gnome\x2d3\x2d34\x2d1804-77.mount
Waiting until unit snap-gnome\x2d3\x2d34\x2d1804-77.mount is stopped [attempt 1]
snap-gnome\x2d3\x2d34\x2d1804-77.mount is stopped.
Removing snap gnome-3-34-1804 and revision 77
Removing snap-gnome\x2d3\x2d34\x2d1804-77.mount
Stopping snap-gnome\x2d3\x2d38\x2d2004-99.mount
Stopping unit snap-gnome\x2d3\x2d38\x2d2004-99.mount
Waiting until unit snap-gnome\x2d3\x2d38\x2d2004-99.mount is stopped [attempt 1]
snap-gnome\x2d3\x2d38\x2d2004-99.mount is stopped.
Removing snap gnome-3-38-2004 and revision 99
Removing snap-gnome\x2d3\x2d38\x2d2004-99.mount
Stopping snap-gtk\x2dcommon\x2dthemes-1514.mount
Stopping unit snap-gtk\x2dcommon\x2dthemes-1514.mount
Waiting until unit snap-gtk\x2dcommon\x2dthemes-1514.mount is stopped [attempt 1]
snap-gtk\x2dcommon\x2dthemes-1514.mount is stopped.
Removing snap gtk-common-themes and revision 1514
Removing snap-gtk\x2dcommon\x2dthemes-1514.mount
Stopping snap-gtk\x2dcommon\x2dthemes-1519.mount
Stopping unit snap-gtk\x2dcommon\x2dthemes-1519.mount
Waiting until unit snap-gtk\x2dcommon\x2dthemes-1519.mount is stopped [attempt 1]
snap-gtk\x2dcommon\x2dthemes-1519.mount is stopped.
Removing snap gtk-common-themes and revision 1519
Removing snap-gtk\x2dcommon\x2dthemes-1519.mount
Stopping snap-snap\x2dstore-518.mount
Stopping unit snap-snap\x2dstore-518.mount
Waiting until unit snap-snap\x2dstore-518.mount is stopped [attempt 1]
snap-snap\x2dstore-518.mount is stopped.
Removing snap snap-store and revision 518
Removing snap-snap\x2dstore-518.mount
Stopping snap-snap\x2dstore-558.mount
Stopping unit snap-snap\x2dstore-558.mount
Waiting until unit snap-snap\x2dstore-558.mount is stopped [attempt 1]
snap-snap\x2dstore-558.mount is stopped.
Removing snap snap-store and revision 558
Removing snap-snap\x2dstore-558.mount
Stopping snap-snapd-15177.mount
Stopping unit snap-snapd-15177.mount
Waiting until unit snap-snapd-15177.mount is stopped [attempt 1]
snap-snapd-15177.mount is stopped.
Removing snap snapd and revision 15177
Removing snap-snapd-15177.mount
Stopping snap-snapd-15534.mount
Stopping unit snap-snapd-15534.mount
Waiting until unit snap-snapd-15534.mount is stopped [attempt 1]
snap-snapd-15534.mount is stopped.
Removing snap snapd and revision 15534
Removing snap-snapd-15534.mount
Discarding preserved snap namespaces
Final directory cleanup
Removing extra snap-confine apparmor rules
Removing snapd cache
Removing snapd state

 

잘한건지 모르겠다, 사실 재설치하면 그만이야를 외쳤지만 재설치하는건 여간 귀찮은게 아니기 때문이다. 일단 이런 고민은 미래의 나에게 맡기기로 하고 df -h를 다시 실행해보자.

root@homesystem:~# df- h

명령어 'df-' 을(를) 찾을 수 없습니다. 다음 명령어로 시도하시겠습니까:

  deb dfcoreutils의 명령어 ' (8.30-3ubuntu2)'
  deb dfcdfc의 명령어 ' (3.1.1-1)'

Try: apt install <deb name>

 

아..... 개망했다. CentOS 기본 명령어 조차 실행이 안된다. 하지만 걱정마라 내 손은 정확하지 않으니, 옵션이 잘못되었다. 휴

root@homesystem:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           382M  1.7M  381M   1% /run
/dev/sda5       457G   11G  423G   3% /
tmpfs           1.9G   11M  1.9G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1       511M  4.0K  511M   1% /boot/efi
tmpfs           382M   28K  382M   1% /run/user/1000

 

깔끔하게 지워졌다. loop device를 지우고 보니 tmpfs 라는 녀석이 거슬리기 시작했다. 하지만 난 인자한 사람이니 쟤는 살려두기로 했다. 나중에 할 일이 너무 없거나 면접을 앞두게 된다면 loop device를 정리해서 올려야겠다는 다짐만 하고 끝마친다.

반응형
반응형

프로그래머스

 

코딩테스트 연습 - 보호소에서 중성화한 동물

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

풀이

-- 코드를 입력하세요
SELECT
INS.ANIMAL_ID,
INS.ANIMAL_TYPE,
INS.NAME
FROM ANIMAL_INS INS, ANIMAL_OUTS OUTS
WHERE INS.ANIMAL_ID = OUTS.ANIMAL_ID
AND INS.SEX_UPON_INTAKE != OUTS.SEX_UPON_OUTCOME

 

반응형
반응형

 

프로그래머스

 

코딩테스트 연습 - 입양 시각 구하기(2)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

 

풀이

SELECT
A.LV AS HOUR,
NVL(B.CNT,0) AS COUNT
FROM
(
    SELECT
    LEVEL-1 AS LV 
    FROM DUAL
    CONNECT BY LEVEL <= 24
) A, (
    SELECT
    HOUR,
    COUNT(*) AS CNT
    FROM(
        SELECT
        TO_CHAR(DATETIME,'HH24') HOUR
        FROM ANIMAL_OUTS
    ) OUTS 
    GROUP BY HOUR
    ORDER BY 1
) B
WHERE A.LV = B.HOUR(+)
ORDER BY 1
반응형
반응형
SELECT
DISTINCT CART_ID
FROM CART_PRODUCTS
WHERE CART_ID IN (SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Yogurt')
AND NAME = 'Milk';
반응형

+ Recent posts