1. CentOS7_XFCE
Oracle VM VirtualBox를 실행 -> CentOS7 선택 -> 설정 클릭
지난 시간에 만들었던 CentOS7의 이름을 CentOS7_XFCE로 바꾼다.
네트워크 -> 어댑터 1 -> 네트워크 어댑터 사용하기 체크 -> NAT 으로 설정 -> 확인 클릭
CentOS7_XFCE를 실행시켜 Username과 Password를 입력 후 터미널을 실행시켜 ip a 명령어를 입력한다.
NAT의 ip를 확인할 수 있다.
ping google.com을 입력하여 구글 서버에 패킷을 보내 네트워크가 제대로 작동하는지 네트워크 연결 상태를 확인한다.
CentOS7_XFCE의 설정에 가서 네트워크의 어댑터 1을 호스트 전용 어댑터로 변경한다.
reboot로 재시작을 하여 ip a를 입력한 후 ip 주소를 확인한다.
명령 프롬프트로 이동해서 ip 주소의 ping을 입력하여 네트워크 연결이 잘 되는지 확인한다.
SSH 프로토콜을 사용하여 ip 주소에 root 계정으로 접속한다.
이후 Password를 입력하여 로그인을 한다.
구글 서버로 ping을 입력해 네트워크 서버를 확인하면 연결이 되지 않는다는 것을 확인할 수 있다.
인터넷 연결을 하기 위해 추가로 NAT을 설정한다.
XFCE에 설정으로 가서 네트워크에 어댑터 2를 추가하여 NAT를 추가한다.
명령 프롬프트로 가서 연결을 해제한 후 다시 ssh로 ip 주소로 연결한다.
구글 서버로 ping을 입력하여 네트워크 연결이 정상적으로 실행되는 것을 확인한다.
CentOS7_XFCE의 터미널에서 /usr/bin/google-chrome을 입력한 후 설정한 비밀번호를 입력한다.
인터넷이 정상적으로 되는 것을 확인한다.
2. 리눅스 명령어
2.1 복사
cp fileA fileAA # fileA 파일을 fileAA 파일로 복사
- 파일을 복사하기 위해서는 cp를 입력하여 복사할 파일 이름과 복사하여 붙여 넣을 파일 이름을 입력한다.
cp fileA fileAA dirC # fileA, fileAA 파일을 dirC 디렉토리에 복사
- 현재 디렉터리에 있는 fileA와 fileAA를 디렉터리 dirC에 복사한다.
cp -i fileA fileAA
- fileA를 fileAA로 복사한다.
- 만약 fileAA가 이미 존재하면 덮어쓰기 여부를 묻는다. y 또는 n을 입력
cp -r dirC dirCC
- dirc 디렉터리의 모든 파일과 하위 디렉터리들을 dirCC 디렉터리에 복사한다.
- dirCC가 존재하면 dirC의 내용이 dirCC안에 복사된다.
- dirCC가 존재하지 않으면 dirCC를 생성하여 dirC 내용을 안에 복사된다.
2.2 이동
mv fileD dirC
- mv는 파일 또는 디렉터리를 이동하기 위해 사용한다.
- fileD 파일을 dirC 디렉터리에 이동한다.
mv dirCC dirC
- dirCC 디렉터리를 dirC 디렉터리로 이동한다.
2.3 생성
touch dirC/touch_file
- touch는 파일의 수정 시간을 현재 시간으로 갱신하거나 파일이 존재하지 않으면 새로운 빈 파일을 생성한다.
- dirC 디렉터리 안에 touch_file이라는 빈 파일을 생성한다.
- touch_file은 빈 파일이기 때문에 cat을 사용해도 내용이 없다는 것을 알 수 있다.
- echo를 사용해서 문자열을 입력한 후 cat을 사용하면 내용을 확인할 수 있다.
touch makeA makeB makeC
- touch를 사용해서 여러 개의 파일을 생성할 수 있다.
mkdir dirX
- mkdir은 디렉터리를 생성하는 명령어이다.
mkdir dirY/dirZ
- dirY 디렉터리 안에 dirZ 디렉터리를 생성한다.
- dirY가 존재하지 않으면 에러를 출력한다.
mkdir -p dirY/dirZ
- 오류를 피하기 위해서 -p 옵션을 추가한다.
- dirY를 생성하여 dirY안에 dirZ를 생성한다.
mkdir dirU dirV
- dirU 디렉터리와 dirV 디렉터리를 생성한다.
2.4 변경
mv fileAA fileF
mv dirU dirD
- mv는 파일 이름을 변경하는 명령어이다.
- 파일 fileAA를 fileF라는 이름으로 변경한다.
- 디렉터리 dirU를 dirD라는 이름으로 변경한다.
2.5 삭제
rm makeA # makeA 삭제
rm makeA makeB # makeA makeB 삭제
- rm은 파일 또는 디렉터리를 삭제한다.
- 삭제할 파일이 존재하면 삭제를 할 것인지 물어보고 삭제를 하려면 y를 입력한다.
- 삭제할 파일이 존재하지 않으면 현재 디렉터리에 존재하지 않는다는 메시지가 출력된다.
rmdir dirD
- rmdir은 디렉터리를 삭제하는 명령어이다.
- 단, 삭제할 디렉터리가 비어있어야만 가능하다.
- 삭제할 디렉터리디렉터리 안에 파일 또는 디렉터리가 있다면 오류 메시지를 출력한다.
rm -r dirC
rm -rf dirC
- 삭제할 디렉터리 안에 하위 파일 및 폴더가 있으면 rm -r 명령어를 입력해서 삭제한다.
- 하위 파일과 폴더 또한 삭제하기 위해 삭제할 것이냐고 물어보면 y를 입력한다.
- rm -rf는 삭제할 디렉터리와 하위 파일 및 폴더를 강제로 삭제한다.
- rm -r과 차이점은 삭제할 것인지 물어보지 않는다.
2.6 링크
ln fileA hardA
- ln은 link를 의미하고 파일이나 디렉터리에 대한 링크를 생성하는 데 사용한다.
- 위 명령어는 fileA에 대한 하드 링크를 hardA라는 이름의 새로운 파일로 생성한다.
- 하드 링크는 원본 파일과 링크된 파일이 같은 inode 번호를 가지게 된다.
- 즉, 원본 파일과 링크된 파일은 동일한 파일의 내용을 공유한다.
- fileA 파일에 hello를 입력하고 hardA 파일을 출력하면 hello가 출력된다.
- hardA 파일에 world를 입력하고 fileA 파일을 출력하면 hello world가 출력된다.
ln -s fileA symbolA
- ln -s를 사용하여 fileA 파일에 대한 심볼릭 링크를 symbolA라는 이름의 새로운 파일로 생성한다.
- 심볼릭 링크는 원본 파일과 링크된 파일은 다른 inode 번호를 가지게 된다.
- 원본 파일의 경로를 가리키는 심볼릭 링크 파일이 생성된다.
- fileA와 symbolA의 inode가 다르다는 것을 알 수 있다.
- fileA는 이전에 입력했던 hello world가 있다.
- fileA에 aloha를 입력하면 symbolA에 aloha가 출력되는 것을 알 수 있다.
- fileA를 삭제했지만 심볼릭 링크로 연결된 symbolA가 있다는 것을 확인한다.
- symbolA를 출력하면 아무런 내용이 없다.
- 삭제된 fileA에 aloha 내용을 입력하여 symbolA를 출력하면 aloha가 출력되는 것을 알 수 있다.
- symbolA를 삭제하고 ls를 입력해 파일 목록을 확인하면 symbolA는 없어지고 fileA가 생성된 것을 확인한다.
- fileA를 출력하면 fileA에 입력한 aloha가 있다는 것을 알 수 있다.
2.7 내용 검색
grep 'root' /etc/passwd # /etc/passwd 파일에서 root라는 문자열을 포함하는 모든 행을 출력한다.
grep -n 'root' /etc/passwd # /etc/passwd 파일에서 root라는 문자열을 포함하는 모든 행을 출력하면서 행의 번호도 함께 출력
grep -v 'root' /etc/passwd # /etc/passwd 파일에서 root라는 문자열을 포함하지 않는 모든 행을 출력한다.
grep -l 'root' /etc/* # /etc 디렉토리에 있는 root라는 문자열을 포함하는 파일의 이름 출력
grep -c 'root' /etc/passwd # /etc/passwd 파일에서 root라는 문자열을 포함하는 행의 수를 출력
- grep은 파일 내에서 특정 문자열을 찾는 데 사용된다.
useradd johnlee
useradd john
grep 'john' /etc/passwd
- johnlee와 john이라는 새로운 사용자 계정을 생성한다.
- /etc/passwd 파일에서 john이라는 문자열을 포함하는 모든 행을 출력한다.
grep 'login$' /etc/passwd
- /etc/passwd 파일에서 끝이 login으로 끝나는 모든 행을 출력한다.
grep 'j..n' /etc/passwd /etc/passwd
# 파일에서 j로 시작하고 n으로 끝나는 두 글자의 임의의 문자를 포함한 4글자 단어를 가진 행을 출력한다.
grep -w 'john' /etc/passwd
# /etc/passwd 파일에서 john 이라는 정확한 단어를 찾아 출력한다.
grep '^john' /etc/passwd
# /etc/passwd 파일에서 john으로 시작하는 모든 행을 찾아 출력한다
egrep 'N(o|e)+' /etc/passwd
- egrep은 grep에서 확장 정규 표현식을 사용하도록 설정하는 옵션이다.
- N(o|e)+은 N 다음에 o 또는 e가 한 개 이상 반복되는 문자열을 의미한다.
egrep '(root|john):x' /etc/passwd
- (root|john):x은 root 또는 john 다음에 :x가 오는 문자열을 의미한다.
- 위 명령어는 /etc/passwd 파일에서 root 또는 john 사용자 계정 정보를 찾아 출력하는 명령어이다.
egrep -c '(svm|vmx)' /proc/cpuinfo
- /proc/cpuinfo 파일은 현재 시스템에서 실행 중인 CPU에 대한 정보를 포함하는 가상 파일이다.
- -c는 행의 개수를 세는 것이다.
- 위 명령어는 현재 시스템의 CPU에서 SVM 또는 VMX 확장 기술을 지원하는 코어의 수를 계산한다.
2.8 파일 검색
find / -name hosts # 루트부터 시작해서 hosts라는 이름을 가진 모든 파일을 찾는다.
find / -name "hosts*" # hosts라는 이름으로 시작하는 모든 파일을 찾는다.
- find는 파일을 찾는 명령어이다.
find / -name hosts -type f
# hosts라는 이름을 가진 파일 중 파일 타입이 일반 파일인 것만 찾는다.
find / -name hosts -type d
# hosts라는 이름을 가진 디렉토리 중 디렉토리 타입인 것만 찾는다.
find / -name fileA -type f -exec rm {} \;
# 루트 디렉토리부터 시작하여 fileA인 일반 파일을 모두 찾아 삭제한다.
- -exec rm {} ;는 찾은 파일을 삭제하기 위한 명령어이다.
- {}는 찾은 파일의 이름. ;은 명령어가 끝났음을 나타낸다.
find / -name fileC -type f -ok rm {} \;
# 루트 디렉토리부터 시작하여 fileC인 파일을 찾아 삭제할 것인지 물어본다
- -ok rm {} ; 는 찾은 파일을 삭제할 것인지 물어보는 옵션이다.
- -ok는 삭제하기 전에 한 번 더 확인을 받기 때문에 실수로 파일을 삭제하는 일을 방지한다.
- fileC인 모든 일반 파일을 하나씩 확인하면서 삭제할 것인지 물어보며 y를 입력하면 해당 파일을 삭제한다.
find ~ -mtime -2
# 홈 디렉토리부터 시작하여 2일 이내에 수정된 모든 파일과 디렉토리를 찾는다.
- -mtime -2는 파일의 수정 시간이 현재 시간부터 2일 이내인 것을 찾기 위한 옵션이다.
- -2는 2일 이내를 의미한다.
find /usr/bin -size +3000000c -ls
# 파일 크기가 3MB 이상인 모든 파일을 찾아 파일 정보를 출력
- c는 파일 크기의 단위를 바이트로 지정하는 옵션
- +3000000c는 3000000바이트 이상인 것을 의미
2.9 vi 편집
● vi 편집 기초
i 키 입력 -> 글을 입력 -> esc 키를 입력 -> :wq! 입력
● vi 명령어
a | 텍스트 뒤에 커서를 위치시켜 입력을 받는다. | yy | 한 줄을 복사하여 임시 버퍼 공간에 저장한다. |
i | 텍스트가 앞에 커서를 위치시켜 입력을 받는다. | p | 임시 버퍼 공간에 저장된 텍스트를 커서의 아랫줄에 붙여 넣는다. |
o | 커서가 위치한 줄의 아래에 새로운 줄을 추가하여 커서를 위치시키고 입력을 받는다. | :set nu | 화면에 줄 번호를 출력한다. |
G | 파일의 제일 마지막 줄로 이동 | :n,nd | n번째 줄부터 n번째 줄까지 삭제한다. |
1G | 파일의 제일 첫 번째 줄로 이동 | :n | n번째 줄로 이동 |
nG | n번째 줄로 이동 | :wq | 수정한 파일을 디스크에 저장한 후 종료한다. |
x | 커서가 위치한 부분의 글자를 삭제한다. | :x | 수정한 파일을 디스크에 저장한 후 종료한다. |
dd | 커서가 위치한 줄을 삭제한다. | :q! | 수정한 파일을 디스크에 저장하지 않고 종료한다. |
u | 명령어 실행 전으로 되돌린다. |
:%s/old/new/g
- 현재 문서에서 old 문자열을 new 문자열로 모두 바꾸는 명령어이다.
- %는 문서 전체를 대상으로 검색하는 명령어이다.
- s는 치환 명령을 실행하는 명령어이다.
- g는 해당 라인에서 일치하는 모든 문자열을 바꾸라는 명령어이다.
2.10 접근 권한
echo "Hello World" > test.txt
- text.txt를 생성하여 Hello World를 입력한다.
chmod 666 test.txt
- chmod는 파일 또는 디렉터리의 권한을 변경할 때 사용된다.
- 666은 각각 사용자, 그룹, 다른 사용자에게 읽기 및 쓰기 권한을 부여한다.
- 모든 사용자가 파일을 읽고 쓸 수 있다.
useradd user01
useradd user02
su - user01
echo "user01" > user01.txt
- user01과 user02의 계정을 추가한다.
- su -은 새로운 사용자의 환경설정을 적용시켜 다른 사용자로 변경하여 작업할 수 있도록 해주는 명령어이다.
- 따라서 user01로 변경하여 로그인하는 명령어이다.
- user01.txt에 내용을 입력한다.
chmod 704 /home/user01
- user01의 권한을 사용자가 읽기, 쓰기, 실행을 할 수 있고, 다른 사용자가 읽을 수 있게 변경한다.
- 또 다른 터미널을 열어 user02로 로그인을 한다.
- user02로 로그인을 한 상태로 user01.txt의 내용을 읽으면 permission denied 상태가 출력된다.
chmod 701 /home/user01
- user01의 권한을 다른 사용자가 실행을 할 수 있게 변경한다.
- user02에 로그인한 터미널로 이동하여 user01.txt를 읽으면 내용을 출력할 수 있다.
chmod o-r user01.txt
- o-r은 other 권한 중 r(읽기) 권한을 제거하는 의미이다.
chmod o+rw user01.txt # other 권한에 읽기, 쓰기 권한 추가
chmod a=x user01.txt # a는 all. user, group, other을 x(실행)로 권한 변경
chmod a=rw user01.txt # 모든 사용자에 읽기, 쓰기 권한 변경
chmod a+x user01.txt # 모든 사용자에 실행 권한 추가
2.11 파일 경로
cd ~ # home 디렉토리로 이동
cd ~user01 # user01 사용자의 홈 디렉토리로 이동
cd ~root # root 사용자의 홈 디렉토리로 이동
- ~은 현재 사용자의 홈 디렉터리를 의미한다.
cd dirB
ls ~+ # 현재 폴더
ls ~- # 이전 폴더
2.12 파일 이름
cd - # 이전 디렉토리로 이동
ls fi* # fi로 시작하는 파일 및 디렉토리를 나열
ls *A # 끝이 A로 끝나는 모든 파일과 디렉토리 나열
ls f???B # f로 시작하고 B로 끝나는 5자리 파일과 디렉토리 나열
ls dir? # dir로 시작하고 한 글자가 더 있는 디렉토리 나열
ls file[AB] # fileA 또는 fileB 파일 나열
ls dir[AC] # dirA 또는 dirC 디렉토리 나열
ls dir[A-Y] # dirA, dirB, ... , dirY 디렉토리 나열
- '-'는 이전 작업 디렉터리를 의미한다.
'Cloud Solutions Architect' 카테고리의 다른 글
2일차 실무 기초 (2) - CentOS7, Vbox, 가상 시스템 내보내기, 스냅숏, 리눅스 명령어 (0) | 2023.03.15 |
---|---|
2일차(1) - 운영체제. 리눅스. Virtual Box 설치 및 환경 설정 (0) | 2023.03.06 |
1일차 실무 기초 - Infra Structure, 온프레미스(On-Premise), 클라우드 컴퓨팅, Public Cloud 서비스 (0) | 2023.02.26 |