3장은 CentOS 설치하는 과정이기 때문에 생략

 

youtu.be/ap3VgM858-0

 

 

 

terminal 의 프롬프트가 # 면 root 사용자, $ 면 일반 사용자

 

CentOS 의 경우 linux 하나에 여러 가상 콘솔들이 붙어있음.

GUI 를 제공해주는 XWindow 를 포함하여

CLI 를 제공해주는 콘솔까지

Ctrl + Alt + Fn~ Fm 키를 눌러 바꿀 수 있음.

이 n과 m은 CentOS 버전 등에 따라 달라진다고 함

가상 콘솔들을 번호를 붙여 tty1, tty2, ,,, 라고 부르나 봄.

 

위의 Runlevel 에 따라서 종료나 재부팅 등을 할 수 있음.

 

종료하고 싶다면 terminal 에서 init 0 

재부팅하고 싶다면 terminal 에서 init 6

 

주로 사용하는 Runlevel 은 3번 혹은 5번이라고 함.

3번은 Xwindow(GUI) 없이 실행

5번은 Xwindow 와 함께 실행.

2, 4번은 없다고 생각한다고 함(....)

 

/etc/systemd/system/ 위치에 있는 default.target 이 바로 현재 사용중인 Runlevel 을 의미함.

 

RunLevel 3 에서 Xwindow 를 띄우고싶다면 startx 명령어를 실행하면 됨.

 

자주 사용하는 vi 명령어 모음

문자열 치환 기능이 있는 줄 몰랐다...!!

 

 

 

마운트란?

물리적인 장치(DISK, CD, DVD, USB 등) 를 특정 디렉터리에 연결하는 것.

window 는 물리 장치를 drive 로 만들어주지만,

linux 는 내가 직접 물리 장치를 특정 디렉터리에 연결시켜야 한다고 함.

 

mount 명령어를 사용하여 물리적인 장치들을 / 밑에 연결시킬 수 있음.

mount [연결할 장치] [연결할 위치]

 

disk /dev/sdb1 을 /mydisk/ 위치에 mount 하고 싶다면 아래 명령어로 mount 가능하다.

mount /dev/sdb1 /mydisk/

 

cd 를 /media/cd/ 위치에 mount 하고 싶다면 아래 명령어로 mount 가능하다.

mount /dev/chrom /media/cd/

 

여기서 /dev/chrom 은 CD 를 나타냄

 

cd 를 빼고 싶다면 umount 를 하면 된다.

umount /dev/chrom

 

usb 를 /media/usb/ 위치에 mount 하고 싶다면 아래 명령어로 mount 가능하다.

mount /dev/sdb1 /media/usb

 

여기서 sdb1 은 "b번째 드라이브 1번째 파티션" (즉 usb) 이라는 의미

a번째가 하드디스크임.

만약 하드디스크가 2개라서 이미 a, b 가 존재한다면

usb 는 sdc1 이 됨.

만약 하드디스크가 3개라서 이미 a,b,c 가 존재한다면 

usb 는 sdd1 이 됨.

 

usb 를 빼고 싶다면 umount 를 하면 된다.

umount /dev/sdb1

 

mount 정보는 linux 가 부팅되면 사라진다.

fstab 에 등록해야 boot 할 때 자동으로 mount 가 됨.

fstab 에 등록하는 방법은 아래 링크 동영상의 마지막 부분 보면 됨.

youtu.be/XE8VAn1K8LA

 

 

 

 

linux 는 서버용이기 때문에 다중 사용자가 하나의 linux 에 접속하여 사용함.

따라서 root 사용자(superuser)와 일반 사용자 등으로 사용자가 나뉨.

 

/etc/passwd 에 보면 여러 사용자들을 볼 수 있다.

행의 의미는 다음과 같음

사용자 이름 : 암호 : 사용자ID : 사용자가 소속된 그룹ID : 전체 이름(별명) : 홈 디렉터리 : 기본 셸

 

암호가 x 라고 되어있는데, 이건 다른 곳에서 암호를 관리한다는 의미.

비밀번호는 /etc/shadow 에 암호화되어 저장되어있음.

참고로 별명은 없어도 무방.

 

그룹은 /etc/group 에 정의되어 있고 의미는 다음과 같음

그룹명 : 비밀번호 : 그룹ID : 그룹에 속한 사용자명

 

비밀번호는 역시 x 라고 되어있음.

 

change 명령어 : 사용자의 암호를 주기적으로 변경하도록 설정

예) change -m 2 myuser

 

