리눅스 (backup)2021. 1. 6. 10:58

 

반달가면 이글루에서 백업 - bahndal.egloos.com/465571

 

리눅스에서 df 명령으로 디스크의 빈 공간을 확인해 보면 /dev/shm 디렉토리가 있는데, 파일시스템 형식은 tmpfs이고 크기는 램(RAM) 용량의 반 정도 될 것이다.
 
이 디렉토리는 공유 메모리(shared memory)라고 해서 일종의 램디스크인데, RAM 용량의 반을 당장에 실제로 점유하고 있는 것은 아니고 사용하는 만큼만 용량을 소모한다. 그러므로 RAM 용량이 반이나 날아갔다고 오해하면서 걱정할 필요는 없다.

자주 읽기/쓰기를 하는 임시 파일을 사용해야 할 경우에 RAM 용량이 충분하다면 이 디렉토리가 상당히 요긴하다.

다만, 한가지 주의할 점은 /dev/shm의 접근 권한이다. 모든 사용자가 읽고 쓸 수 있으므로, 만약 이 디렉토리를 사용하고 싶다면 하위에 자신만 접근할 수 있는 권한으로 디렉토리를 하나 만들어서 사용하자.

cd /dev/shm
mkdir my_tmp_dir
chmod 700 my_tmp_dir  (자신만 접근할 수 있도록 권한 설정)

참고로, 만약 다른 프로그램들이 RAM을 이미 많이 점유하고 있는 상태에서 /dev/shm 디렉토리를 사용하다가 사용량이 RAM 용량을 초과하게 되면 그 때는 스왑(swap) 영역으로 넘어간다.

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2021. 1. 6. 10:53

반달가면 이글루에서 백업 - bahndal.egloos.com/450013

 

디렉토리 점유 용량을 확인하는 명령인 du와 상호보완적으로 쓰게 되는 명령이 디스크/파일시스템의 빈 공간을 확인하기 위한 df 명령이다. 터미널 창에서 아래와 같이 입력해 보자. 

df

표시되는 항목은 파일시스템(Filesystem), 디스크 목록과 크기(Size), 사용된 공간(Used), 빈 공간(Avail), 사용률(Use%), 해당 파일시스템이 연결되어 있는 디렉토리(Mounted on) 등이다. 기본 용량 단위는 du와 마찬가지로 1024바이트 기준이다. 

용량 표시를 좀더 읽기 편하게 보고 싶다면 -h 옵션을 이용하자. 메가 또는 기가바이트 단위로 표시해 준다. 

df -h

네트워크로 연결된 파일시스템(NFS)을 제외하고 현재 PC에 소속된 파일시스템(local file system) 만 보고 싶다면 -l 옵션을 사용. 

df -hl

 

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2021. 1. 6. 10:48

 

반달가면 이글루에서 백업 - bahndal.egloos.com/448152

 

리눅스에서 특정 디렉토리가 얼마나 많은 용량을 차지하고 있는지 확인하고 싶으면 du 명령을 활용하자. 예를 들어 현재 디렉토리의 용량을 확인하려면 터미널창에서 아래와 같이 입력.

du ./

위와 같이 입력하면 현재 디렉토리와 그 하위 디렉토리를 나열하면서 각 디렉토리별로 어느 정도 용량을 점유하고 있는지 보여준다. 용량값은 1024바이트를 기준으로 한 것이다. (즉 용량값이 20이라고 나왔으면 1024*20=20480바이트)

만약 n바이트 단위로 용량을 표시하고 싶다면 -B 옵션을 사용하면 되겠다. 만약 512바이트를 1로 놓고 용량값을 표시하려면 아래와 같이 입력한다. (용량값은 1024바이트 기준보다 딱 2배 많게 표시될 것이다. 단위 크기가 반으로 줄었으므로)

du -B 512 ./

또 한가지 유용한 옵션은 맨 마지막에 해당 디렉토리의 총 용량을 표시해 주는 -c 옵션과 메가(M), 기가(G) 등의 단위를 표시해서 읽기 편하게 해 주는 -h 옵션이다. 예를 들어 홈 디렉토리 아래에 downloads 디렉토리의 용량을 확인하고 싶다면 아래와 같이 입력하면 되겠다.

du -ch ~/downloads
  -c : 마지막에 해당 디렉토리가 점유하는 총 용량을 표시
  -h : 사람이 읽기 좋게 표시(751876 -> 735M 이런 식으로)

하위 디렉토리의 용량을 일일이 확인할 필요 없이 해당 디렉토리의 총 용량만 보고 싶다면 grep을 활용하면 된다. 개인적으로 가장 자주 쓰는 형태다.

