1. gitlab 디렉토리 생성

 

mkdir gitlab

 

2. gitlab docker 이미지 설치

hostname과 volume은 수정해야함. 이미지 버전은 백업된 gitlab의 버전과 동일하게 할 것.

이미지 버전은 아래 사이트에서 확인

hub.docker.com/r/gitlab/gitlab-ee/tags

 

Docker Hub

 

hub.docker.com

sudo docker run --detach \
  --hostname test.duwon.net\
  --publish 443:443 --publish 80:80 --publish 122:22 \
  --name gitlab \
  --restart always \
  --volume /home/duwon/gitlab/config:/etc/gitlab \
  --volume /home/duwon/gitlab/logs:/var/log/gitlab \
  --volume /home/duwon/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ee:latest

3. 백업 이미지 /home/duwon/gitlab/data/backups에 복사

 

4. 복원

 

sudo docker exec -it gitlab gitlab-ctl stop unicorn
sudo docker exec -it gitlab gitlab-ctl stop puma
sudo docker exec -it gitlab gitlab-ctl stop sidekiq
sudo docker exec -it gitlab gitlab-backup restore BACKUP=1599528998_2020_09_08_13.3.5-ee

1599528998_2020_09_08_13.3.5-ee_gitlab_backup.tar 파일명에서 _gitlab_backup.tar앞까지만 입력

 

5. 재시작

sudo docker restart gitlab

'Linux' 카테고리의 다른 글

QNAP 공유폴더에 우분투 gitlab-ee 백업하기  (0) 2020.09.08
xinetd 설치하기  (0) 2007.03.27
부트로더 GRUB에서의 root 암호 변경  (0) 2007.03.13
하드디스크 추가하기  (0) 2007.03.05
minicom 설치  (0) 2006.08.11

1.  QNAP nfs 설정

 

2. 리눅스에서 QNAP 서버 마운트

 

sudo vi /etc/fstab

 

3. 자동 마운트를 위해 fstab 수정

192.168.2.32:/Gitlab /mnt/Gitlab nfs defaults 0 0

 

4. 마운트하기

 

sudo mount -a

 

5. gitlab 설정 파일 열기

sudo vi /etc/gitlab/gitlab.rb

 

6. gitlab.rb 수정

백업후 로컬폴더로 업로드 하지 않고 백업폴더를 마운트된 디렉토리로 지정해버림

 

gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/mnt/Gitlab"

gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/mnt/Gitlab"

 

백업 후 업로드 할 경우 아래 참조

docs.gitlab.com/ee/raketasks/backup_restore.html#uploading-to-locally-mounted-shares

 

Back up and restore GitLab | GitLab

Back up and restore GitLab GitLab provides Rake tasks for backing up and restoring GitLab instances. An application data backup creates an archive file that contains the database, all repositories and all attachments. You can only restore a backup to exact

docs.gitlab.com

7. 재설정

sudo gitlab-ctl reconfigure

 

8. 백업하기

sudo gitlab-backup create

 

설정파일은 백업되지 않음으로 수정백업 해야함.

'Linux' 카테고리의 다른 글

gitlab-ee 백업파일 docker로 간단하게 복원하기  (0) 2020.09.08
xinetd 설치하기  (0) 2007.03.27
부트로더 GRUB에서의 root 암호 변경  (0) 2007.03.13
하드디스크 추가하기  (0) 2007.03.05
minicom 설치  (0) 2006.08.11
실험시간 컴퓨터에 xinetd 가 설치 되어 있지않아 타겟보드와 TFTP를 이용 할 수 없었다. 그리하여 인터넷을 용하여 설치 하려고 하였다. 설치된 리눅스가 페도라 4. http://rpmfind.net/linux/RPM/Red_Hat_(FC-4).html 에서 페도라용 xinetd rpm을 다운 받았다.

# wget ftp://download.fedora.redhat.com/pub/fedora/linux/core/4/SRPMS/xinetd-2.3.13-6.src.rpm
# rpm -ivh xinetd-2.3.13-6.src.rpm
# service xinetd restart
xinetd 를 정지함:                                          [  실패  ]
xinetd (을)를 시작합니다:                                  [  실패  ]
# rpm -qa | grep xinetd


설치 완료 되었다는 메세지가 출력되었다. 데몬을 돌릴려고 하니 안된다. 제대로 설치 되었는지 검색을 해 보았다. 왜 그런지 없다. 분명 설치 되었다고 메세지를 보냈는데... 결국 소스까지 받아서 컴파일 해 설치 했는데 설치가 되지 않는다.


다른 방법을 찾아 보았다. yum 을 통한 설치가 있었다.

# yum install xinetd


설치가 된다. 검색을 하니 정상적으로 rpm이 설치 되었다. xinetd가 설치 되었기에 tftp-server를 설치하여 정상적으로 타겟보드와 TFTP 성공.
실험실 root 계정의 비밀번호가 변경되어 버렸습니다. 실습 도중 학생이 실수로 변경 한 거 같습니다.
부트로더 GRUB을 이용한다면 다음과 같이 하면 됩니다.

처음 부트로더 GRUB이 뜬다면 원하는 커널을 선택하고 'e'를 누릅니다. Edit Mode로 들어 가게 됩니다.
두번 째 Kernel=..... 이라고 뜬 줄을 선택하고 'e'를 눌러 해당 옵션을 수정합니다.
세번 째 어떻게 수정 하느냐. 에디트 화면에서 제일 뒤에 '1' 또는 'single'이라고 입력후 엔터
네번 째 'b' 누르게 되면 커널 부팅을 합니다.  
다섯번 째 부팅을 하게 되면 'sh3.00$'과 같은 기본 쉘이 뜹니다. 'passwd' 암호변경 명령어를 입력하면새로운  root 비밀번호를 입력하라고 합니다. 수정 후 'exit' 명령어를 치게 되면 변경된 암호로 커널이 부팅되게 됩니다.

