histroy
- 지금까지 실행했던 명령어 이력을 보여준다.
histroy -c
- 명령어 이력을 모두 지운다.
alias
- 현재 지정한 단축어가 모두 표시된다.
alias y='exit'
- exit 단축어를 y라고 지정한다.
vi ~/.bashrc
- vi ~/.bashrc에 alias 별칭으로 저장해 사용한다.
.bashrc 는 사용자가 처음 부팅할 때 읽어들이는 파일이며 주로 환경정보 적용이나 alias 등을 현재 환경에 적용하고자 하는 것을 미리 입력해 두면 편리하다. 오타가 있을 경우 정상 로그인이 되지 않을 수 있으므로 조심해야 한다. 편집기로 .bashrc 파일을 열어 alias vi='vim'을 작성하고 저장한다. vi를 vim으로 저장하는 것이다. 이는 리눅스 설정 파일이기에 변경된 .bashrc 를 현재 환경에 적용시켜야 한다. 변경된 .bashrc 를 현재 환경에 다시적용하고자 한다면? su 를 이용하여 재 로그인한다. source .bashrc
unalias
- 특정 단축어를 해제한다.
unalias -a
- 설정한 모든 단축어를 해제한다.
echo "Hello World"
- Hello World 출력
echo yangseunghyun > yang
- yang 파일에 yangseunghyun 저장
echo yangminsoo >> yang
- yang 파일에 있는 내용 다음 줄에 yangminsoo 저장
예) 기존 파일에 yangseunghyun이 저장되어 있가면 다음 줄에 yangminsoo가 저장된다
- 압축 : gzip, zip, bunzip, xz .. (압축률의 차이가 있다. 책에 있는 것등중 압축률이 가장 높은 것은 xz)
tar cvf my.tar /test -> /test 디렉토리 내에 포함되어 있는 모든 파일과 디렉토리를 my.tar 파일로 묶겠다.
- 웹사이트 주소를 통하여 해당 페이지의 코드를 다운로드 하거나 API 연결, 파일 다운로드 등에 활용된다.
curl http://localhost curl -L http://www.naver.com <---- 포트포워딩이 되어 있다면 해당 페이지까지 들어가서 코드의 내용을 확인한 뒤 화면에 출력시켜준다.
curl http://localhost -o "test.html" : 출력결과를 test.html 파일로 만들어준다.
curl 을 이용하여 페이지의 헤더 내용을 포함하여 확인하고 싶다면??[root@websrv 0719]# curl -Li http://www.naver.com -o naverheader.html [root@websrv 0719]# head naverheader.html <-- header 는 상위 10줄 HTTP/1.1 302 Moved Temporarily Server: NWS Content-Type: text/html Location: https://www.naver.com/ Date: Tue, 19 Jul 2022 05:07:18 GMT Connection: close HTTP/1.1 200 OK Server: NWS Content-Type: text/html; charset=UTF-8
shutdown -P +1
- 1분 후에 전원이 꺼진다
poweroff
- 시스템 정지 후 컴퓨터 전원이 자동으로 꺼진다.
init 0
- 시스템 정지 후 컴퓨터 전원이 자동으로 꺼진다.
reboot
- 시스템을 종료한 후 재부팅한다.
- systemctl set-default multi-user.target
- startx - xwindow 가 실행됨
- 처음 부팅할 때 화면에 보여주는 메시지(Message of The Day) -> MOTD
- 파일을 열지 않고 쉘상에서 특정 단어를 변경하는 등의 내용을 작성하면 이를 파일에 반영시킬 수 있다.
- abc.txt 파일내에서 만나게 되는 첫번째 old를 new로 변경한다. 만약 ..new/g' 라고 작성했다면 파일 전체를 old를 new 로 변경한다.
- 만약 변경될 내용을 변수를 이용하여 처리하고 싶다면 ' 대신 " 를 사용하면 된다.
예) sed -i 's/old/new' abc.txt
sed 를 이용하여 test.txt 파일내에 있는 섹션 [database] 아래에 1.1.1.1 이라는 IP 주소를 추가시켜보자. 단, 파일을 열어서는 안된다 [해설] sed -i'' -r -e "/database/a\1.1.1.1/" test.txt sed -i -r -e "/\[database\]/a\5.5.5.5" a.txt
- 명령모드애서 이동하기
1. 방향키 가능 2. 한 행에서 가장 끝으로 이동 -> $, 가장 앞으로 -> ^ 3. 전체 화면에서 첫번째 행으로 이동 -> gg, 마지막 행으로 이동 -> G 4. 10행으로 이동하기 -> 10G
- 입력하기
1. i - 현재 위치에서 입력 2. o - 현재 위치에서 아랫줄 부터 입력
- 행표현
: set nu
- 삭제하기
1. dd - 한 행 삭제하기 2. 2dd - 두 줄 삭제하기
- 복사하기
1. yy - 한줄 복사 2. 2yy - 두줄 복사
- 붙여넣기
p
- 벗어나기
:wq 저장후 종료 :q 종료 (만약 작업한 내용이 있다면 해당 내용을 처리한 뒤 나가야 한다) :q! 저장하지 않고 강제 종료
- 간혹 퍼미션 문제로 wq 를 하더라도 종료가 되지 않는 경우가 있다. 이 경우에는 :wq! 해야 한다.
- 검색 하기
/검색할단어
두번째 결과로 이동 n 직전 결과로 이동 N
- ip addr list
- ip addr show
- centOS7 : 211.183.3.201 (server)
- centOS8 : 211.183.3.111 (client)
ip route
- 리눅스의 라우팅 테이블
[root@srv7 ~]# cat <<EOF >>/etc/hosts 211.183.3.201 centos7 211.183.3.111 centos8 EOF [root@srv7 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 211.183.3.1 myhome 211.183.3.201 centos7 211.183.3.111 centos8
- DNS 서버에게 query하여 지정한 도메인의 IP주소를 확인할 수 있다.
- 참고로 일반적인 DNS 서버는 UDP/53에서 서비스한다. (TCP/53에서도 서비스한다.)
- 일반적으로 도메인에 대한 IP 정보는 TYPE A로 보인다.
-> www.test.com A 1.1.1.1
- 여러 서버가 하나의 도메인
- ifdown
- ifup
- 인터페이스 비활성화/활성화
- 활성화 될때 인터페이스의 구성 파일을 읽고 실행된다.
- 따라서 IP 주소등을 병경했을때에는 systemctl restart network를 이용하거나 특정 인터페이스를 down > up 하여 활성화 하면 변경된 사항을 적용시킬 수 있다.
서비스 실행시 오류가 발생한다면? systemctl status sshd 그리고 journalctl -xe 를 통해 확인이 가능하다.
[ec2-user@srv7 ~]$ ssh-keygen -q -f ~/.ssh/0720.pem -N "" [ec2-user@srv7 ~]$ ld ld: no input files [ec2-user@srv7 ~]$ ls [ec2-user@srv7 ~]$ ls -a . .. .bash_logout .bash_profile .bashrc .cache .config .mozilla .ssh [ec2-user@srv7 ~]$ ls .ssh 0720.pem 0720.pem.pub [개인키] [공개키] [ec2-user@srv7 ~]$ cd .ssh [ec2-user@srv7 .ssh]$ cat 0720.pem.pub > authorized_keys [ec2-user@srv7 .ssh]$ ll
- cat 0720.pem 열어 내용을 복사한 뒤, 윈도우에서 노트패스를 열고 동인한 파일명으로 저장해 둔다.
[root@srv7 ~]# vim /etc/ssh/sshd_config
- CentOS7 의 ~/.ssh/testkey.pem.pub 파일외에 여러개의 퍼블릭키가 있을 수 있음.
- 이중에서 인증에 사용하기위한 public key 는 .ssh/authorized_keys 에 등록되어 있어야 한다.
- 현재상태에서 CentOS7 에서 .ssh/testkey.pem.pub 파일을 다음과 같이 변경또는 복사
[root@srv7 ~]# cd .ssh [root@srv7 ~]# cp testkey.pem.pub authorized_keys
- 이후 CentOS8 에서 ssh -i testkey.pem centos7
[root@srv7 ~]# cd ~/.ssh [root@srv7 ~]# cp testkey.pem.pub authorized_keys [root@srv7 ~]# systemctl restart sshd
[root@srv8 ~]# ssh -i testkey.pem centos7
- 실제 환경이라면 관리 서버에서 key-pair를 생성한다.
- 관리자는 private-key를 갖는다. public-key는 내가 관리하고자 하는 다수의 서버에 등록 시킨다.
- 원격지에 있는 서버에 public-key를 등록하기 위해서는 ssh-copy-id를 이용한다.
- 관리용 서버의 .ssh/authorized_keys에 등록시킨다.
- 우리는 인스턴스 템플릿 이미지에 미리 public-key 를 넣어둘 예정이다.
[root@srv8 ~]# ssh -i testkey.pem centos7 ifconfig
- user1을 관리자 등급으로 사용하기
- root는 super user이고 user1은 normal user이다.
- 유저 생성
[root@srv7 ~]# useradd user10 [root@srv7 ~]# passwd user10 Changing password for user user10. New password: BAD PASSWORD: The password is shorter than 7 characters Retype new password: passwd: all authentication tokens updated successfully. [root@srv7 ~]# useradd user20 [root@srv7 ~]# echo 'user20:user20' | chpasswd [root@srv7 ~]# useradd user30 && echo 'user30:user30' | chpasswd [root@srv7 ~]# cat /etc/passwd | grep user30 user30:x:1003:1003::/home/user30:/bin/bash
- 일반 사용자는 systemctl restart firewalld와 같은 시스템에 대한 제어권한이 부여되어 있지 않다.
- 이를 일시적으로 root의 권한을 얻어서 사용하고자 한다면 sudo를 이용할 수 있다.
- 현재 user1은 가능하나 user30은 안된다.
- 이유는 아래 설정을 해주어야한다.
[root@srv7 ~]# vim /etc/sudoers [root@srv7 ~]# usermod -aG wheel user30 [root@srv7 ~]# su user30 [user30@srv7 root]$ sudo systemctl restart firewalld