du -ch ~/downloads | grep total

 

 

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2020. 10. 20. 17:18

 

반달가면 이글루에서 백업 - bahndal.egloos.com/439787

 

자주 쓸 일은 없지만, 뭔가 꼬여서 부팅이 제대로 되지 않거나 NVIDIA의 VGA 드라이버를 설치해야 하거나 할 때 리눅스 실행 레벨(run level)을 단일 사용자(single-user, run level 1)로 낮출 필요가 생긴다.

GRUB으로 부팅할 때 실행 레벨을 지정해 주면 되겠다. 

부팅할 때 GRUB이 실행되면서 부팅 메뉴가 나오는데, 여기서 키보드의 e키를 누르면 해당 항목의 세부 내용이 표시되고 이를 변경할 수가 있다.

 

 

화살표키를 눌러서 차근차근 아래로 내려가다 보면 linux로 시작되는 행이 나오는데, 이 행 맨 마지막에 실행 레벨을 써 준다.

linux  /boot/vmlinuz-... splash=silent quiet showopts (원래 설정)

linux  /boot/vmlinuz-... splash=silent quiet showopts 1 (실행 레벨 1로 지정, 단일 사용자 모드로 부팅)

이 상태에서 F10을 누르면 변경된 설정을 적용해서 부팅이 진행된다. 변경 내용이 저장되는 것은 아니므로 다음에 부팅할 때는 원래 설정이 적용된다. 

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2020. 10. 20. 11:12

 

반달가면 이글루에서 백업 - bahndal.egloos.com/437831

 

멀티미디어 코덱 등 오픈수세 리눅스의 기본 패키지 저장소에는 없는 패키지를 설치하기 위해 팩맨 패키지 저장소(Packman Repository)를 추가해 보았다. 추가적인 오픈수세 패키지 저장소들 중에 가장 크고 잘 알려진 저장소다.

패키지 추가 명령 형식은 아래와 같다.
zypper ar -f http://[저장소URL] [저장소 이름]
  ar: 저장소 추가
  -f: 자동 갱신(auto refresh)

 

팩맨 저장소의 URL은 오픈수세 12.2의 경우 아래와 같다.

 

packman.inode.at/suse/openSUSE_12.2/

 

다른 버전의 경우 위의 디렉토리 이름에서 버전을 바꾸면 된다. /suse/openSUSE_12.3/ 이런 식으로. (웹브라우저로 직접 들어가서 디렉토리 이름을 확인해도 되겠다. 현재 버전 11.1부터 12.3까지 있다. packman.inode.at/suse/ )

 

자, 그럼 팩맨 저장소를 추가해 보자. 루트 권한이 필요하므로 su 명령으로 루트가 된 다음 추가하면 되겠다. 터미널창에서 아래와 같이 입력.

 

su

zypper ar -f http://packman.inode.at/suse/openSUSE_12.2/ packman                               

 

또는 YaST에서 GUI를 통해 추가하는 것도 가능하다. Software Manager(YaST -> Software Management) 상단 메뉴에서 Configuration -> Repositories 항목으로 가면 현재 추가되어 있는 저장소 목록이 나오는데 여기에서 'Add' 버튼을 누르고 안내에 따라 추가하면 된다. 종류(Media Type)를 선택하는 창이 나오는데, 팩맨 저장소의 경우 HTTP로 선택하고 URL을 적어 주면 된다.

 

저장소를 추가한 후에 S/W 관리자를 실행하면 팩맨 저장소에 대응되는 GPG Key를 가져온다는 창이 뜨는데, 'Trust' 버튼을 클릭하면 되겠다. 여기까지 하면 완료. 이제 팩맨 저장소에 있는 S/W를 검색하고 설치할 수 있다.

추가 저장소에 대한 자세한 안내는 오픈수세 홈페이지에 있다. 여기로

 

 

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2020. 10. 16. 10:15

 

반달가면 이글루에서 백업 - bahndal.egloos.com/434606

 

오픈수세(OpenSUSE)에서 확인한 것이지만, 아마 다른 리눅스 배포판도 비슷할 것이다.

 

리눅스 GUI 데스크탑 환경에서 텍스트 모드(콘솔 모드)로 전환:

  ctrl + alt + F1~F6 (F1부터 F6까지 각각 tty1부터 tty6 터미널에 대응된다)

 

텍스트 모드에서 GUI로 돌아가기: ctrl + alt + F7

 

텍스트 모드 쓸 일이 별로 없긴 하지만 그래도 혹시 모르니 잊기 전에 적어 두기로. 특히, 키보드 잘못 눌러서 텍스트 모드로 나간 다음에 어떻게 돌아와야 할 지 몰라 헤매는 경우에 대비하기 위해;;

 

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2020. 10. 16. 10:08

 