이렇게 해서 root 비밀번호를 변경 할 수 있습니다.

'Linux' 카테고리의 다른 글

QNAP 공유폴더에 우분투 gitlab-ee 백업하기  (0) 2020.09.08
xinetd 설치하기  (0) 2007.03.27
하드디스크 추가하기  (0) 2007.03.05
minicom 설치  (0) 2006.08.11
파일을 찾자 : find  (0) 2006.08.10

SCSI하드드시크 하나를 사용중 추가로 SCSI하드디스크하나를 더 장착하여 커널에 인식시킨후에 파일시스템을 만들고 만든 파일시스템을 포맷하여 마운트시킬 디렉토리를 만든다음 이 디렉토리에 생성된 파일시스템을 마운트시키는 작업. 그리고 이 작업이 끝난후에 부팅시 자동마운트되도록 /etc/fstab에 설정추가한다.


1. 현재 사용중인 하드디스크 확인(추가전)


먼저, 현재 사용중인 하드디스크를 확인해 보도록 하자.
/etc/fstab이라는 파일은 리눅스부팅시에 자동으로 마운트시키기위한 "파일시스템테이블(file system table)"이다.

즉, 리눅스가 부팅이 되면서 이 파일을 참조하여 설정된 내용대로 마운트를 시켜 사용가능토록하는 것이다.


[root@duwon ~]# cat /etc/fstab
/dev/sda3               /                       ext3    defaults,noatime      1 1
/dev/sda1               /boot                   ext3    defaults,noatime      1 2
none                    /dev/pts                devpts  gid=5,mode=620        0 0
none                    /proc                   proc    defaults,noatime      0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/sda2               swap                    swap    defaults,noatime      0 0
/dev/cdrom              /mnt/cdrom              iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0


위의 /etc/fstab은 하드디스크가 추가되기전의 /etc/fstab 용이다.

보시는 바와 같이 /dev/sda라는 하드디스크 하나만이 장착되어 있음을 짐작할 수 있다.

그리고, 아래와 같이 "df -k"로 현재 사용중인 파일시스템정보를 확인해본 것이다.

확인해 본 바와 같이 현재 사용중인 파일시스템은 sda의 하드디스크 하나를 몇 개의 파일시스템으로 나누어 사용중인 것을 확인할 수 있다.

[root@duwon ~]# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             15947024   2810760  12326188  19% /
/dev/sda1               505605     13764    465737   3% /boot
none                    516364         0    516364   0% /dev/shm

좀더 확실히 확인키위해 mount라는 명령어로 현재 리눅스서버에 마운트된 파일시스템이 어떤 것들이 있는가를 정확히 확인해 본 것이다.

[root@duwon ~]# mount
/dev/sda3 on / type ext3 (rw,noatime)
none on /proc type proc (rw,noatime)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
devfs on /dev type devfs (rw)
/dev/sda1 on /boot type ext3 (rw,noatime)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)

위에서 본 바와 같이 sda라는 하드디스크를 몇 개의 파일시스템으로 나누어서 사용중임을 확인할 수 있다.

위의 그림3개에서 확인된 내용을 추가 하드디스크를 장착하여 파일시스템을 만들고 마운트까지 마무리한후의 내용과 비교해 보기바란다.


2. 추가할 HDD를 HDD확장슬랏에 장착한다.

일반적으로 핫스왓방식이 지원되는 시스템이라면, 장착과 동시에 운영체제에서 인식이 바로된다.하지만, 여기서는 설명을 하기위해 핫스왓방식이 지원되지않은 경우로 가정하겠다.
서버용도로 사용하는 거의 모든 HDD는 스카시(SCSI)방식일 것이다.
정식으로 서비스하기위한 용도로 사용되는 서버라면 SCSI방식을 사용해야한다.
물론, IDE방식도 가능하지만, 1년 365일 쉬지않고 돌아가는 서버의 안정성을 위해
반드시 SCSI방식의 HDD를 사용토록 해야한다.


3. 새로운 HDD를 장착한 후에 서버를 재부팅한다.

  재부팅시에 메시지를 자세히 살펴보면 새로운 HDD에 관련된 메시지를 볼수가 있다.


4. 재부팅이 끝나고 나면 dmesg란 명령어를 사용하여 장착된 SCSI HDD의 정보를 확인한다.

  dmesg는 텍스트파일로 재부팅될때마다 새로 생성이 되며 위치는 /var/log/dmesg에 있다.

  명령어의 위치는 리눅스의 경우 대부분 /bin/dmesg이다.

  자, 다음과 같이 dmesg란 명령어를 입력하여 새로추가된 HDD의 SCSI ID를 확인토록한다.


[root@duwon ~]# dmesg | grep SCSI
SCSI subsystem driver Revision: 1.00
scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.36
       <Adaptec aic7896/97 Ultra2 SCSI adapter>
       aic7896/97: Ultra2 Wide Channel A, SCSI Id=7, 32/253 SCBs
scsi1 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.36
       <Adaptec aic7896/97 Ultra2 SCSI adapter>
       aic7896/97: Ultra2 Wide Channel B, SCSI Id=7, 32/253 SCBs
  Type:   Direct-Access                      ANSI SCSI revision: 02
  Type:   Direct-Access                      ANSI SCSI revision: 03
  Type:   Processor                          ANSI SCSI revision: 02
SCSI device sda: 35565080 512-byte hdwr sectors (18209 MB)
SCSI device sdb: 35916548 512-byte hdwr sectors (18389 MB)


추가로 하드디스크를 장착하였기 때문에 sda외에 sdb라는 하드디스크를 커널이 인식하였음을 알 수 있다.

이제 이 sdb라는 추가 하드디스크를 사용키위해 파일시스템을 만들고 fdisk를 하여 파티션생성후에 마운트를 시켜 이 하드디스크를 사용하도록 할 것이다.


5. SCSI ID를 확인했다면 이제 fdisk를 실행시켜 파티션을 생성해 줘야한다.

