리눅스 기본 명령어 정리2

양승현·2022년 8월 3일
0

linux

목록 보기
18/20

셸과 셸 스크립트 다루기

history (명령어 이력 일괄 표시)

histroy

  • 지금까지 실행했던 명령어 이력을 보여준다.

histroy -c

  • 명령어 이력을 모두 지운다.

alias (명령어에 단축어 지정)

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 (변숫값 표시하기)

echo "Hello World"

  • Hello World 출력

echo yangseunghyun > yang

  • yang 파일에 yangseunghyun 저장

echo yangminsoo >> yang

  • yang 파일에 있는 내용 다음 줄에 yangminsoo 저장

    예) 기존 파일에 yangseunghyun이 저장되어 있가면 다음 줄에 yangminsoo가 저장된다

tar (파일 묶기)

  • 압축 : gzip, zip, bunzip, xz .. (압축률의 차이가 있다. 책에 있는 것등중 압축률이 가장 높은 것은 xz)
tar cvf my.tar /test 
-> /test 디렉토리 내에 포함되어 있는 모든 파일과 디렉토리를 my.tar 파일로 묶겠다.

curl (코드 다운, API 연결, 파일 다운에 활용)

  • 웹사이트 주소를 통하여 해당 페이지의 코드를 다운로드 하거나 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

sed (행단위 편집기)

  • 파일을 열지 않고 쉘상에서 특정 단어를 변경하는 등의 내용을 작성하면 이를 파일에 반영시킬 수 있다.
  • 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 

vi(m) vi improved (화면단위 편집기)

  • 명령모드애서 이동하기
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 확인

  • ip addr list
  • ip addr show
  • centOS7 : 211.183.3.201 (server)
  • centOS8 : 211.183.3.111 (client)

ip route

  • 리눅스의 라우팅 테이블

netstat -nr

/etc/hosts (파일 등록하기)

[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

nslookup

  • DNS 서버에게 query하여 지정한 도메인의 IP주소를 확인할 수 있다.
  • 참고로 일반적인 DNS 서버는 UDP/53에서 서비스한다. (TCP/53에서도 서비스한다.)
  • 일반적으로 도메인에 대한 IP 정보는 TYPE A로 보인다.
-> www.test.com A 1.1.1.1
  • 여러 서버가 하나의 도메인

ifdown/ifup

  • ifdown
  • ifup
  • 인터페이스 비활성화/활성화
  • 활성화 될때 인터페이스의 구성 파일을 읽고 실행된다.
  • 따라서 IP 주소등을 병경했을때에는 systemctl restart network를 이용하거나 특정 인터페이스를 down > up 하여 활성화 하면 변경된 사항을 적용시킬 수 있다.
서비스 실행시 오류가 발생한다면?
systemctl status sshd 그리고 journalctl -xe 를 통해 확인이 가능하다.

key-pair 만들기

[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 열어 내용을 복사한 뒤, 윈도우에서 노트패스를 열고 동인한 파일명으로 저장해 둔다.

.pem.pub 퍼블릭 키 .ssh/authorized_keys에 등록하기

[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이다.

useradd, passwd

  • 유저 생성
[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

0개의 댓글