사용자를 관리(삭제, 생성 등)하거나 그룹을 관리할 수 있음.

 

사용자를 새로 생성해주면 생기는 홈 디렉터리는

/etc/skel 내부의 파일들을 복사해주는 것임.

 

 

 

 

 

파일 허가권에 대해 3개씩 끊어서 읽을 수 있음

예를 들어 rw- r-- r-- 라면

앞에서부터 3개씩 "파일의 소유자"(rw-), "그룹"(r--), "그 외 사용자"(r--) 로 파일 허가권이 주어진다.

해석은 다음과 같음

r : read 읽기 권한

w : write 쓰기 권한

x : excute 실행 권한

파일 소유자는 읽고 쓸 수 있고, 그룹은 읽을 수 있고, 그 외 사용자는 읽을 수 있음. 

 

파일의 권한을 바꾸려면

chmod 777 sample.txt

chmod u+x sample.txt (user(소유자)에게 x 권한을 추가해라)

chmod g+w sample.txt (group 에게 w 권한을 추가해라)

chmod o-r sample.txt (other 의 r 권한을 삭제해라)

chmod ugo-w sample.txt (user, group, other 의 w 권한을 삭제해라)

chmod uo+rx sample.txt (user, other 에게 r 과 x 권한을 추가해라)

 

파일의 소유자를 바꾸려면

chown myuser sample.txt

 

파일의 그룹을 바꾸려면

chgrp mygroup sample.txt

 

파일의 소유자와 그룹을 한 번에 바꾸려면

chown myuser.mygroup sample.txt

 

참고로 chown 은 root 사용자만 가능

 

 

사용자 계정을 바꿔서 사용하려면 su - 명령을 사용한다.

예를 들어 myuser 로 계정을 바꾸려면 

su - myuser

혹은

su myuser

 

root 가 su - 명령어를 사용하여 다른 계정으로 바꾸면 비밀번호 없이 접근이 가능하다.

일반 사용자가 su - 명령어를 사용하여 다른 계정으로 바꾸면 비밀번호를 물어본다.

중간에 - 를 넣으면 홈 디렉터리까지 같이 바뀐다.

 

특정 계정의 홈 디렉터리로 바로 이동하는 방법은 다음과 같다.

만약 내 계정이 myuser 라면

~myuser

혹은

~

 

 

 

 

 

https://hoyoung2.tistory.com/51

하드링크는 inode(실제 디스크의 파일을 가리키는 주소같은 거라고 생각) 를 가리킨다.

심볼릭 링크는 inode 를 새로 만들고, 원본 파일을 가리키는 포인터를 디스크에 만든다.

만약 원본 파일이 삭제되거나 해당 위치에서 벗아나게 되면

심볼릭 링크는 포인터의 목적지가 사라지거나 이동했기 때문에 깨지게되지만

하드링크는 원본파일과 상관 없이 유지되어있다.

 

하드링크는 ln [링크대상파일이름] [링크파일이름]

심볼릭링크는 ln -s [링크대상파일이름] [링크파일이름]

명령어로 만들 수 있다.

 

 

 

 

window 의 setup.exe 로 프로그램을 간단하게 설치할 수 있듯이,

Redhat 에서 제공하는 RPM(Redhat Package Manager) 을 이용하면

프로그램 설치를 쉽게 할 수 있음.

 

예를 들어 telegraf 를 설치한다고 해보자. [설치 링크]

다음과 같은 이름의 rpm 을 받을 수 있다.

이름의 의미는 다음과 같다.

x86_64 : 64비트 CPU

i386, i486, ,,, i686 : 32비트 CPU

src : 소스 코드

noarch : 모든 CPU

 

위의 telegraf 는 64비트 CPU 에 설치하는 rpm 인 것이다!

 

rpm 을 설치할 땐 아래 명령어로 설치

rpm -Uvh 패키지파일이름.rpm

 

rpm 을 삭제할 땐 아래 명령어로 삭제

rpm -e 패키지이름

 

해당 rpm 이 이미 설치되어있는지 확인할 땐 아래 명령어로 확인

rpm -qa 패키지이름

 

하지만 rpm 을 직접 사용하지는 않는다고 함.

대신 rpm 의 의존성 문제 등을 대신 다뤄주는 DNF 명령어를 사용한다고 함.

centos 의 경우 기존 7이하 버전에서는 yum 을 사용했지만

yum 을 포장하는 것이 바로 DNF 이므로 앞으로는

DNF 를 사용하자.

 