위에서 확인한 추가 하드디스크의 SCSI ID는 /dev/sdb이다.

따라서 이 SCSI ID를 사용키위해 먼저 fdisk로 파티션을 생성하여야한다.

아래예와 같이 fdisk라는 명령어를 이용하여 파티션생성작업을 하여보자.


파티션을 생성하기 위해서는 fdisk 실행후에 실린더번호를 정확히 입력하고

사용코자하는 용도대로 설정하면 된다.

참고 : fdisk 명령어

  a   toggle a bootable flag

  b   edit bsd disklabel

  c   toggle the dos compatibility flag

  d   delete a partition

  l   list known partition types

  m   print this menu

  n   add a new partition

  o   create a new empty DOS partition table

  p   print the partition table

  q   quit without saving changes

  s   create a new empty Sun disklabel

  t   change a partition's system id

  u   change display/entry units

  v   verify the partition table

  w   write table to disk and exit

  x   extra functionality (experts only)


p라는 fdisk 명령어는 현재 파티션정보를 보고자함이다.

만약 새로운 파일시스템을 생성하려면 아래의 예와 같이 n이라는 fdisk명령어를 이용하여 사용할 파티션번호를 입력하면 된다.


6. 작성된 파티션을 사용키위해 파일시스템을 생성한다.

  mke2fs /dev/sdb

이제 생성된 파티션을 사용키위해 mke2fs라는 리눅스명령어를 사용하여 파일시스템을 생성한다.

"mke2fs 생성할 파일시스템명"으로 입력해주면 아래의 예와같이 파일시스템을 생성하여 준다.

mke2fs라는 명령어의결과 생성되는 파일시스템결과에서 알 수 있는 내용은 다음과 같다.

. Block size 크기
. Fragment size 크기
. inode의 수
. 수퍼유저가 사용할 block의 수(전체 block의 5%를 차지함)
. 첫 번째 데이터블럭
. Block group의 수
. 그룹당 블록수
. 그룹당 fragment의 수
. 그룹당 inode의 수

물론 위의 정보들을 처음접하게 되는 분들이라면 뭐가뭔지 이해하지 못할 수도 있다.

하지만, 파일시스템에 대한 정확한 이해를 하려면 위의 정보들이 어떤 의미를 가지고 무엇을 의미하는지는 정확히 알아야할 필요성은 있다.

물론, 단순히 하드디스크를 추가장착하는 것만이 목적이라면 위의 정보에 대한 의미를 구체적으로 몰라도 관계는 없다.

필자가 강조하고자 하는 것은 진정한 서버관리자, 즉 진정한 수퍼유저라고 한다면 이런 메시지뿐아니라 모니터에서 흐르는 모든 메시지들을 좀더 정확히 분석하고 이해하는 노력이 필요하다는 것이다.

7. 준비된 파티션을 마운트를 시키기 위해 디렉토리를 작성하고 마운트를 시킨다.

  mkdir /home2

  mount -t ext2 /dev/sdb /home2

  리눅스에서 사용하는 파일시스템은 ext2라는 파일시스템이며, 생성한 home2라는 디렉토리와

  물리적인 파티션인 /dev/sdb를 마운트시키면 이제부터는 기존에 있던 디렉토리처럼 마음대로 사용이

  가능하다.

8. 부팅시 자동마운트되게 하기위한 파일시스템테이블 수정

 

  지금까지 한 작업은 일시적으로 사용할수는 있지만, 부팅시마다 적용하기 위해서는

  부팅시 자동마운트되는 파일시스템테이블(/etc/fstab) 수정을 해야한다.

[root@duwon /]# vi /etc/fstab
/dev/sda3               /                       ext3    defaults,noatime      1 1
/dev/sda1               /boot                   ext3    defaults,noatime      1 2
none                    /dev/pts                devpts  gid=5,mode=620        0 0
none                    /proc                   proc    defaults,noatime      0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/sda2               swap                    swap    defaults,noatime      0 0
/dev/cdrom              /mnt/cdrom              iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0
/dev/sdb                /home2                  ext2    defaults            1 2



위의 예와 같이 작업된 후에는 시스템재부팅시에도 마운트할 필요없이 그대로 사용할수 있다.  

기존의 내용과  다른점은 맨 마지막줄에 /dev/sdb가 /home2에 마운트되게끔 설정이 추가되었다는 것이다.

9. 파일시스템 생성 최종확인

이제 df -k로 파일시스템정보를 다시 확인한 것이다.

추가작업하기 전의 내용과 달라진 부분을 확인해 보기바란다.

[root@duwon home2]# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             15947024   2810664  12326284  19% /
/dev/sda1               505605     13764    465737   3% /boot
none                    516364         0    516364   0% /dev/shm
/dev/sdb              17674512        20  16776580   1% /home2


즉, 맨 마지막 줄의 /dev/sdb라는 파일시스템이 생성되어 /home2라는 디렉토리에 마운트되어 있음을 볼 수 있다.  

 

이제 마지막 확인을 하기위해 "mount"라는 명령어로 현재 마운트된 정보를 확인해본 것이다.

[root@duwon home2]# mount
/dev/sda3 on / type ext3 (rw,noatime)
none on /proc type proc (rw,noatime)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
devfs on /dev type devfs (rw)
/dev/sda1 on /boot type ext3 (rw,noatime)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
/dev/sdb on /home2 type ext2 (rw)
[root@duwon home2]# mount
/dev/sda3 on / type ext3 (rw,noatime)
none on /proc type proc (rw,noatime)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
devfs on /dev type devfs (rw)
/dev/sda1 on /boot type ext3 (rw,noatime)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
/dev/sdb on /home2 type ext2 (rw)



추가하기전에는 보이지 않았던 /dev/sdb라는 파일시스템이 /home2에 마운트되어 있다는 것을 확인할 수 있을 것이다.

'Linux' 카테고리의 다른 글