반달가면 이글루에서 백업 - bahndal.egloos.com/421481

 

리눅스의 기본 파일 시스템은 ext이나, 외장형 HDD를 사용할 경우 윈도우PC에서도 사용하기 위해 NTFS로 포맷을 해야 할 경우가 있다.

 

리눅스에서 HDD는 보통 /dev/sda, /dev/sdb 이런 식으로 인식되고 파티션이 여러개가 있을 경우 그 뒤에 번호가 붙는다. 예를 들어 /dev/sda HDD에 2개의 파티션이 있으면 /dev/sda1, /dev/sda2 이런 식이다.

 

리눅스PC에 외장 HDD를 연결하면 /dev 폴더에 새로 HDD 이름이 나타나게 된다. HDD를 연결하기 전과 후에 터미널창에서 아래와 같이 검색해 보면 볼 수 있다.

 

ls /dev/sd*

 

이제 외장 HDD의 이름과 파티션을 찾아서 NTFS로 포맷하면 되겠다. 루트(root) 권한을 필요로 하며, 터미널창에서 아래와 같이 입력하면 된다. /dev/sdc1 파티션을 포맷하는 경우이다.

 

sudo mkntfs -f /dev/sdc1

 

-f 옵션을 주지 않으면 내용을 전부 0으로 채운 다음에 포맷을 하므로 대용량 HDD일 경우 시간이 상당히 오래 걸린다.

 

오픈수세 리눅스의 경우엔 이 명령을 sudo로 실행할 수 없으니, su 명령으로 먼저 루트가 된 다음에 mkntfs 명령을 실행하자.

 

su

mkntfs -f /dev/sdc1

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2020. 10. 15. 16:59

 

반달가면 이글루에서 백업 - bahndal.egloos.com/530746

 

"윈도우/리눅스 멀티부팅에서 시간이 잘못되는 문제 고치기 - 2" 게시물은 리눅스쪽의 시간을 UTC에서 지역시간(local time)으로 고치는 방법이고 오픈수세(OpenSUSE) 기준이었는데, 그보다는 윈도우쪽 시간 설정으로 지역시간에서 UTC로 바꾸는 쪽이 더 나은 것 같아 이 게시물의 백업은 생략. 

 

리눅스 또는 맥OS와 윈도우를 듀얼부팅할 경우 시간 기준이 서로 달라서 윈도우쪽 시간이 이상하게 나올 수 있다. 이 문제에 대해서 예전에 글을 올린 적이 있는데, 오래간만이긴 하지만 어쨌든 한가지 방법을 더 발견해서 여기에 적어 두기로 했다.

예전에 올렸던 방법은 윈도우를 시작할 때마다 인터넷의 시간 서버와 시간을 동기화하도록 작업을 예약하는 것과, 리눅스쪽 시간 기준을 UTC가 아니라 지역 시간(local time)으로 설정하는 것이었다.

또 다른 해결 방법은 윈도우 레지스트리에서 바이오스 기준 시간을 UTC 기준으로 바꾸는 방법이다.  (UTC와 한국표준시의 차이는 이전 게시물을 참고하자.)

일단 수동으로 레지스트리를 고치는 방법이다. 윈도우 시작 버튼을 누르고 프로그램 검색창에서 regedit이라고 입력하면 레지스트리 편집기(regedit.exe)가 나올 것이다. 레지스트리 편집기를 실행하고 아래의 위치로 가자. (레지스트리 수정은 관리자 권한을 필요로 한다.)

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

 

해당 위치로 간 후에 여기서 새 항목을 하나 만든다. 메뉴에서 "편집(E)" ->  "새로 만들기(N)" -> "DWORD(32비트)값"을 선택하자. 그러면 항목의 이름을 정해야 하는데, "RealTimeIsUniversal"이라고 입력. 이제 해당 항목이 추가된 것이 보일 것이다.

"RealTimeIsUniversal" 항목을 더블클릭하면 값을 입력할 수 있다. 여기에 1을 입력하고 엔터를 누른다. 항목 값이 설정되었으니 레지스트리 편집기는 종료한다.


위의 과정이 귀찮다면, 아래의 첨부파일을 가져다가 저장한 후 압축을 풀고 reg 파일을 더블클릭해서 레지스트리에 적용해도 된다.

 

win7_utc_bahndal_egloos_com.zip
0.00MB

