2022-09-01

강아람·2022년 9월 1일
0

Kakao Cloud School

목록 보기
21/30
post-thumbnail

셸(Shell)

  • 명령어 해석기 기능
  • 프로그래밍 기능
  • 사용자 환경 설정 기능

Shellscript

  • 반복적인 작업의 편의성 제공 ▶ 업무 자동화에 도움
  • 시각적 작업의 불편함 ▶ Python으로 변경 (시스템 모듈을 통한 정보 수집으로 시각화 가능)


현재 세션 전체에 덮어쓰기 방지

[root@server1 LABs]# set -o noclobber
[root@server1 LABs]# set +o noclobber

특정 파일에 대한 쓰기

  • 금지
[root@server1 LABs]# chattr +i time.sh
  • 금지 해제
[root@server1 LABs]# chattr -i time.sh

프로세스

시스템에 존재하는 모든 프로세스

ps -ef

'ssh'를 포함하는 프로세스

ps -f | grep ssh

alias

단축 명령어 만들기

alias pssh='ps -ef | grep ssh'

세션 레벨

해당 세션만 사용 가능, 해당 세션이 유지되는 동안만 사용

[root@server1 LABs]# alias pssh='ps -ef | grep ssh'

사용자 레벨

해당 사용자 설정이 영구적으로 적용됨

[root@server1 LABs]# cd
[root@server1 ~]# pwd
/root
[root@server1 ~]# vi .bashrc

> bashrc 내에
alias pssh='ps -ef | grep ssh'

[root@server1 ~]# . .bashrc

시스템 레벨

시스템 전역 영구 설정 ▶ 모든 사용자에게 적용됨

[root@server1 ~]# vi /etc/bashrc

> bashrc 내에
alias pssh='ps -ef | grep ssh'

[root@server1 ~]# source /etc/bashrc

경로 만들기

[root@server1 LABs]# mkdir -p linux1/linux2/linux3/linux4/linux5

Alias는 인자를 받지 못한다!

http://192.168.56.101/

  • 서버에서 접속 가능
  • Chrome(외부)에서는 접속 불가능

Shellscript를 활용해야 한다.


history

  • 이전 사용 기록
  • 세션 버퍼에 우선 기록하고 세션 종료 시 .bash_history에 기록된다. (1000개까지 저장)

! : 바로 직전에 수행한 명령 재실행
!번호 : 히스토리에서 해당 번호의 명령 재실행
!문자열 : 히스토리에서 해당 문자열로 시작하는 마지막 명령을 재실행

propmt

[root@server1 ~]#

[] 사용자 정의
root 접속 사용자 ▶ \u
@ 사용자 정의
server1 호스트명 ▶ \h
~ 현재 경로 (마지막 경로 / 전체 경로) ▶ \W
\# 사용자 타입 - #(root), $(일반 사용자) ▶ $


환경 설정 파일

시스템 환경 설정 파일

  • /etc/profile : 시스템 공통으로 적용되는 환경 변수 설정 (환경 설정, 환경 변수, ...)
  • /etc/bashrc: 시스템 공통으로 적용되는 함수와 alias를 설정 (alias, function, ...)

사용자 환경 설정 파일

숨겨진 파일이기 때문에 파일 앞에 .을 넣어 사용해야 한다.

설정 후 적용

source
  • source .bashrc
  • source .profile




📚 Linux 서버 운용에 필요한 명령어

📖 Directory

파일 및 디렉터리들의 '주소'를 저장한 '파일'

/u01/app/oracle/product/12.2.0/db_1/bin/sqlplus 경로를 열기 위해 열어야 하는 파일 개수

9개

최상위 디렉토리까지 열어야 하기 때문

i/o의 주체: block
block을 주소화 한 것: inode


📖 파일의 종류


일반 파일 (Regular file)

데이터를 저장하는데 주로 사용

  • text file: vi 편집이 가능한 파일 형태
  • binary file: s/w로 생성한 파일 형태 ▶ vi 편집기로 수정하면 깨지기(해당 s/w가 읽지 못함) 때문에 해당 s/w로 수정해야 한다.

디렉터리(Directory)

  • linux에서는 디렉터리도 파일로 취급
  • 디렉터리 파일에는 해당 디렉터리에 저장된 파일이나 하위 디렉터리에 대한 주소(inode) 정보 저장

링크 파일