xinetd 설치하기  (0) 2007.03.27
부트로더 GRUB에서의 root 암호 변경  (0) 2007.03.13
minicom 설치  (0) 2006.08.11
파일을 찾자 : find  (0) 2006.08.10
ssh2 설치  (0) 2006.08.03
minicom은 시리얼 통신 하기 위해서 필요하다.
http://alioth.debian.org/projects/minicom 이곳에서 다운 로드 할 수 있다.
#wget http://alioth.debian.org/download.php/123/minicom-2.1.tar.gz
#tar -xzvf minicom-2.1.tar.gz
#cd minicom-2.1
#./configure
#make && make install
#minicom -s

이제 시리얼 통신을 하기 위해 셋팅을 해 보자. minicom -s 명령으로 다음과 같은 화면을 뛰울 수 있다. 3번째 시리얼 포트 셋업을 선택한다.

A 를 누르면 시리얼 디바이스를 선택 할 수 있다. COM1 을 사용 하려면 ttyS0 으로 바꿔주면 된다. 처음 설치시 ttyS1으로 되어 있을 것이다. F를 눌러 하드웨어 흐름 컨트롤을  No 로 바꾸자. 그 다음   E 를 눌러 전송속도와  기타 설정을 바꿔 주자
아래와 같이 설정을 바꿔 주자. 앞의 앞파벳을 사용하면 바꿀 수 있다.
모든 설정이 끝났으면 아래와 같이 저장한 후 빠져 나가자.
이제 minicom을 사용 할 수 있다. minicom 처음 화면이 나왔을 때 당황한다. 어떻게 사용 해야 할 지 모르기 때문이다. 사용 설명서를 읽어보자.
minicom 사용 설명서 다운로드

* 아무리 시리얼 통신을 하고자 하여도 아무런 반응이 없었다. 윈도우에서는 정상 작동하는데 Linux에서는 작동하지 않는 것이다. BIOS 셋업에서 시리얼을 사용하지 않는다고 설정 해 놨었다.

* /dev/ttyS0 이 root 권한으로 설정되어 있기 때문에 다른 이용자는 시리얼 포트를 사용 할 수 없다. 그러므로 chmod 755  /dev/ttyS0 으로 다른 이용자도 사용 가능하게 바꿔 줄 수있다. 나도 아직 초보이므로 여러사람이 쓰는 컴퓨터 일경우 보안상 어떤 문제가 있는지 모르겠다.

'Linux' 카테고리의 다른 글

부트로더 GRUB에서의 root 암호 변경  (0) 2007.03.13
하드디스크 추가하기  (0) 2007.03.05
파일을 찾자 : find  (0) 2006.08.10
ssh2 설치  (0) 2006.08.03
wget  (0) 2006.08.03
#find -help
출력하여 도움말을 보아도 처음 보는 화면이라 어떻게 사용해야 되는지 모른다. 웹 사이트를 찾아 도움을 받았다.


1. /home 디렉토리 밑의 a.a 파일을 찾아 출력 해 보자.

find [디렉토리] -name [파일명] -print
-> find /home/ -name a.a -print

2. /home 디렉토리 밑의 a.a 파일을 찾아 삭제 하자

find [디렉토리] -name [파일명] -exec rm {} \;
-> find /home/ -name a.a -exec rm {} \;

rm 뒤에 옵션을 붙여도 된다.

'Linux' 카테고리의 다른 글

하드디스크 추가하기  (0) 2007.03.05
minicom 설치  (0) 2006.08.11
ssh2 설치  (0) 2006.08.03
wget  (0) 2006.08.03
[펌] 리눅스 디렉토리 구조와 파티션 관리의 기본  (0) 2006.08.03

ssh가 노트북에 깔려 있지 않다. ssh2를 설치하여 보자. telnet을 이용하지 않고 노트북을 바로 이용하여 설치 했다. telnet을 이용한 설치는 조금 틀리다.

'Linux' 카테고리의 다른 글

minicom 설치  (0) 2006.08.11
파일을 찾자 : find  (0) 2006.08.10
wget  (0) 2006.08.03
[펌] 리눅스 디렉토리 구조와 파티션 관리의 기본  (0) 2006.08.03
2.6.18 커널 업데이트  (0) 2006.08.03
리눅스를 아무것도 없이 설치만 했기 때문에 프로그램을 설치 하려고 해도 ftp 사이트를 이용하거나 디스켓으로 옮겨야 했었다. wget 프로그램을 이용하면 웹의 내용이나 파일을 그래로 다운로드 할 수 있다.
이 프로그램은 http://www.gnu.org/software/wget/wget.html 에서 구할 수 있습니다.



'Linux' 카테고리의 다른 글

minicom 설치  (0) 2006.08.11
파일을 찾자 : find  (0) 2006.08.10
ssh2 설치  (0) 2006.08.03
[펌] 리눅스 디렉토리 구조와 파티션 관리의 기본  (0) 2006.08.03
2.6.18 커널 업데이트  (0) 2006.08.03
출처 : http://blog.naver.com/rosekingdom/60001630663

1.GNU/Linux 디렉토리 구조 (Redhat 계열)

  * 명령어 : ls -al /

  - 레드햇 계열의 디렉토리 구조는 다음과 같다.

/               루트 디렉토리
/bin           가장 필수적인 실행명령
/boot         커널,LILO 등 부팅에 관련된 파일
/dev          장치파일
/etc           시스템 전체 설정파일
/home        사용자의 홈디렉토리
/lib            C 라이브러리 등 가장 필수적인 공유 라이브러리
/mnt           임시 마운트용 디렉토리
/proc         시스템 정보를 위한 가상적인 디렉토리
/root          루트 사용자의 홈 디렉토리
/sbin          시스템 관리용 실행파일
/tmp           임시 파일 생성용 디렉토리
/usr           어플리케이션이 설치되는 디렉토리
/var           시스템 운영중 생성되는 각종 임시 파일


