- clear
화면 지우기
- pwd
현재 작업디렉토리 확인
- ls
현재 위치에 있는 파일/디렉토리 확인 ls -al 경로 -> "a' 숨김파일/디렉토리 포함 "l" 상세 정보보기(퍼미션, 사이즈, 링크..)
- cd
경로 이동하기 cd ~ : 홈디렉토리 cd - : 직전 디렉토리
- touch
빈 파일 생성하기. 원래의 목적은 파일의 날짜 갱신하기
- cp
copy 파일복사하기, 만약 디렉토리를 복사하고 싶다면 -r을 이용한다 cp -r
- mv
이동하기. 동일 디렉토리 내에서 이동시키게 되면 이름을 변경하는 효과가 있다
- hostname
현재 서버의 이름을 출력 hostnamectl set-hostname test -> 현재 서버의 이름을 test 로 변경한다. 재부팅 이후에 반영되므로 reboot 을 하거나 또는 재로그인을 su
- 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
- netstat -anpt | grep LISTEN
"a" 모든정보 "n" 이름이 아닌 IP 주소로 확인하겠다 "p" 각 서비스가 몇번 PID 를 사용하고 있는지 "t" TCP 서비스만! "u" UDP 서비스만
- grep - 특정문자열에 매치하는 행을 출력시켜준다.
grep 문자열 입력파일 -> grep Listen /etc/httpd/conf/httpd.conf cat anaconda-ks.cfg | grep root
- ifdown ifup - 인터페이스를 비활성화,활성화
systemctl start nerwork - 서비스 시작 systemctl enable network - 서비스 활성화(부팅시 자동으로 활성화)
- df : 디스크 사용량, 마운트 정보
- 마운트하기
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는 공유 스토리지이므로 여러사람이 동시에 접속할 수 있다.
- top : 실시간으로 메모리와 CPU가 프로세스별로 어느 정도 사용되고 있는지를 확인할 수 있다. (* virt-top : 가상 머신들의 CPU/MEM 정보를 확인할 수 있다.)
- yum -y install sysstat
sar 3 5 -> 3초마다 한번씩 총 5번 CPU 의 유휴자원등을 확인하여 평균값을 출력시켜준다.
- mkdir - 디렉토리 만들기
mkdir -p a/b/c -> a,b가 생성되면서 c를 생성한다. 원래 a,b는 없었다.
- rmdir - 디렉토리 삭제
단, 비어 있는 디렉토리를 삭제한다. 만약 비어있지 않다면 rm -f을 통해서 삭제가 가능하다.
- rm - 파일삭제(alias rm='rm -i')
rm -f - 묻는것 없이 즉시 삭제 rm -rf - 파일/디렉토리를 파일포함여부와 상관없이 강제로 즉시 삭제한다.
- 파일 내용보기
cat head / tail (파일의 상단/하단 10줄만 확인한다.) head -3 -> 상단 3줄만 확인 less / more는 페이지 단위로 출력하여 보여준다.
- vi 편집기
- 행단위 -> sed : sed -i 's/linux/window/' a.txt sed -i 's/linux/window/g' a.txt -> 파일에 있는 모든 linux 를 window 로 변경 만약 변수를 이용하고 싶다면 ' -> " 를 사용하고 / / 사이에 $변수명 을 포함하면 된다. 만약 정규표현식을 사용하고 싶다면 -e - 화면단위 vi(m)
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과 같은 패키지를 이용하여 설치할때와 설치되는 경로가 달라진다.
-> yum -y install httpd
-> yum grouplist -> yum -y grouplist "Server whit GUI"
압축 : 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일 이내에 생성된 파일이 있다면 역시 출력하라.
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 과 같은 주소로의 접속을 희망했을 경우 서브도메인에 대한 주소를 알려주는 역할을 수행한다.
- yum -y install bind bind-chroot
/etc/hosts 4.4.4.4 www.kbstar.co
- 시나리오
우리회사에 있는 캐시네임서버 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
[월요일 오후]