원본 파일을 대신하여 다른 이름으로 파일명을 지정한 것

[root@server1 LABs]# useradd jeff
[root@server1 LABs]# adduser scott
[root@server1 LABs]# which useradd
/usr/sbin/useradd
[root@server1 LABs]# which adduser
/usr/sbin/adduser
[root@server1 LABs]# ls -l /usr/sbin/useradd
-rwxr-xr-x. 1 root root 137616 Aug  9  2019 /usr/sbin/useradd
[root@server1 LABs]# ls -l /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 Aug 31 14:24 /usr/sbin/adduser -> useradd   <<< 링크 파일

장치 파일

Linux에서는 하드 디스크나 키보드 같은 각종 장치도 파일로 취급


📖 디렉터리 계층 구조

root file system

  • 하위 디렉터리(서브 디렉터리): 디렉터리 아래에 있는 디렉터리
  • 상위 디렉터리(부모 디렉터리): '..'으로 표시
  • 루트 디렉터리를 제외한 모든 디렉터리에는 부모 디렉터리가 있음

작업 디렉터리

  • 현재 사용 중인 디렉터리
  • '.' 기호로 표시
  • 현재 디렉터리의 위치는 pwd 명령으로 확인

홈 디렉터리

  • 각 사용자에게 할당된 디렉터리로 처음 사용자 계정을 만들 때 지정
  • 사용자는 자신의 홈 디렉터리 아래에 파일이나 서브 디렉터리를 생성하며 작업 가능
  • 홈 디렉터리는 '~' 기호로 표시



디렉터리와 기능

dev: 장치 파일이 담긴 디렉터리
home: 사용자 홈 디렉터리가 생성되는 디렉터리
media: 시디롬이나 USB 같은 외부장치 연결하는 디렉터리
opt: 추가 패키지가 설치되는 디렉터리
root: root 계정의 홈 디렉터리
sys: Linux 커널과 관련된 파일이 있는 디렉터리
user: 기본 실행 파일과 라이브러리 파일, 헤더파일 등
boot: 부팅에 필요한 커널 파일
etc: Linux 설정을 위한 각종 파일
lost+found: 파일 시스템에 문제가 발생해 복구할 경우, 문제가 되는 파일이 저장되는 디렉터리
mnt: 파일 시스템을 임시로 마운팅하는 디렉터리
proc: 프로세스 정보 등 커널 관련 정보가 저장되는 디렉터리
run: 실행 중인 서비스와 관련된 파일 저장
srv: FTP나 Web 등 시스템에서 제공하는 서비스의 데이터 저장
tmp: 시스템 사용 중에 발생하는 임시 데이터 저장, 재부팅하면 사라짐
var: 시스템 운영 중에 발생하는 데이터나 로그 등이 저장되는 디렉터리

✔ 프로세스와 쓰레드의 차이

📖 경로명

파일 시스템에서 디렉터리 계층 구조에 있는 특정 파일이나 디렉터리의 위치 표시

  • 경로명에서 각 경로를 구분하는 구분자로 슬래시(/)를 사용
  • 경로명에서 가장 앞에 있는 /는 루트 디렉터리를 뜻하지만 경로명 중간에 있는 /는 구분자

절대 경로명

  • 항상 루트(/) 디렉터리부터 시작
  • 반드시 /로 시작한다.
  • / 디렉터리부터 시작하여 특정 파일이나 디렉터리의 위치까지 이동하며 거치는 모든 중간 디렉터리의 이름을 표시
  • 특정 위치를 가리키는 절대 경로명은 항상 동일

상대 경로명

  • 현재 디렉터리를 기준으로 시작
  • / 이외의 문자로 시작
  • 현재 디렉터리를 기준으로 서브 디렉터리로 내려가면 그냥 서브 디렉터리의 이름을 추가
  • 현재 디렉터리를 기준으로 상위 디렉터리로 가려면 ..을 추가
  • 상대 경로명은 현재 디렉터리가 어디냐에 따라 달라짐

📖 Unix file system Layout

  • 데이터 블록: Disk(물리적)
  • i-node: 파일 이름(논리적)

현재 디렉터리 확인하기

pwd
  • 기능: 현재 위치 확인 (현재 디렉터리 절대 경로 출력)
    shell 상에서는 echo $PWD

디렉터리 이동하기