2. 각 디렉토리들

1) /
      근원이 되는 뿌리로 구체적인 파티션에 대한 정의
      가 없는 경우 루트 디렉토리에 포함 되어진다.

2) /bin
      실행파일들이 놓여있는 디렉토리로 부팅에 과정에서 필요하고 부팅후에도 일반
      사용자를 포함한 모든 사용자들이 사용하는 프로그램들이 있다. 각종 쉘 프로
      그램 및 리눅스 기본 명령어들이 포함되어 있다.
      가장 기본이 되는 명령어들이 있는 디렉토리이므로 이곳에 있는 명령어들은

      숙달되게 사용할 수 있도록

      * 명령어: ls -la /bin | more

       한후 다른 한텀이나 xterm을 띄워

      * 명령어: man 명령어이름

        명령어 사용법을 알아 두어야 한다.


3) /boot
      GNU/Linux 에서 Linux( 리눅스 커널 )이 위치하는 디렉토리 이다.
      부팅 이미지, 시스템 맵, 모듈 정보, 리눅스 커널등이 있다.

      # ls -al /boot
    
4) /dev
      리눅스에서는 모든 장치들이 하나의 파일로 간주한다.

      디바이스 드라이버들도 하나의 파일처럼 간주되고 그렇게 사용된다.
      다만 그것에 대하여 장치 파일처럼 놓는 통신포트,프린터 포트,터미널 장치처
      럼 한번에 한바이트씩 자료가 오가는 단방향의 순차적인 접근만 할 수 있는 장
      치이며, 블록 장치는 디스크,시디롬으로 원하는 부분만을 읽어들일 수 잇는 양
      방향의 랜덤한 방식으로 작동한다.

      블록 장치는 버퍼링을 하는데, 읽기 버퍼링의 경우는 캐쉬 메모리처럼 이미 읽
      은 내용을 메모리에 보관하고 있다가 요청이 있을 때마다 보여준다.
      쓰기 버퍼링의 경우에는 일종의 스풀링 기능처럼 일정시간 혹은 일정량을 모아
      두었다가 한꺼번에 작업을 한다.

      그렇게 함으로 해서 다중 사용자, 다중 작업 시스템의 효율성을 높이는 것이다.
      유닉스를 기반으로 하는 리눅스에서는 모든 하드웨어에 대하여 각각의 파일명
      을 가지고 있으며, 이 파일들은 /dev 디렉토리에 놓여있다.
      이 파일들을 mknod나 /dev/MAKEDEV 라는 스크립트를 이용하여 만들수 있다.

      brw-rw---- 1 root    disk   3,    1 May    6    1998   hda1

      퍼미션 앞에 있는 문자 b는 불록 장치임을 의미하며, c는 문자 장치를 나타낸다
      Disk 다음에 나오는 번호는 장치 파일의 고유속성값인 메이저 번호이며, 파일
      명의 끝에 붙어있는 숫자는 마이너 번호이다.
      IDE 하드디스크의 장치 파일은 마이너 번호 3번으로 시작하며, SCSI 하드디스크
     의 장치 파일은 8번으로 시작한다.
      이 번호들은 고유 번호로 임의로 선택하거나 변경할 수 없다.

      /devfd0 : 플로피 디스크 드라이브

      /dev/hda : 첫 번째 마스터 IDE 드라이브
      /dev/hdb : 첫 번째 슬레이브 IDE 드라이브
      /dev/hdc : 두 번째 마스터 IDE 드라이브
      /dev/hdd : 두 번째 슬레이브 IDE 드라이브

      /dev/sda : 첫 번째 SCSI 하드 디스크 드라이브
      /dev/st0 : 첫 번째 SCSI 테이프 드라이브
      /dev/scd0 : 첫 번째 SCSI 시디롬 드라이브

      /dev/mouse : 마우스
      /dev/psaux : PS/2 마우스
      /dev/ttyS0 : COM1 포트

5) /ETC
      시스템에서 사용하는 각종 설정에 대한 정보를 가지고 있다.
      가장 중요한 디렉토리 중 하나이다.
      제일 중요한 파일들로소는 사용자 정보를 가지고 있는 파일인 passwd(쉐도우
      파일 시스템에서는 패스워드가 shadow 파일에 따로 놓인다.)
      그룹 정의 파일인 group, 프린터 목록 파일인 printcap, 자동 마운트 될 파일
      시스템을 등록해 두는 파일 시스템 테이블 파일인 fstab, 그리고 각종 네트웍
      관련 파일들이 있다.

      /etc/fstab
      리눅스에서 사용하고자 하는 디스크 및 마운트 할 디렉토리에 대한 정보가 들
      어있는 파일이다.
      fstab의 설정에 따라 부팅시 자동으로 마운트할 디렉토리들이 결정되게 된다.
      만일 새로운 하드디스크를 추가하고 이를 리눅스에서 사용하고자 한다면 fstab
      에 등록해야만 부팅시 자동으로 마운트 할수 있다.

      /etc/inittab
      시스템의 런레벨을 지정하는 파일이다.

      /etc/issue
      로그인 시 'login:' 프롬프트 바로 위에 나타나는 메시지를 가지고 있는 파일
      이다.
      당연히 issue 파일을 수정하면 원하는 메시지를 출력할 수 있다.
      하지만 다음에 부팅해보면 다시 이전의 기본값으로 변경되어 있는 것을 알 수
      있다.
      이를 수정하려면 /etc/rc.d/rc.local 파일 후반부의 issue 파일 생성스크립트
      를 모두 주석처리하거나 삭제해주면 된다.

      /etc/login.defs
      login명령에 대한 설정 파일.

      /etc/motd
      issue와 비슷한데 issue가 로그인 전에 나타나는 메시지에 비해 motd는 로그인
      직후 나타나는 메시지이다.

      /etc/mtab
      현재 마운트되어 있는 파일시스템의 목록. 처음에는 초기화 스크립트에 의해
      설정되고 mount명령에 의해 자동으로 갱신된다.

      /etc/rc.d or /etc/rc.?.d 디렉토리
      처음 시스템이 시작될 때나 런 레벨이 변경될 때 실행 되는 스크립트 또는 스
      크립트들이 들어있는 디렉토리이다.

      /etc/magic
      file 명령을 위한 설정 파일. 이 파일은 file이 어떤 파일의 타입을 추측할때 증거가
      되는 여러 가지 파일 형태에 대한 기술을 담고 있다.

      /etc/securetty
      root의 접속이 허용되는 터미널(secure terminal)을 정의한다. 일반적으로 가
      상콘솔만이 목록에 들있어서 모뎀이나 네트웍을 파고 들어서 슈퍼유저의
      권한을 획득하는 것을 실질적으로 불가능하거나 아주 어렵게 만든다.

      /etc/shells
      신뢰성 있는 쉘의 목록. 일반 사용자는 chsh 명령으로 로그인 쉘을 변경할 수
      있으며 이때 여기에 기록되어 있는 쉘만이 가능하다. FTP서버 데몬인 ftpd는
      사용자의 쉘을 검사해서 만일 /etc/shells에 나와있지 않은 쉘이라면 접속을
      허용하지 않는다.

      /etc/termcap
      터미널의 특성에 대한 데이터베이스 파일. 여러종류의 터미널들이 어떤 escape
      코드에 의해 제어되는지를 나타낸다. 프로그램들은 직접 escape코드를 출력해
      서 특정한 타입의 터미널에서만 작동하도록 만들어지는 대신 적절한 코드를
      /etc/termcap에서 찾도록 짜여진다. 그러면 결과적으로 대부분의 프로그램들이
      모든 종류의 터미널에서 작동할수가 있게 된다.