DNF 를 사용하면 rpm 의 의존성 문제를 완전히 해결.

알아서 파일 저장소를 통해 의존성 패키지 모두 다운받고 설치한다고 함.

 

기본적으로 아래 명령어로 사용 가능. 마치 yum 사용하듯이.

 

설치 : dnf install 패키지이름

rpm 파일 설치 : dnf install rpm파일이름.rpm

업데이트 가능한 목록 보기 : dnf check-update

업데이트 : dnf update 패키지이름

삭제 : dnf remove 패키지이름

정보 확인 : dnf info 패키지이름

 

dnf 는 어디서 패키지들을 다운로드할까?

패키지들을 가리키는 url을 모아둔 곳이 있다. 바로 "/etc/yum.repos.d/" 여기.

이곳에 각종 패키지의 url 들이 저장되어 있어서, 사용자가 yum install -y mysql 하면

mysql url 을 이용해서 바로 다운로드 받을 수 있다.

 

 

dnf install 과정

- install 명령어를 넣음

- /etc/yum.repos.d/ 에서 url 을 확인

- 인터넷을 통해 centos 8 패키지 저장소로 가서 전체 패키지 목록 파일을 요청

- centos 8 패키지 저장소로부터 인터넷을 통해 전체 패키지 목록 파일을 받아온 후

  사용자에게 "네가 요구한 패키지는 이런 것들이 있어. 설치할꺼야?" 라고 물음

- 설치한다고 하면, 다시 centos 8 패키지 저장소로 가서 필요한 패키지 파일들을 요청

- 설치할 패키지 파일들을 다운로드 한 후 설치 시작.

 

 

패키지 그룹을 통해 대량/다수의 패키지들을 설치할 수 있다.

dnf grouplist hidden

명령어로 group list 를 뽑아보고 거기서 내가 설치할 것을

dnf -y groupinstall "패키지그룹명"

이 명령어로 설치하면 됨.

 

 

 

 

 

폴더 내의 여러 파일들을 하나의 tar 파일로 묶을 수 있음.

가령 내가 /home/eyeballs/files/ 내의 모든 파일을 bundle.tar 로 묶고싶다면 아래 명령을 사용

 

tar cvf bundle.tar /home/eyeballs/file/

 

그럼 bundle.tar 파일로 묶인다.

푸는 명령어는

 

tar xvf bundle.tar

 

 

 

 

find 명령어는 다음과 같이 사용할 수 있음.

 

find [경로] [옵션] [조건] [action]

여기서 옵션은

 -name : 파일 이름

 -user : 소유자

 -newer : 전,후 (?)

 -perm : 허가권

 -size : 크기

action 은

 -print : default 로 붙는 action

 -exec : 외부 명령어 실행(아래 예제)

 

아래 예를 들어본다.

/etc 밑에 "*.conf" 를 찾고싶다면

find /etc -name "*.conf"

 

/bin 밑에 10k 보다 크고 100k 보다 작은 크기의 파일들만 찾고싶다면

find /bin -size +10k -size -100k

 

찾은 파일들을 대상으로 어떤 명령어를 실행시키고 싶다면(가령 rm 이라면)

find /home -name "*.gz" -exec rm {} \;

파일 찾기 결과가 { } 내부에 들어간다.

{ } 내부는 rm 의 대상이 되므로 모두 지워진다.

 

 

 

 

 

cron : 주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정

관련된 데몬(서비스)은 "crond",

관련 파일은 "/etc/crontab"

 

crond 가 백그라운드에서 동작하고 있다는 전제 하에,

내가 주기적으로 반복 실행하고 싶은 명령어/스크립트들을 

/etc/cron.hourly (시간별)

/etc/cron.daily (일별)

/etc/cron.weekly (주별)

/etc/cron.monthly (월별)

각각 위와 같은 디렉터리 안에 넣어주면 시간별, 일별, 주별, 월별로 실행함.

 

앞에서부터 총 다섯개의 숫자가 들어가는 contab 실행문을 작성할 수 있다.

 

* * * * *
분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7)
0, 7은 일요일
1은 월요일
2는 화요일
3은 수요일
4는 목요일
5는 금요일
6은 토요일

 

예를 들어서 다음과 같이 설정해두었다고 하자.

01 * * * * root run-parts /etc/cron.hourly

 : 매 01분마다 root 권한으로 /etc/cron.hourly 밑의 모든 스크립트를 실행(결과적으로 한 시간마다 실행)

