리눅스 기본 정리5

양승현·2022년 7월 22일
1

linux

목록 보기
7/20

기본 명령어

    1. clear
화면 지우기
    1. pwd
현재 작업디렉토리 확인
    1. ls
현재 위치에 있는 파일/디렉토리 확인
   ls -al 경로  -> "a' 숨김파일/디렉토리 포함
                  "l" 상세 정보보기(퍼미션, 사이즈, 링크..)
    1. cd
경로 이동하기
   cd ~   : 홈디렉토리
   cd -   : 직전 디렉토리
    1. touch
빈 파일 생성하기. 원래의 목적은 파일의 날짜 갱신하기
    1. cp
copy 파일복사하기, 만약 디렉토리를 복사하고 싶다면 -r을 이용한다
cp -r
    1. mv
이동하기. 동일 디렉토리 내에서 이동시키게 되면 이름을 변경하는 효과가 있다
    1. hostname
현재 서버의 이름을 출력
   hostnamectl set-hostname test  -> 현재 서버의 이름을 test 로 변경한다.
   재부팅 이후에 반영되므로 reboot  을 하거나 또는 재로그인을 su
    1. ping , route, netstat -nr (라우팅정보/기본게이트웨이 정보 확인 가능)
[root@mainserver ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
    1. netstat -anpt | grep LISTEN
"a" 모든정보
"n" 이름이 아닌 IP 주소로 확인하겠다
"p" 각 서비스가 몇번 PID 를 사용하고 있는지
"t" TCP 서비스만!
"u" UDP 서비스만
    1. grep - 특정문자열에 매치하는 행을 출력시켜준다.
grep 문자열 입력파일 -> grep Listen /etc/httpd/conf/httpd.conf 
cat anaconda-ks.cfg | grep root
    1. ifdown ifup - 인터페이스를 비활성화,활성화
	systemctl start nerwork  - 서비스 시작
    systemctl enable network  - 서비스 활성화(부팅시 자동으로 활성화)
    1. df : 디스크 사용량, 마운트 정보
    1. 마운트하기
	mount [from] [to]
    mount /dev/sr0 /test -> CD-ROM을 /test 디렉토리에 연결하겠다.
    mount -t nfs 192.168.1.199:/cloud /test -> 원격지 서버인 192.168.1.199의 /cloud 디렉토리를 로컬에 있는 /test 디렉토리에 마운트 시킨다.
    참고로 nfs는 공유 스토리지이므로 여러사람이 동시에 접속할 수 있다.
    1. top : 실시간으로 메모리와 CPU가 프로세스별로 어느 정도 사용되고 있는지를 확인할 수 있다. (* virt-top : 가상 머신들의 CPU/MEM 정보를 확인할 수 있다.)
    1. yum -y install sysstat
sar 3 5 -> 3초마다 한번씩 총 5번 CPU 의 유휴자원등을 확인하여 평균값을 출력시켜준다.
    1. mkdir - 디렉토리 만들기
mkdir -p a/b/c -> a,b가 생성되면서 c를 생성한다. 원래 a,b는 없었다.
    1. rmdir - 디렉토리 삭제
단, 비어 있는 디렉토리를 삭제한다. 만약 비어있지 않다면 rm -f을 통해서 삭제가 가능하다.
    1. rm - 파일삭제(alias rm='rm -i')
rm -f - 묻는것 없이 즉시 삭제
rm -rf - 파일/디렉토리를 파일포함여부와 상관없이 강제로 즉시 삭제한다.
    1. 파일 내용보기
cat
head / tail (파일의 상단/하단 10줄만 확인한다.) head -3 -> 상단 3줄만 확인
less / more는 페이지 단위로 출력하여 보여준다.
  1. vi 편집기
- 행단위 -> sed : 
           sed -i 's/linux/window/' a.txt 
           sed -i 's/linux/window/g' a.txt -> 파일에 있는 모든 linux 를 window 로 변경
           만약 변수를 이용하고 싶다면 ' -> " 를 사용하고 / / 사이에 $변수명 을 포함하면 된다.
           만약 정규표현식을 사용하고 싶다면 -e 
- 화면단위
          vi(m)
  • cloud는 가상화를 포함해야 효율성을 극대화할 수 있다.
  • 사용자는 on-demand 서비스를 필요로 한다. -> 가상화
  • 동작중인 애플리케이션, 서버는 무중단 상태여야 한다. ->live migration
  • 리눅스에서 패키지 설치 - centos -> rpm
rpm -Uvh test.1.0,rpm -> 설치가 되어 있지 않다면 기본설치. 이미 설치되있다면 새로운 버전으로 업데이트. v -> 확인, h - using #
	rpm -qa | grep httpd  - 설치 여부 확인 가능
    rpm -qi httpd - 설치된 패키지의 상세 정보 확인
  • rpm의 의존성 문제를 해결하기 위한 방법 -> yum -> dnf(메모리 적게 사용하면서 필요한 버전 설치 가능. yum은 설치시 함께 설치된 의존성 해결 패키지를 remove할 때 지우지 않지만 dnf는 의존성 해결 채키지도 함께 삭제해준다.)

  • yum/dnf는 저장소를 이용하여 필요한 패키지를 요청하면 저장소에서는 해당 패키지와 의존성 해결을 위한 패키지를 묶어 다운로드 시켜준다.

-> 도커에서 httpd, nginx를 설치 할때에는 rpm과 같은 패키지를 이용하여 설치할때와 설치되는 경로가 달라진다.
  • 가령 도커 컨테이너를 이용하여 centos 컨테이너를 생성하고 해당 컨테이너 내에서 httpd를 설치하면 기본 경로는 /var/www/html이지만, 컨테이너로 httpd 이미지를 사용하면 /var/www/html가 아니다. /usr/local/apache2/htdocs가 된다
-> yum -y install httpd
-> yum grouplist -> yum -y grouplist "Server whit GUI"

파일 묶기 : tar

압축 : gzip, zip, bunzip,xz .. (압축률의 차이가 있다. 책에 있는 것등중 압축률이 가장 높은 것은 xz)

tar cvf my.tar /test 
-> /test 디렉토리 내에 포함되어 있는 모든 파일과 디렉토리를 my.tar 파일로 묶겠다.

Quiz. 자신의 홈 디렉토리를 포함하여 하위에 있는 모든 디렉토리와 파일중.. 파일만을 검색하여 최근 2일 이내에 파일의 내용이 변경된 적이 있는 파일이 있다면 출력하라.
[root@srv7 0722]# find / -mtime -2 -type f -ls
Quiz. /usr/bin 하위파일을 검색하여 최근 3일 이내에 변경이 된 적있는 파일이 있다면 출력하라.
더불어 3일 이내에 생성된 파일 있다면 이 역시 출력하라.
[root@srv7 0722]# find /usr/bin -mtime -3 -type f -ls
Quiz. 더불어 3일 이내에 생성된 파일이 있다면 역시 출력하라.

find

atime : access -> 파일이나 디렉토리에 접근할 시간
mtime : modify -> 파일의 내용을 열고 수정하였다.
ctime : change -> 파일의 내용을 수정한 것이 아니라 파일의 고유번호(inode)나 퍼미션(+x), 소유권(user1 -> root)등을 변경

which gzip
whereis gzip
locate gzip
분  시 일 월 요일
*   *  *  *  *    -> 1분 마다
2   *  *  *  *    -> 매시 2분에
*/2 *  *  *  *    -> 2분마다 (1분 -> 3분 -> 5분 ...)

실행 시간은 ...cron에서 정해라
1 19 * * * /root/backup.sh
실행 파일 내용은 다음과 같다.

git clone https://.....  /root/$(date +\%H%M)
cp /root/$(date +%y%m%d%H%M)/* /var/www/html
systemctl restart httpd

Quiz.
1. github 저장소에 임의이 index.html 파일을 생성한다.(직접 만들거나 또는 push)
2. 리눅스에 있는 /root/backup.sh 파일의 내용을 수정하여
2.1 git 허브로 부터 로컬에 clone한다.
2.2 clone 된 디렉토리 내에 있는 모든 파일/디렉토리를 /var/www/html로 복사한다.
2.3 systemctl restart httpd
3. crontab -e 에서 매분마다 /root/backup.sh 를 실행하도록 작성(작성되어 있음)

[확인]
1. http://localhost 확인
2. github에서 index.html 파일의 내용을 수정!
3. 1분 정도 기다린 다음웹페이지를 다시 확인하면 변경된 내용으로 보여야 한다!!

git clone https://github.com/..../.... /root/$backupdate
[root@srv7 0722]# touch /root/backup.sh
[root@srv7 0722]# chmod 755 backup.sh
[root@srv7 0722]# vi /root/backup.sh
#!/bin/bash
backupdate=$(date +%y%m%d%H%M)
git clone https://github.com/Yangyang0429/tutorial.git /root/$backupdate
\cp /root/${backupdate}/* /var/www/html
systemctl restart httpd
CentOS7(DNS서버)   : 192.168.1.1XX        
CentOS8(일반 PC)    : 211.183.3.111

사용자 입장에서 자신의 NIC에 DNS 항목에 작성한 DNS 서버 주소는 로컬 네임 서버라 한다.

실제로 DNS 서비스를 제공하는 서버는 크게

  • 캐시 네임서버 : 자신이 직잡 도메인을 관리하지는 않는다. 루트도메인서버, .com 서버 등에게 질의한 다음 최종 결과를 자신의 캐시에 저장하고 해당 결과를 사용자에게 전달해 주는 역할만을 수행한다.
    이후에 동일 주소에 대한 query가 또 있을 경우 캐시에 있는 정보를 확인하여 전달해 준다.
  • 마스터 네임서버: test.com, test.co.kr과 같은 도메인을 직접 관리하는 서버이며 zone 파일이라는 곳에 서브도메인등을 작성하여 외부에서 www.test.com 과 같은 주소로의 접속을 희망했을 경우 서브도메인에 대한 주소를 알려주는 역할을 수행한다.

실습1

    1. yum -y install bind bind-chroot
/etc/hosts
4.4.4.4 www.kbstar.co
    1. 시나리오
      우리회사에 있는 캐시네임서버 192.168.1.1xx를 마스터 네임서버로 활용할 계획이다.
      도메인 주소는 yangseunghyun.com 이다.
      내부에 있는 211.183.3.111 이 주소창에 www.yangseunghyun.com 이라고 했을 때 마스터네임서버에서 동시에 서비스하고 있는 웹 서비스를 제공할 수 있어야 한다.
[root@mainserver ~]# tail -5 /etc/named.conf 
zone "yangseunghyun.com" IN {
  type master;
  file "yangseunghyun.com.db";
  allow-update { none; };
};
[root@mainserver ~]# named-checkconf
[root@mainserver ~]# vi /var/named/yangseunghyun.com.db
$TTL            3H
@       SOA     @       root. ( 2 1D 1H 1W 1H )
        IN      NS      @
        IN      A       192.168.1.199
www     IN      A       192.168.1.199
shop    IN      A       192.168.1.199
hr      IN      A       192.168.1.101

proxy

  • web proxy는 웹서버의 내용을 캐시에 담고 이를 클라이언트에게 전달한다.
    이후 동일 사이트 접속 시도시 캐시에 있는 내용을 LAN에서 전달하므로 속도가 빠르다.

  • 지금까지 했던 내용들 중에서 cloud/가상화 쪽에 적용할 수 있는 것들. 반드시 필요한 것들
  • 기본 명령어...

[월요일 오후]

  • 쉘 + 인스턴스 만들기...
  • 새로운 가상머신(Linux)

0개의 댓글