6) /home
      별다른 의미가 없는 디렉토리로 일반적인 리눅스에서는 사용자들의 홈디렉토리
      들을 위치시키는데 사용한다.
      다중 사용자 시스템이므로 각 사용자의 자료가 뒤죽박죽 섞이지 않도록 모든
      사용자는 자신만의 공간을 갖고, 자료파일은 모두 그곳에 두도록 한다.
      물론 디스크 구조에 따른 다른 디렉토리를 사용하는 경우도 많다.
      레드햇 기반의 리눅스에서는 홈디렉토리를 ftp,httpd 등의 네트워크 서비스의
      공용 홈디렉토리로 사용하고 있다

7) /lib
      일반적인 리눅스시스템에서 사용하는 공용라이브러리 파일들이 위치한 곳이다.
      실수로 파일들을 지우지 않아야 한다.
      C 라이브러리 같은 경우 시스템이 더 이상 작동하지 않을 것이다.
      이 디렉토리에는 다음과 같이 라이브러리 파일과 그 라이브러리 파일을 가르키
      는 심볼릭 링크로 구성되어 있다.
      파일은 라이브러리 이름과 버전 그리고 .so(shared Object)라는 문자로 구성되
      어 있다.
      윈도우에서의 DLL과 같은 기능의 파일이다.
      cpp@ libext2fs.so.2.4* libnss_nis.so.2@
      ld-2.1.1.so* libm-2.1.1.so* libnss_nisplus-2.1.1.so*
      ld-linux.so.1@     libm.so.6@   libnss_nisplus.so.2@

      ld 로 시작하거나 libdl 로 시작하는 파일들은 프로그램들이 실행될 때 필요한
      라이브러리를 알맞게 찾아서 메모리에 올려주고 연결해 주는 로더이다.
      이미 메모리상에 존재하는 공유 라이브러리를 메모리에 중복해서 올릴 필요없
      이 같이 사용할 수 있어 메모리를 절약할 수 있다.
      그러나 일부 특수한 프로그램들은 공유 라이브러리를 사용하지 않고 모든 기능
      을 다 포함시켜 놓은 경우가 있는데 이런 프로그램들을 정적 컴파일 되었다고
      한다.
      정적 컴파일된 라이브러리는 당연히 파일 크기 자체도 크며, 모든 기능을 자체
      적으로 갖고 있기 때문에 메모리 손실이 크다.
      어떤 프로그램이 어떤 라이브러리와 동적링크가 되어 있는지는 ldd 명령을 사
      용하여 확인할 수 있다.
      다음과 같이 명령을 했을 때 나타나는 메시지에서처럼 라이브러리가 하나라도
      없으면 그 명령은 실행되지 않는다.

      # ldd /bin/cp
           lib.so.6 => /lib/libc.so.6 (0x4001a000)
      /lib/ld-linux.so.2 = > /lib/ld-linux.so.2 (0x40000000)

8) /mnt
      디스크,CD-ROM, floppy등을  마운트 할 경우 기본적으로 적재할 위치로 사용된다.
      그러나 굳이 /mnt를 사용하지 않아도 된다.

     #ls -la /mnt
      cdrom
      floppy
      smb
      nfs


