[네이버클라우드캠프] - 5일차 ( 프로세스와 커널)

holy one·2023년 4월 28일
0
  • 5일차 부터는 RockyLInux가 아닌 ubuntu 환경으로 전환한다.

프로세스 관리

  • Linux 시스템은 Multi User Multi Tasking System으로 여러사람이 동시에 여러가지 작업을 할 수 있는 System으로 여러 작업이 Process(task)를 할수있다.
  • PID : proces id의 축약어, 프로세스 식별 고유번호
1. 전체 프로세스 정보
root@il7:~# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 04:08 ?        00:00:00 /sbin/init
root           2       0  0 04:08 ?        00:00:00 [kthreadd]
root           3       2  0 04:08 ?        00:00:00 [rcu_gp]
root           4       2  0 04:08 ?        00:00:00 [rcu_par_gp]
root           5       2  0 04:08 ?        00:00:00 [slub_flushwq]
root           6       2  0 04:08 ?        00:00:00 [netns]
root           8       2  0 04:08 ?        00:00:00 [kworker/0:0H-events_

2. bash가 실행중인지 검색
root@il7:~# ps -ef | grep bash
j            964     766  0 04:12 tty1     00:00:00 -bash
root         971     970  0 04:12 pts/0    00:00:00 -bash
j            999     998  0 04:12 pts/1    00:00:00 -bash
root        1006    1005  0 04:12 pts/2    00:00:00 -bash
root        1052    1006  0 05:57 pts/2    00:00:00 grep --color=auto bash

3. top = Table of Process
root@il7:~# top
top - 05:55:22 up  1:46,  4 users,  load average: 0.34, 0.31, 0.29
Tasks: 119 total,   1 running, 118 sleeping,   0 stopped,   0 zombie ★ (부모 process와 자식 process간 trouble이 발생했음을 뜻)
%Cpu(s):  0.3 us,  0.2 sy,  0.0 ni, 99.0 id,  0.2 wa,  0.0 hi,  0.3 si,  0.0 st
MiB Mem :   1975.8 total,   1003.9 free,    600.8 used,    371.1 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1220.9 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    835 mysql     20   0 1791560 393144  35380 S   1.0  19.4   0:35.12 mysqld
     17 root      20   0       0      0      0 I   0.3   0.0   0:02.26 kworker+
     ,,,

4. pstree = Process Tree = 모든 process 부모 process 시스템의 정보 출력
root@il7:~# pstree -pn						-pn : 정렬 옵션
systemd(1)─┬─systemd-journal(358)
           ├─multipathd(402)─┬─{multipathd}(406)
           │                 ├─{multipathd}(407)
           │                 ├─{multipathd}(408)
           │                 ├─{multipathd}(409)
           │                 ├─{multipathd}(410)
           │                 └─{multipathd}(411)
           ├─systemd-udevd(405)
           ├─systemd-timesyn(523)───{systemd-timesyn}(530)
           ├─systemd-network(591)
           ├─systemd-resolve(593)
           ├─dbus-daemon(606)
           ├─networkd-dispat(612)
           ├─systemd-logind(631)
           ├─java(652)─┬─{java}(789)
           │           ├─{java}(799)
           │           ├─{java}(800)
           │        
           │           ├─{java}(919)
           │           └─{java}(920)
           ├─sshd(657)───sshd(978)───sshd(998)───bash(999)───sudo(1004)───sudo(+
           ├─apache2(679)─┬─apache2(680)─┬─{apache2}(703)
           │              │              ├─{apache2}(708)
           │              │              ├─{apache2}(710)
           │              │              ,,,
           │              │              ├─{apache2}(749)
           │              │              └─{apache2}(750)
           │              └─apache2(681)─┬─{apache2}(698)
           │                             ├─{apache2}(700)
           │                             ├─{apache2}(701)
           │                             ,,,
           │                             ├─{apache2}(739)
           │                             ├─{apache2}(741)
           │                             └─{apache2}(743)
           ├─login(766)───bash(964)───sudo(969)───sudo(970)───bash(971)
           ├─unattended-upgr(778)───{unattended-upgr}(839)
           ├─mysqld(835)─┬─{mysqld}(854)
           │             ├─{mysqld}(855)
           │             ,,,
           │             ├─{mysqld}(900)
           │             └─{mysqld}(902)
           ├─sendmail-mta(924)
           └─systemd(957)───(sd-pam)(958)

    
root@il7:~# jobs			- 백그라운드 작업 
[1]+  Stopped                 top
root@il7:~# jobs -l			-l : 작업 list detail 출력
[1]+  1045 Stopped (signal)        top

root@nc7:~# nl /etc/shells		- 변경 가능한 shell 목록 출력
     1  # /etc/shells: valid login shells
     2  /bin/sh
     3  /bin/bash
     4  /usr/bin/bash
     5  /bin/rbash
     6  /usr/bin/rbash
     7  /usr/bin/sh
     8  /bin/dash
     9  /usr/bin/dash
    10  /bin/ksh93
    11  /usr/bin/ksh93
    12  /bin/rksh93
    13  /usr/bin/rksh93

쉘 종류 (출처 : https://www.leafcats.com/222)

  • BASH (Bourne-Again Shell) [/bin/bash] : 일반적으로 가장 흔하게 사용되는 쉘이다. sh 본쉘과 호환되기 때문에 대부분 sh와 bash에서 모두 작동된다.
  • CSH (C Shell) [/bin/sh] : C 언어와 유사한 문법을 가지고 있다. 유닉스의 기본 쉘이다.
  • TCSH [/bin/tcsh] : 일반적인 C 쉘이며 사용자 중심이고 속도가 빠르다.

ksh (bin/ksh)

  • Korn Shell의 축약어, bash와 유사한 기능을 제공하며, sh(Bourne Shell)에서 기능을 확장, 초심자를 위해 표준 환경이 적용되어 있는 Bourne쉘의 슈퍼셋이다.

ksh 특징

  1. 명령 줄 편집 기능의 확장
  2. 다양한 조건 테스트 및 수학 연산 기능
  3. 배열 및 연관 배열 지원
  4. 환경 변수 및 로케일 관리 기능
  5. 셸 함수 및 별칭 지원
  6. 작업 관리 및 프로세스 제어 기능
root@nc7:~# ai ksh			- ksh 쉘 설치
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  ksh93u+m
Suggested packages:
  binfmt-support
  ,,,

커널의 이해

  • Linux 부팅 순서
    power on > ROM-BIOS > 부트 메니저(GRUB) > 커널로드 > 파일시스템 > 파일 시스템 마운트 > 시스템 초기화 (init, systemd) > 로그인

  • 부팅 메니저

root@il7:/boot# nl /etc/default/grub
=>
     # For full documentation of the options in this file, see:


root@il7:/boot# nl /boot/grub/grub.cfg 
=> 
	# DO NOT EDIT THIS FILE
    # It is automatically generated by grub-mkconfig using templates
    # from /etc/grub.d and settings from /etc/default/grub
  • 부팅시 파일 실행순서

    0 . poweroff.target
    1 . rescue.target -single user mode
    2 . multi-user.target - Network service x
    3 . multi-user.target - 정상적 사용
    4 . Not used = 사용 x = 따로 정의해야함
    5 . graphical.target - GUI
    6 . reboot.target - 시스템 재부팅

  • root pw 분실 시 복구방법
    init 6 > shift + ESC > e > Edit모드 >

파일 시스템 관리

  • ubuntu apt 명령
명령설명get 명령
apt list패키지 목록dpkg -l
apt list --installed패키지를 설치
apt show패키지 상세 정보apt-cache show
apt remove패키지 삭제apt-get remove
apt purge패키지와 관련 설정 파일 일괄 제거apt-get purge
apt update사용 가능한 패키지의 목록 업데이트apt-get update
apt upgrade패키지 설치/업그레이드를 통해 시스템 업그레이드apt-get upgrade
apt autoremove불필요한 패키지 자동 제거apt-get autoremove
apt full-upgrade가능한 모든 패키지 업그레이드apt-get dist-upgrade
apt search프로그램 검색apt-get search
apt edit-sources소스 정보 파일 편집
다운 실행apt-get download+ 패키지 명
  • 프로그램 설치/삭제
  1. 소스를 다운받아 직접 local에서 컴파일 하여 설치 방법
  2. 컴파일 된 binary 압축파일을 다운받아 바로 사용 방법
  3. 다운받아 직접 설치하는 방법
  4. apt , apt-get 이용한 자동설치 방법
  • 파일 시스템 종류
이름설명
FAT32디지털 카메라 등에 장착되는 대부분의 메모리 카드와 수많은 컴퓨터 시스템에 널리 쓰이는 컴퓨터 파일 시스템 구조
NTFS윈도우 NT 계열 운영체제의 파일 시스템
ISO 9660CD rom 형식과 CD rom에서 파일을 표현하는 방법에 대해 ISO(국제 표준화 기구) DPTJ가 정한 표준 규격
nfs(★)Linux network file-system, 네트워크 파일 체계. 규약을 사용하면 통신망을 통해 저장된 컴퓨터에서 다른 컴퓨터의 디스크를 간단한 방법으로 접근
ext4(★)Linux가 현재 기본으로 사용하는 file-system, ext2,ext3에서 발전
SWAP부족한 Memory 보충을 위한 file-system, 보통 실제 메모리의 2배 설정
저널링log 기록하여 정확성 체크
  • mount : 물리적으로 존재하는 장치를 논리적인 dirtory에 연결을 의미. 특정장치를 사용하기 위해 메모리 할당은 특징
root@il7:/# fdisk -l			- 마운트 정보 확인
Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Disk model: VBOX HARDDISK 				★ ( RockyLinux에선 VBoxLinuxAdditions.run 실행파일을 켠 이유)
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 75875877-E953-4D00-9FCF-5CC253151856

Device        Start      End  Sectors Size Type
/dev/sda1      2048     4095     2048   1M BIOS boot
/dev/sda2      4096  2101247  2097152   1G Linux filesystem
/dev/sda3   2101248  6295551  4194304   2G Linux swap
/dev/sda4   6295552 31461375 25165824  12G Linux filesystem
/dev/sda5  31461376 41947135 10485760   5G Linux filesystem
/dev/sda6  41947136 62912511 20965376  10G Linux filesystem

  • 윈도우와 mount 실습
root@il7:~# df -h					 				- 디스크에 마운트 확인
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           198M  760K  197M   1% /run
/dev/sda4        12G  4.5G  6.7G  41% /
tmpfs           988M     0  988M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda2       974M  130M  777M  15% /boot
/dev/sda6       9.8G   24K  9.3G   1% /data
/dev/sda5       4.9G  136K  4.6G   1% /home
tmpfs           198M  4.0K  198M   1% /run/user/1000

root@il7:~# mount -t vboxsf			 				-  VirtualBox의 공유 폴더(file sharing) 기능을 위한 가상 파일 시스템과 mount 하는 작업
root@il7:~# mount -t vboxsf win /yes 

=
mount [options] <source> | [--target] <directory>
mount -t 		vboxsf 		  win    	/yes 
		(마운트 드라이브형식)   (window파일)  (Linux 파일)

root@il7:/# df -h	
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           198M  760K  197M   1% /run
/dev/sda4        12G  4.5G  6.7G  41% /
tmpfs           988M     0  988M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda2       974M  130M  777M  15% /boot
/dev/sda6       9.8G   24K  9.3G   1% /data
/dev/sda5       4.9G  136K  4.6G   1% /home
tmpfs           198M  4.0K  198M   1% /run/user/1000
win             932G  132M  932G   1% /yes			- 마운트 성공


root@il7:~# cd /yes/								- 경로 변경
root@il7:/yes# ls									- 정상적인 마운팅이 완료
' 드디어 되어따'   test.txt   winwin.txt

  • booting 파일 관리
vi /etc/fstab

12 /dev/disk/by-uuid/bb54bda0-2f6e-4bda-9d6a-cf6a2cf52c96 	/home 			ext4 	defaults,usrquota 		0 		1
    <file system> 										<mount point>   	<type>  		<options>    <dump>  <pass>
Option의미
defaultsrw + auto(자동 마운팅) + nouser(일반계정 마운트x) = 계정의 용량 제한할때 사용
dump (백업을 수행)1 : dump on! / 0 : dump off!
fsck1,2 : 파일 시스템 검사와 복구를 수행! (1,2는 우선순위) / 0: 검사 복구 수행 x
> fsck는 파일 시스템을 검사하는 동안 시스템의 부하를 줄이기 위해 파일 시스템을 읽기 전용 모드로 마운트하고 검사를 수행. 따라서 파일 시스템을 검사하려면 해당 파일 시스템을 마운트 해제한 후 fsck를 실행요함.
tmpfs하나 이상의 프로세스 영역에 접근할 수 있도록 공유 메모리 지원
UUIDUniversioal Unique IDentifier : 범용 고유 식별자 장치나 구성 설정에 할당되는 고유 값
profile
☁️ 좋아요!

0개의 댓글