레지스트리 수정이 끝났으면 재부팅하자. 시간이 뭔가 좀 이상해졌을 것이다. 이제 인터넷 시간 서버를 이용해서 시간을 바로잡으면 된다. 작업표시줄에 있는 시간 표시를 클릭하고 "날짜 및 시간설정 변경" 항목을 선택하자.

 

 

시간 설정 창이 나오면 "인터넷 시간" 탭을 선택한 후 "설정 변경(C)" 버튼을 클릭한다.

 

 

시간 서버 항목에 "time.windows.com"을 선택하고 "지금 업데이트(U)" 버튼을  클릭하면 시간 서버와 동기화되면서 시간이 제대로 표시될 것이다.

 

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2020. 10. 15. 16:44

반달가면 이글루에서 백업 - bahndal.egloos.com/345263

 

윈도우와 리눅스를 멀티 부팅으로 사용하면서 서로 번갈아 부팅을 하다 보면 윈도우쪽의 시간이 이상하게 바뀌는 상황을 보게 된다. 아마도 리눅스는 시스템 시간을 UTC로 놓고 여기에 현재 위치(한국)에 따라 시차를 적용하는 반면에 윈도우는 시스템 시간을 지역 시간으로 사용하기 때문인 것 같다.

우리나라 시간은 UTC+9시다. 즉 UTC가 0시면 우리나라는 9시가 된다. 그런데 리눅스가 시스템 시간을 UTC로 맞춰버리면, 다음에 윈도우로 부팅할 때(한국 시간 9시에 부팅했다고 치면) 윈도우는 이 시스템 시간(UTC)를 우리나라 시간(KST)로 인식해서 UTC를(즉 0시를) 표시해 주는 것이다.

리눅스를 UTC로 사용하지 않도록 하는 방법도 있겠지만 그보다는 윈도우의 시간을 UTC 기준으로 맞추는 쪽이 더 정확하다. (UTC는 원자시계로 돌아가는 시간이므로)

자, 그럼 윈도우7의 시간을 제대로 맞춰 보자. 윈도우로 부팅할 때마다 리눅스가 해놓은 UTC를 쓰지 말고 인터넷으로 시간 서버(NTP서버)에 접속해서 시간을 맞추도록 하면 된다. 

사실 윈도우7은 정기적으로 시간 서버에 접속을 해서 시간을 동기화하도록 설정되어 있는데, 일주일에 한번만 하도록 되어 있다. 이걸 시스템 부팅할 때마다 동기화하도록 바꿔주면 되겠다.

1. 시작 버튼을 누르고 "보조 프로그램" -> "시스템 도구" 항목으로 가서 작업 스케줄러를 관리자 권한으로 실행한다. (일반 사용자는 편집할 수 없으니 반드시 관리자 권한으로 실행)

2. 창 왼쪽의 "작업 스케줄러 라이브러리"에서 Microsoft -> Windows -> Time Synchronization 항목으로 가서 속성을 편집하자. 

 

 

3. 속성 편집창의 "트리거" 탭에서 트리거 항목을 편집하자. 기본 설정은 일주일에 한번임을 볼 수 있을 것이다. 이걸 바꾸는 것이다.

 

 

4. 트리거 편집창에서 "작업 시작" 항목을 "시작할 때"로 바꾼다.

 

 

이제 윈도우7의 시계도 제대로 표시가 될 것이다.

 

 

Posted by 반달가면

댓글을 달아 주세요

리눅스 (backup)2020. 10. 15. 16:35

 

반달가면 이글루에서 백업 - bahndal.egloos.com/332546

 

파일 입출력이 반복적으로 아주 많이 생기는 작업을 할 경우에 램디스크를 만들어 거기서 작업을 하면 좀 더 빨리 할 수 있는데, 리눅스에서는 별도의 S/W 없이 명령어 몇개로 간단하게 램디스크를 만들고 없앨 수 있다.

우선 램디스크에 대응할 디렉토리를 하나 만들자.
mkdir ram_disk

이제 mount 명령어로 램디스크를 만들자. root권한이 필요하므로 sudo로 실행한다. 파일 시스템을 tmpfs로 정하면 램디스크가 된다.
sudo mount -t tmpfs -o size=100m tmpfs ./ram_disk

자, 이제 ram_disk 디렉토리에 100MB 크기의 램디스크가 연결되었다. 파일을 이 디렉토리로 보내면 HDD로 안가고 램디스크가 잡고 있는 메모리로 간다.

램디스크가 제대로 생성되어 ram_disk 디렉토리에 연결이 되었는지 확인해 보자.
df -h | grep tmpfs

다 쓰고 나면 umount 명령으로 램디스크를 해제하고 메모리를 반환하면 된다.
sudo umount ./ram_disk

 

Posted by 반달가면

댓글을 달아 주세요