9) /proc
파일시스템은 가상적인 파일시스템을 담고 있다. 이것은 디스크상에 존재하는 것이  아니고 대신에 커널에 의해 메모리상에 생성되며, 시스템에 대한 정보를 제공하는데 이용된다.(원래는 프로세스에 관한 정보였으며 그 이유로 /proc이라 이름붙여졌다.) 여러 파일과 디렉토리들 중 중요한 것들에 대해서 아래에 설명한다. /proc 파일시스템에 대한 더 상세한 내용은 proc 매뉴얼 페이지를 참고하라.

      /proc/1
      1번 프로세스에 대한 정보를 가진 디렉토리. 각각의 프로세스는 /proc 아래에
      해당 프로세스 번호에 해당하는 이름의 디렉토리를 가진다.

      # cat /proc/1/status
              

      /proc/cpuinfo
      타입, 제조사, 모델, 성능 등 프로세서에 관한 정보.

     # cat /proc/cpuinfo
      processor       : 0
      

      /proc/devices
      현재 동작중인 커널에 설정되어 있는 디바이스 드라이버의 목록.
      

      # cat /proc/devices
          

      /proc/dma
      지금 현재 어떤 DMA 채널을 사용중인지 보여준다.
      

      # cat /proc/dma
    

      /proc/filesystems
      커널에 설정되어 있는 파일시스템들.

      # cat /proc/filesystems
    

      /proc/interrupts
      어떤 인터럽트가 사용중이고 각각의 인터럽트가 얼마나 사용되었나를 보여준다

      # cat /proc/interrupts
   

      /proc/ioports
      현재 어떤 I/O 포트가 사용중인지 보여준다.

      # cat /proc/ioports
      

      /proc/kcore
      시스템의 실제 메모리에 대한 이미지. 이것의 크기는 메모리의 크기와 정확히
      같지만 메모리를 억세스할 때에만 생성되므로  실제로 그렇게 많은 메모리를
      차지하지는 않는다(만약 다른곳으로 복사하지 않는다면 /proc 아래에 있는 것
      은 디스크 공간을 전혀 차지하지 않는다는 것을 상기하라).

      ** 절대 출력 하지 말것 - 책임 못짐 **

      /proc/kmsg
      커널이 출력하는 메시지.  시스템 호출 syslog도 이것들을 보여준다.

      /proc/ksyms
      커널의 심볼 목록.

      # cat /proc/ksyms | tail -20
      

      /proc/loadavg
      시스템의 평균적인 부하; 순간 시스템이 얼마의 일을 해야 하는지를 나타내는
      세 개의 지표로 표시된다.

      # cat /proc/loadavg
      
      /proc/meminfo
      실제 메모리와 스왑 메모리의 사용량에 대한 정보.

      # cat /proc/meminfo
      
      /proc/modules
      현재 어떤 커널 모듈이 로드되어 있는지를 나타낸다.

      # cat /proc/modules
      
      /proc/net
      네트웍 프로토콜의 상태에 대한 정보.

      # ls  /proc/net/
      
      /proc/self
      /proc을 억세스하는 프로그램의 프로세스 디렉토리에 대한 심볼릭 링크. 두 개
      의 프로세스가 /proc에 접근하면 각각은 서로 다른 링크를 갖게 된다. 이것은
      주로 프로그램이 자신의 프로세스 디렉토리에 쉽게 접근하도록 하기 위함이다.

      # ls  /proc/self/
      

      /proc/stat
      시스템이 부팅된 이후 발생한 페이지 폴트의 횟수와 같은 시스템에 관련된 여
      러 가지 통계 자료.
     

     # cat /proc/stat
      

      /proc/uptime
      시스템이 작동해온 시간.

      # cat /proc/uptime
    

      /proc/version
      커널 버전.

     # cat /proc/version
      

      이것 외에도 많은 시스템의 정보를 얻을 수 있다.

      위의 파일들은 텍스트 파일이므로 그냥 읽을 수 있지만 어떤 경우에는 쉽게 이
      해할 수 없는 형태로 되어 있다. 그런 경우 해당 파일을 읽어들여서 새로 포맷
      하는 명령을 이용하면 쉽게 이해할 수 있다.
      예를 들면 명령어 free는 /proc/meminfo를 읽어서 바이트로 주어진 용량을 킬
      로바이트로 변환한다(게다가 약간의 정보를 추가하기도 한다).

10) /sbin
      관리자의 권한에서만 실행할 수 있는 명령들로 파일시스템 처리 명령,네트웍
      인터페이스 설정 명령,시스템 초기화 명령,커널 모듈 관리 등 주로 시스템 관
      리에 필요한 명령들로 놓여 있다.


11) /tmp
      수많은 프로그램들이 작업을 위해 임시 파일을 저장하기 위해 존재하는 디렉토
      리이다. 시스템에서 관리하면 일반 사용자들도 파일 생성이 가능하다.

12) /usr
      일반적으로 사용하는 명령어와 메뉴얼, 사용자들을 위한 각종 환경 설정과 X11
      R6를 비롯한 여러가지 프로그램들이 위치하는 곳으로 루트디렉토리 만큼 많은
      디렉토리를 가지고 있다.

      # ls /usr/
      X11R6/  dict/  etc/    i386-accel-linux/  include/  kde/  libexec/
      lost+found/  sbin/   src/        bin/    doc/   games/  i486-linux-libc5/
      info/     lib/  local/    man/         share/  tmp@

      /usr/X11R6
      X 윈도우 시스템의 모든 파일들. X의 개발과 설치를 단순화하기 위해 X의 파일
      들은 시스템의 나머지 부분들과는 분리되어 있다. /usr아래에 있는 디렉토리와
      유사한 구조가 /usr/X11R6 아래에도 있다.

      /usr/X386
      /usr/X11R6과 비슷하나 X11R5에 해당한다.

      /usr/bin
      대부분의 사용자 명령어. 몇몇 명령어들은 /bin이나 /usr/local/bin에 있다.

      /usr/sbin
      시스템이 부팅되고 작동하기 위해 필요한 필수 관리 명령을 제외한 데몬들이
      위치하고 있다.

      /usr/include
      C 라이브러리 및 각종 추가 라이브러리의 헤더 파일이 놓여 있다.

      /usr/lib
      /lib에 들어 있는 라이브러리를 제외한 라이브러리들이 들어있다.
      /usr/bin의 실행 라이브러리에 동적 링크된 라이브러리가 들어있다.

      /usr/src
      커널 소스가 들어있는 디렉토리이다.

      /usr/doc, /usr/info,/usr/man
      how-to 및 man page 등의 문서파일이 들어있다.

      /usr/local
      시스템에 관련된 프로그램들이 아닌 사용자가 소스를 가져다 컴파일한 프로그램들이
      설치되는 공간이다.