02 4 * * * root run-parts /etc/cron.daily

 : 매 04시 02분마다 root 권한으로 /etc/cron.daily 밑의 모든 스크립트를 실행(결과적으로 하루마다 실행)
03 4 * * 0 root run-parts /etc/cron.weekly

 : 매 일요일 04시 03분마다 root 권한으로 /etc/cron.weekly 밑의 모든 스크립트를 실행(결과적으로 일주일마다 실행)

42 4 1 * * root run-parts /etc/cron.monthly

 : 매 1일 4시 42분마다 root 권한으로 /etc/cron.monthly 밑의 모든 스크립트를 실행(결과적으로 월마다 실행)

 

그 외에 실행 주기로 정하여 실행하게 할 수 있음.

*/1 * * * * : 1분마다 수행
*/5 * * * * : 5분마다 수행
0 */3 * * * : 3시간마다 수행

 

crontab 의 결과 로그를 저장하는 방법은 다음과 같다.

 

0 1 * * * /home/eye/test.sh > /home/eye/test.out 2>&1

  : 매일 1시 마다 test.sh 를 실행시키되 생산되는 모든 로그들은 test.out 에 저장

0 1 * * * /home/eye/test.sh > /home/eye/test_`date +\%Y\%m\%d\%H\%M\%S`.out 2>&1

  : 매일 1시 마다 test.sh 를 실행시키되 생산되는 모든 로그들은 test_YmdHMS.out 에 저장

 

 

systemctl start crond 로 crontab 을 백그라운드에서 실행할 수 있다.

systemctl status crond 명령어로 crontab 이 백그라운드에서 잘 작동중인지 확인 가능하다.

 

vi /et/crontab 을 열어 다음과 같이 넣으면 된다.

매 15일 03시 01분마다 /etc/cron.monthly 내의 스크립트들을 실행시키도록 적용