cd
  • 기능: 현재 디렉터리 변경 (change dir)

디렉터리 내용 보기

ls

옵션

  • -a: 숨김 파일을 포함하여 모든 파일 목록 출력
  • -d
  • -i: 첫 번째 행에 inode 번호 출력
  • -l: 파일의 상세 정보 출력
  • -A
  • -F
  • -L
  • -R: 하위 디렉터리 목록까지 출력
  • -t:
  • -h:

디렉터리 만들기

mkdir
  • 기능: 디렉터리 생성
  • 옵션: -p 하위 디렉터리를 계층적으로 생성할 때 중간 디렉터리가 없으면 생성하면서 전체 디렉터리를 생성

디렉터리 삭제하기

rmdir
  • 기능: 디렉터리 삭제
  • 옵션: -p 지정한 디렉터리를 삭제한 뒤, 그 디렉터리의 부모 디렉터리가 빈 디렉터리일 경우 부모 디렉터리도 자동으로 삭제

파일 내용 연속 출력하기

  • 텍스트 파일 내용 확인
cat
cat > kubernetes.txt (파일을 생성해 연다. `>`: redirection)
container
pod
replicaset
deployment
ctrl + d (저장)
more

: 매우 긴 text의 경우에는 more 사용하여 페이징



apache 서버가 켜져있는지 확인하는 방법

apache, nginx의 용도: 웹 서버, 웹 서비스, Proxy(전달 -> 로드 밸런싱)
1. [root@server1 LABs]# ps -ef | grep http
2. [root@server1 LABs]# systemctl status httpd.service
3. [root@server1 LABs]# netstat -nlp | grep 80

파일 다루기

파일(디렉터리) 복사하기

cp
  • 기능: 파일이나 디렉터리를 복사한다.
  • 옵션
    • -i: 대화식 복사 방법으로 파일명2가 이미 존재할 경우 덮어쓸 것인지 물어본다.
    • -r: 디렉터리를 복사할 때 지정

cp file1 file2
cp f1 f2 f3 dir1
cp -r dir1 dir2

Addin) 원격 복사: scp, rcp (다른 서버에 복사)

scp

실습

[root@server1 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.101  server1 server1.kakao.com
192.168.56.102  server2 server2.kakao.com

파일 이동하기 (rename)

mv
  • 기능: 파일을 이동한다.
  • 옵션: -i 파일명2/디렉터리명2가 존재하면 덮어쓸 것인지 물어본다.

mv file1 file2

파일 삭제하기

rm
  • 기능: 파일을 삭제한다.
  • 옵션:
    • -i 대화식으로 지정한 파일을 정말 삭제할 것인지 확인
    • -r 디렉터리를 삭제할 때 지정
    • -rf 강제 삭제

rm file
rm -r dir

리눅스 파일의 구성

  • 파일 = 파일명 + inode + 데이터 블록

하드 링크 만들기 : ln

  • 기능: 파일 링크 생성
  • 옵션 -s: 심벌릭 링크 파일 생성
[root@server1 LABs]# mkdir link_dir && cd $_
[root@server1 link_dir]# touch file1 file2
[root@server1 link_dir]# mkdir dir1 dir2
[root@server1 link_dir]# ls
dir1  dir2  file1  file2
[root@server1 link_dir]# ln -s file1 file1_s
[root@server1 link_dir]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Sep  1 16:37 dir1
drwxr-xr-x. 2 root root 6 Sep  1 16:37 dir2
-rw-r--r--. 1 root root 0 Sep  1 16:37 file1
lrwxrwxrwx. 1 root root 5 Sep  1 16:37 file1_s -> file1
-rw-r--r--. 1 root root 0 Sep  1 16:37 file2
[root@server1 link_dir]# ln file2 file2_h
[root@server1 link_dir]# ls
dir1  dir2  file1  file1_s  file2  file2_h
[root@server1 link_dir]# rm -rf file1 file2
[root@server1 link_dir]# ls -li
total 0
33633216 drwxr-xr-x. 2 root root 6 Sep  1 16:37 dir1
70986604 drwxr-xr-x. 2 root root 6 Sep  1 16:37 dir2
 3068471 lrwxrwxrwx. 1 root root 5 Sep  1 16:37 file1_s -> file1
 3068470 -rw-r--r--. 1 root root 0 Sep  1 16:37 file2_h

0개의 댓글