13) /var
시스템이 정상적으로 작동할 때 수시로 변경되는 데이터가 저장된다. 이것은 각 시스템마다 달라서 다른 컴퓨터와 네트웍을 통해 공유되거나 하는 일은 없다.

      /var/catman
      포맷된 매뉴얼 페이지가 저장되는 곳. 매뉴얼 페이지의 소스는 보통 /usr/man/
      man*에 있다; 일부의 매뉴얼 페이지는 /usr/man/cat*에 미리 포맷된 형태로 제
      공되기도 한다. 그외의 매뉴얼 페이지들은 처음 사용자가 불러서 볼 때 포맷이
      되며 이렇게 포맷된 것들은 /var/man에 저장되어서 다음에 볼 때에는 포맷되기
      를 기다릴 필요가 없다.(/var/catman의 파일들은 흔히 임시 디렉토리들의 내용
      이 삭제되는 것과 마찬가지 방법으로 삭제된다.)

      /var/lib
      시스템이 정상적으로 동작할 때 변경되는 파일들.

      /var/local
      /usr/local에 설치되어 있는 프로그램이 필요로 하는 변동하는 데이터.
      /var/lock과 같은 적당한 곳이라면 /var아래의 다른 디렉토리도 사용될수 있다

      /var/log
      시스템의 로그가 쌓이는 곳이다. 이곳은 상당히 중용한 곳으로 유심히 보아야 할

      디렉토리이다.

      # ls /var/log/
      

      /var/log/boot.log
      부팅시 시작된 데몬들에 관한 정보가 들어 있습니다.

      # cat boot.log | tail -10
      
      /var/log/cron
      크론의 메시지를 기록한다.

      # cat /var/log/cron | tail -10
      
      /var/log/dmesg
      부팅시 컴퓨터 초기화부분의 메세지가 기록며, 마지막 부팅함 메시지를 담고 있다.
      LiLo: 부분 나온 다음 부터 서비스 데몬 시작하기 전까지의 메세지가 기록된다.
      bootup 메세지가 기록되므로 시스템이 부팅시 에러 유무를 확인 할수 있다.


      # cat /var/log/dmesg |  head -10
    
      # cat /var/log/dmesg |  tail -10
      

      /var/log/secure
      서비스를 받기 위하여 서버에 접속하는 모든 기록이 저장되는 화일이다.
      

      # cat /var/log/secure | tail -10
      

      /var/log/spooler
      메일이나 뉴스 로그 화일이다.

      /var/log/statistics
      센드메일에서 사용하는 로그 화일이다.

      /var/log/xferlog
      ftp 엑세스 로그 화일이다.
      

      # cat /var/log/xferlog | tail -5
    

      /var/log/htmlaccess.log
      아피치의 웹 엑세스 로그 화일로 rpm으로 설치시 여기에 엑세스 로고가  쌓인다.
      /var/log/httpd/와 더불어 아파치와 관련된 로그 화일이다.

      /var/log/maillog
      센드메일의 로그 화일로 사용자가 메일관련해서 접속할 경우 이 화일에 기록된다.
      

      # cat /var/log/maillog | tail -3
      

      /var/log/wtmp
      로기한 사람의 정보를 가지고 있는 데이터 화일 이다. 현재의 시스템을 사용하고 있는
      사람의 정보를 담고 있다.
      last와 lastlog 라는 명령어로 화일의 내용을 확인 할 수 있다.

      화일 타입은 data 이므로 이것을 cat 해보면 아마도 후회 할것이다.
      

      # file  /var/log/wtmp
      /var/log/wtmp: data


      /var/log/lastlog
      마지막에 로긴한 사람에 관한 정보가 기록되어 있다.

      ** cat /var/log/lastlog  하지 말것 **
      화일 타입은 아스키 화일인데 깨짐.ㅡ.ㅡ)

      /var/log/messages
      시스템의 이상 유무에 관련있는 로그 화일로 시스템의 이상유무를 파악 할 수 있다.

      # cat /var/log/messages | tail -5
      

      /var/log/netconf.log
      netconf 명령어를 수행 후에 나타나는 로그 화일이다.

      # cat netconf.log
      

      /var/log/maillog
      센드 메일 엑세스 로그 화일이다.

      # cat /var/log/maillog | tail -5
              

      /var/run
      다음번 부팅때까지 유효한 시스템에 관련된 정보를 담은 파일들.

      /var/run/utmp
      현재 로그인되어 있는 사용자에 관한 정보가 들어있다.

      ** cat /var/run/utmp 하지 말것 **

      화일 타입은 data 이므로 이것을 cat 해보면 아마도 후회 할 것이다.
      

      # file  /var/run/utmp
      /var/log/wtmp: data

      그외에 서버의 프로세스 id가 기록되어 있다.
     
      #ls /var/run/

      /var/spool
      메일, 뉴스, 프린터 큐, 그밖의 대기 작업(queued work)을 위한 디렉토리들.
      각각의 스풀은 /var/spool 아래에 서브디렉토리를 가지고 있어서 일례로 사용

      /var/spool/mail
      사용자에게 온 메일을 보관하는 디렉토리이다.



3. 파일 시스템 마운트 테이블(/etc/fstab)


      fstab에는 시스템 부팅시 자동으로 마운트되어야 할 항목과 옵션이 들어 있다.
      자동 마운트 기능 외에도 마운트를 편리하게 하기 위한 옵션들이 존재한다.

      /dev/hda1       /           ext2    defaults        1 1
      /dev/hdb1       /home   ext2     defaults        1 2
      /dev/hda6       /users   ext2    defaults        1 2
      /dev/hda5       /usr      ext2     defaults        1 2

'Linux' 카테고리의 다른 글

minicom 설치  (0) 2006.08.11
파일을 찾자 : find  (0) 2006.08.10
ssh2 설치  (0) 2006.08.03
wget  (0) 2006.08.03
2.6.18 커널 업데이트  (0) 2006.08.03

+ Recent posts