/etc/cron.monthly 로 가서 (#!/bin/sh 로 시작하는)스크립트를 만들어서 저장한다.

그럼 끝. 이제 (crond 가 동작하고 있다는 전제 하에) 알아서 주기적으로 실행이 된다.

 

 

 

 

 

cron 처럼 주기적인 반복을 예약하는 기능 말고

한 번만 실행되도록 예약할 수 있다.

at 을 사용하면 됨.

 

다음과 같이 사용한다.

at [시간]

 

예를들면

at 3:00am tomorrow : 내일 새벽 3시에 예약

at 11:00pm January 30 : 1월 30일 오후 11시에 예약

at now + 1hours : 1시간 후 예약

 

위의 명령어를 넣으면 at> 이라는 프롬프트가 뜨고 실행될 명령어들을 넣으면 된다.

다 넣었으면 Ctrl+D 로 끝냄.

 

내가 예약한 목록을 보고 싶다면 at -l 명령어를 사용.

at -l 로 나온 리스트의 가장 앞에는 고유 번호가 붙는데

이 번호를 이용하여 삭제가 가능하다. 예를들어 리스트에 1번 예약을 지우고 싶다면

atrm 1

 

 

 

 

 

Linux 의 호스트 이름은 각 컴퓨터에 지정된 이름

예를 들면 eye, muzse 같은.

 

네트워크 주소란, 같은 네트워크에 속해있는 공통된 주소.

예를 들어 컴퓨터 3대가 192.168.111.3, 192.168.111.4, 192.168.111.5의 ip주소를 갖고있다면

끝자리가 0 인 주소.

네트워크 주소는 192.168.111.0 임.

브로드캐스트 주소는 네트워크 주소에 속해있는 모든 컴퓨터에게 뿌리는 주소.

끝자리가 255 인 주소.

예를 들어 바로 위의 예제에서 브로드캐스트 주소는 192.168.111.255

 

DHCP 서버는 컴퓨터에 자동으로 IP 를 할당해주는 역할을 함.

마치 Docker Container 를 network 에 묶으면 ip 가 자동으로 할당되는 것 처럼.

 

위에 있는 nmtui 명령어가 굉장히 중요한 명령어라고 함.

nmtui 로 설정을 변경한 후에 systemctl restart NetworkManager 명령어로 변경 내용을 시스템에 적용!

 

 

 

네트워크 설정하는 것은 아래 동영상에서 함.

DNS 서버 바꾸고 내 ip 주소 바꾸는 등의 실습을 진행.

 

youtu.be/9XF88RS9VmU?list=PLVsNizTWUw7EJ9z-LW3lv3VC-6HI9I3hN

 

아래 명령어로 dns 서버에 접속하여 ip 를 받아올 수 있다.

 

# nslookup

> server 8.8.8.8

Default server : 8.8.8.8

Address : 8.8.8.8:53

> eyeballs.tistory.com

....

Name : eyeballs.tistory.com

Address : xxx.xxx.xxx.xxx

 

 

 

 

 

more 명령어를 통해 여러 줄로 생성되는 결과를 페이지 단위로 볼 수 있음.

예를 들어

 

cat eyeballs.log | more

 

space 누르면 다음페이지,

q 누르면 끝내기

 

 

 

 

내가 모르는 리눅스 도구들은 다음과 같음.

wc, sort, awk, sed, cut, uniq

이걸 쓸 줄 알면 리눅스 사용하기 편함.

 


wc : word count. 사용자가 지정한 파일의 행, 단어, 문자수를 세는 프로그램

README.md 가 있다.
행의 개수는 wc -l README.md
단어의 개수 wc -w README.md
문자의 개수는 wc -c README.md

cat README.md | wc -l README.md 등으로도 사용 가능
한 번에 다 같이 쓸 수 있음.
다 같이 쓰면 행, 단어, 문자 순서대로 결과가 나옴

각각
l : line
w : word
c : character
를 의미하는 듯 함.



참고 : www.incodom.kr/Linux/%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4/wc

 


sort : 파일을 행 단위로 정렬하는 명령어

아래와 같은 내용의 text 파일이 있다고 하자.

1 2
2 3
3 1
1 2

아래 명령어로 정렬 가능하다.

오름차순 정렬
sort text
1 2
1 2
2 3
3 1

내림차순 정렬
sort -r text
3 1
2 3
1 2
1 2

중복된 값 제거하고 정렬
sort -u text
1 2
2 3
3 1

두번째 값으로 정렬
sort -k 2 text
3 1
1 2
1 2
2 3

참고 : webdir.tistory.com/153

 


cut : 파일의 각 행을 구분자로 자르고, 잘린 요소들을 뽑거나 필터링해줌

data.csv 가 다음과 같다고 하자.
a, 1, https://www.google.com, 2020-09-18
b, 2, https://eyeballs.tistroy.com, 2020-06-25
c, 3, https://eyeballs.blog.me, 2020-10-10

cut 을 사용하여 다음과 같이 index 혹은 범위로 값을 추출해낼 수 있다.
-d 는 구분자, -f 는 index 혹은 범위를 넣으면 된다.

$ cat data.csv | cut -d "," -f 1
a
b
c
$ cat data.csv | cut -d "," -f 2
 1
 2
 3

$ cat data.csv | cut -d "," -f 3
 https://www.google.com
 https://eyeballs.tistroy.com
 https://eyeballs.blog.me



$ cat data.csv | cut -d "," -f 4
2020-09-18
 2020-06-25
 2020-10-10



$ cat data.csv | cut -d "," -f 2-3
 1, https://www.google.com
 2, https://eyeballs.tistroy.com 
 3, https://eyeballs.blog.me



$ cat data.csv | cut -d "," -f 1,4
a, 2020-09-18
b, 2020-06-25
c, 2020-10-10



#아래는 년,월만 뽑아내는 것을 보여줌
$ cat data.csv | cut -d "," -f 4 | cut -d "-" -f 1,2
 2020-09
 2020-06
 2020-10



#아래는 메인 도메인만 뽑아내는 것을 보여줌
$ cat data.csv | cut -d "," -f 3 | cut -d "/" -f 3
www.google.com
eyeballs.tistroy.com
eyeballs.blog.me



참고 : jupiny.com/2017/07/09/linux-command-4-cut-sort-uniq-wc/

 


awk : 다음과 같은 작업들이 가능한다.

  • 텍스트 파일의 전체 내용 출력.
  • 파일의 특정 필드만 출력.
  • 특정 필드에 문자열을 추가해서 출력.
  • 패턴이 포함된 레코드 출력.
  • 특정 필드에 연산 수행 결과 출력.
  • 필드 값 비교에 따라 레코드 출력.

참고 : https://recipes4dev.tistory.com/171


xargx 는 다른 명령어의 출력 결과들을 모아 인자값으로 만들어주어, 또 다른 명령어에서 사용할 수 있도록 만들어준다.

예를 들어보자.

# find /etc -name "*.conf" | xargs ls –l

이름이 *.conf 인 파일의 리스트를 출력하고,
그 출력된 리스트들을 ls -l 의 인자값으로 넘겨준다.
결과적으로 이름이 *.conf 인 파일들을 대상으로 ls -l 명령을 수행하게 해준다.

# cat url-list.txt | xargs wget –c

url-list.txt 의 파일 내용을 출력하고,
그 출력된 결과를 wget -c 의 인자값으로 넘겨준다.
결과적으로 url-list.txt 내의 있는 url 을 대상으로 wget -c 를 통해 다운받게 된다.

뭘 기준으로 파일 내용을 인자값으로 나누는지는 모르겠음... 아마 \n 이지 않을까?

# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

이름이 *.jpg 인 파일들을 찾아 인자값으로 만들고,
그 인자값들을 대상으로 tar -cvzf 명령어를 통해 압축하는 명령어이다.

출처 https://linux.101hacks.com/linux-commands/xargs-command-examples/

 

 

표준 입력 : shell 에서 키보드로 명령을 입력받는 것

표준 출력 : 표준 입력으로 받은 명령의 표준 결과를 모니터로 출력하는 것

오류 출력 : 표준 입력으로 받은 명령의 오류 결과를 출력하는 것(옵션을 통해 모니터 등에서 출력 가능)

 

꺽쇠(>) 를 이용하여 명령의 결과를 표준 출력 외에 다른 곳으로 redirect 가능함.

만약 내가 ls -al 명령어를 사용하면 결과는 표준 출력인 모니터로 나오지만

아래 꺽쇠 명령어를 사용하면 모니터가 아니라 파일로 저장됨

예를 들어

ls -al > list.txt : 명령의 결과를 list.txt 파일에 override 하여 저장

ls -al >> list.txt : 명령의 결과를 list.txt 파일에 append 하여 저장

 

반대의 경우도 있음.

head 나 cat 등의 명령어에 파일(list.txt)의 내용을 넣는 것임

예를 들어

head < list.txt : list.txt 의 첫 열 줄(default)을 표준 출력함

 

사실 head 나 cat 은 < 없이도 사용 가능하잖아

 

꺽쇠 다음에 & 을 사용하면 오류까지 같이 출력함

예를 들어

ls -al >& list.txt : 명령의 결과를 오류까지 포함하여 list.txt 파일에 override 하여 저장

 

 

 

Program : 디스크에 저장된 실행 코드

Process : 프로그램이 램에 올라가서 활성화 된 것

Foreground Process : 화면에 나타나서 사용자와 상호작용하는 process

Background Process : 화면에 나타나지 않고 실행되는 process

Process number : 각 process 가 갖는 고유 번호. kill 을 할 때 이걸 이용함 ps -ef 로 볼 수 있음

작업 번호 : 현재 실행되는 background process 의 순차번호

 

process 는 부모 자식 관계를 갖을 수 있음

예를 들어 os 라는 부모 process 위에 power point 라는 자식 process 가 올라가 있는 격

부모 process 를 kill 하면 자식 process 역시 kill 됨 (os 가 꺼지면 power point 역시 꺼짐)

pstree 명령어를 통해 부모 process와 자식 process의 관계를 tree 형태로 보여준다고 함 

 

 

 

 

/dev/null 이라는 곳은 리눅스의 쓰레기통이라고 생각하면 됨.

yes > /dev/null 명령어는 무한히 출력되는 y 를 쓰레기통에 버리는 것(....)

 

A process를 background 에서 돌리고 싶다면 아래 두 가지 방법으로 실행 가능

 

- 실행되고 있는 도중에 Ctrl+Z 를 누름

그럼 (일단은) stopped 가 되고, bg 명령어를 실행하면

A process 가 background 에서 동작하기 시작함.

 

- 명령어 뒤에 &을 붙이면 됨

예를 들어 run.sh &

 

 

 

 

service : 시스템과 독자적으로 구동되어 제공하는 process

예를 들면 httpd, mysqld, influxd...

데몬(daemon)이라고도 함

 

실행 : systemctl start [서비스이름]

종료 : systemctl stop [서비스이름]

재시작 : systemctl restart [서비스이름]

상시 가동 : systemctl enable [서비스이름]

 

service의 실행 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에

'서비스이름.service' 라는 이름으로 확인 가능.

예를 들어 Cron 서비스는 crond.service 라는 이름의 파일로 존재

 

 

 

 

 

그 이후에 강의는 실전에서 사용하지 않는 응급복구, GRUB2, 커널 컴파일이므로 생략

 

 

 

 

 

 

 

 

 

 

+ Recent posts