728x90
반응형
SMALL

*이기적 영진닷컴 Youtube Link - https://www.youtube.com/watch?v=8FQ1oIzO9Z8&list=PL6i7rGeEmTvp_MYm0zuiFe7COrM3endfu&index=19

 

소스 파일을 다운 받아서 프로그램을 설치하는 방법

소스 파일들이 압축되어 있거나 묶여있는 경우가 있다.

압축된 파일을 해제한 후에 설치 작업이 진행.

압축 파일의 종류 등을 체크해야 한다.

압축 내용 확인.

아카이브는 파일이나 디렉토리를 하나로 묶는 것을 아카이브라고 한다.

전송하려는 파일 개수가 많을 경우 또는 백업 용으로 아카이브 파일을 만든다.

확장자가 tar이다.

tar -c: 묶음 파일 생성

tar -x: 묶음 파일 복원

 

garbage 빈공간을 다 줄이고 압축하는 명령어가 있다.

compress, gzip, bzip2, xz가 있다.

일반적으로 많이 사용하는 명령어는 gzip하고 bzip2이 있다.

압축률이 가장 낮은 것은 compress이고, 압축률이 가장 높은 것은 명령어 xz이다.

compress -> z 확장자 <-> upcompress

gzip -> gz  확장자 <-> upgzip

bzip2 -> bz2  확장자 <-> unbzip2

xz -> xz  확장자 <-> upxz

 

소스 코드를 압축 해제 후 컴파일 순서에 따라 프로그램을 설치한다.

환경설정 -> 컴파일 -> 파일 설치 단계로 구성되어 있다.

컴파일 - 소스 코드는 고급언어로 작성된 프로그램인데, 이를 저급 언어 기계어로 변환시켜주는 언어

소스 코드 압축 해제 후 압축된 폴더로 들어가서 환경설정을 하게 된다. 설치할 언어, 설치될 디렉토리 공간을 지정하는 것을 보통 환경설정이라고 한다.

make 명령어를 통해서 소스 파일을 컴파일을 한다. 컴파일이 끝나면 소스 파일은 실행 파일로 변환되게 되고 

실행 파일을 설치하는 작업이 make install 이다.

사용자가 사용자 환경에 맞는 프로그램 설치가 가능하기 때문에

동적인 환경 프로그램 설치가 가능하다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*이기적 영진닷컴 Youtube Link - https://www.youtube.com/watch?v=30a0Njq7IAw&list=PL6i7rGeEmTvp_MYm0zuiFe7COrM3endfu&index=18

 

리눅스에서 소프트웨어를 설치하는 방법

패키지 형태, 소스 코드 기반 소프트웨어 설치

패키지 형태

배포업체를 확인

데비안 계열과 레드햇 계얼에 따라 다르다.

데비안 계열 - dpkg, apt-get, aptitude

레드햇 계열 - rpm, yum

 

RPM(RedHat Package Manager)

새로운 패키지 설치, 업그레이드, 삭제시 사용

윈도우의 setup.exe와 유사한 형태를 갖고 있다.

rpm (i, U, False): 새로운 패키지 설치, 기존  패키지 업그레이드, 기존 패키지가 있어도 강제 설치

v: 설치된 패키지들의 보안상 침입자에 의해 권한 획득이나 변조가 있었는지를 검색할 수 있다.

 

YUM(Yellowdog Updater Modified)

네트워크를 통해서 RMP 패키지지들의 파일 업데이트를 자동 수행하거나, 새로운 패키지를 설치 및 제거를 수행한다.

네트워크 정상적인 상태를 확인하고 난 후에 YUM이라는 패키지 툴을 통해서 패키지 설치가 가능하다.

RPM의 의존성 문제를 해결하기 위해서 개발된 유틸리티 툴이다.

의존성 문제란 A -> B -> C 이렇게 A라는 프로그램을 설치하기 위해서는 B 프로그램이 필요하고, B프로그램을 설치하기 위해서는 C프로그램을 설치해야 한다. 이를 프로그램들의 의존성이라고 한다.

A를 설치하다 보면 오류 메시지가 뜨게 되고 B를 설치하라는 메시지가 나온다. 관리자는 하던 작업을 멈추고 B,C를 설치해야 한다. 이러한 번거로움이 있다. 프로그램의 상호 의존성 때문이다. 작업 지연이나 복잡성이 발생하게 된다.

YUM은 의존성 문제를 다 해결해서 자가 테스트 후에 B,C를 먼저 설치 후에 A를 설치한다.

yum install - 설치

yum update - 기존 기능 업그레이드

yum remove - 제거

yum list - 설치된 패키지 정보 출력

dpkg

rpm과 유사

deb 확장자 패키지지들을 설치하는데 사용하는 툴

루트 권한을 가지고 있어야 한다.

의존성 문제를 일으킨다.

dpkg -s 는 지정된 패키지에 대한 자세한 정보를 나타낸다.

 

apt-get(advanced packaging tool get)

데비안 리눅스에서 소프트웨어 설치나 제거를 하기 위해서 사용되는 유틸리티이다.

기존의 dpkg의 의존성이나 충돌문제를 해결해서 기존 devian 패키지를 좀 더 쉽게 설치할 수 있도록 해준다.

/etc/apt/source.list 파일을 참조한다.

패키지 유형(바이너리, 소스), 데이터 저장소(URL), 우분투 버전 정보, 카태고리들로 구성

이 리스트에 있는 저장소에 가서 의존성 문제나 이 충돌 문제가 있는지를 확인하고 해당되는 내용들을 먼저 설치한 후에 패키지를 설치

yum과 동일한 기능을 받고 있다.

정상적으로 설치가 되지 않는다면 /etc/apt/source.list 파일이 잘못되었는지 확인한다.

apt-get install, update, remove 같은 명령어를 이용해서 새 패키지를 설치하거나, 기존의 패키지를 업그레이드 하거나 패키지를 제거할 수 있다.

aptitude

패키지 관리를 자동화해주는 툴이다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*이기적 영진닷컴 Youtube Link - https://www.youtube.com/watch?v=0PHPZwQJO1s&list=PL6i7rGeEmTvp_MYm0zuiFe7COrM3endfu&index=17

 

pico

윈도우의 메모장과 유사

작업을 하다가 단축키를 이용하면

조금 더 빠른 업무 처리 가능

단축키들을 열거해 놓음

 

명령모드: 파일 삭제, 붙여넣기

입력모드: 글자를 쓸 수 있는 상태

편집모드: 저장 작업을 하거나 몇가지 작업을 하기 위해서 설정 작업을 할 때 사하게 되는 모드

vi aaa를 하면 먼저 명령모드로 들어가게 된다. a, i를 입력하면 입력모드로 전환된다. 

입력 모드에서 다시 명령모드가 되려면 ESC 키를 누르면 된다.

명령모드에서 편집 모드로 돌아가려면 :을 누르면 된다.

그리고 편집모드에서 다시 명령모드로 돌아오려면 ESC를 누르면 된다.

vi 편집을 종료할 때 사용하는 명령어

:wq 버퍼에 파일을 기록하고 종료

:q! 버퍼에 파일을 기록하지 않고 무조건 종료 (강제 종료)

:q 버퍼와 파일이 일치할 때만 종료

:set 숫자 편집기 편집된 내용들의 라인 번호를 붙여서 확인할 때 사용할 수 있음

no number를 이용해서 줄 번호를 해제할 수 있다.

명령모드는 작성한 문자나 라인을 삭제하거나 복사 혹은 붙여넣기 할 때 사용한다.

삭제: x, dd, dwdb

복사: yyywyb

붙여넣기: P, p

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*이기적인 영진닷컴 Youtube Link - https://www.youtube.com/watch?v=VPATi34agV4&list=PL6i7rGeEmTvp_MYm0zuiFe7COrM3endfu&index=16

 

리눅스에서는 다양한 편집기를 지원하고 있다. vi, emacs, pico, gedit, xedit 등이 있다.

이 편집기들의 공통적인 특징은 버퍼 기반의 편집기 방식을 사용한다.

파일의 내용을 그대로 복사해서 임시기억장치에 저장을 해두게 된다.

즉 임시기억장치가 편집기의 버퍼 역할을 하게 된다.

잘못 편집하더라도 원본 파일을 보존할 수 있다는 장점이 있다.

시스템이 다운되면 버퍼 내용이 지워지게 되면 작업했던 모든 내용을 잃게 된다는 단점을 갖게 된다.

 

Pico

워싱턴 대학에서 유닉스 기반의 텍스트 에디터로 개발이 된 것이다.

윈도우창의 메모장과 유사한 형식으로 초기 리눅스 배포판 버전이 낮았을 때는 Pico를 많이 사용했다.

자유 소프트웨어 라이센스가 아니기 때문에 소스 수정이 불가능해서 업데이트가 되지 않는다는 이유로 조금 최근에는

pico라는 편집기를 사용하지 않고 있다.

vi 같이 입력모드와 명령모드가 따로 구분되서 진행되는 것이 아니기 때문에

다른 편집기들에 비해서는 사용하기가 쉽다는 장점을 갖는다.

GNU 프로젝트에서 제외가 되긴 했지만 다른 버전 nano로 확장되었다.

Emacs

리처드 스톨만이 매크로 기능이 있는 텍스트 교정 및 편집기로 개발한 것으로 이후에 제임스 고슬링이 LISP언어를 이용해서 다양한 기능을 첨부시켰다.

단순 편집기를 넘어서 텍스트 편집을 위한 통합환경을 제공한다.

단 LISP 코드는 실행하는데 오래 걸린다는 단점이 있다.

비모드형 편집기로 입력모드와 명령모드가 따로 구분되서 진행되는 것이 아니기 때문에 간단한 편집문서나 프로그래밍까지 다양하게 사용할 수 있는 편집기이다.

vi

1976년 빌 조이가 처음 개발한 편집기

유닉스 환에서 가장 많이 사용하는 편집기

vi의 작업방법은 모드형 편집기

작업모드 - 명령모드, 입력모드, 편집모드 나위어져서 실행

조금 다른 편집기들에 비해 사용이 초보자들은 조금 어려워할 수 있다.

단 한줄씩 편집하는 줄단위 편집기가 아니라 화면 단위로 편집되는 visual editor 이기 때문에

다양한 vi 콜론들이 존재하고 있다.

vim

브람 무레나르가 만든 편집기로 vi 편집기하고 호환이 가능한 편집기

vi를 향상 시킨 편집기

편집시 다양한 색상을 지원 -> 가식성 높음

하이라이트 기능 제공

검색 기능 제공

vi 보다는 vim이 더 많이 사용되는 편집기

특히 정규표현식 문법은 강조 기능을 갖고 있고

다중 되돌리기 기능

유니코드를 비롯한 다국어 지원도 가능한 편집기

gedit

그놈 테스트 환경용으로 개발된 자유 소프트웨어 편집기

마이크로소프트, 윈도우, 맥os에서도 사용 가능

x윈도우 기반 시스템에서 돌아가게 개발된 편집기이기 때문에

다른 것들에 비해서 pico와 유사한 형태로 메모장 처럼 사용할 수가 있어서

일반 사용자들이 많이 사용하는 편집기 중 하나

다만 텔레 접속시 텍스트 기반 콘솔창에서는 gedit를 사용할 수 없다는 단점을 가지고 있다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*이기적 영진닷컴 Youtube Link - https://www.youtube.com/watch?v=HngoOxQvdvw&list=PL6i7rGeEmTvp_MYm0zuiFe7COrM3endfu&index=15

 

ps

process status

현재 실행중인 프로세스의 상태를 보여주는 명령어

자신의 터미널에서 실행되고 있는 프로세스 관련 정보를 모두 확인할 수 있다.

pid, tty, time, cmd 등의 현재 실행되고 있는 프로세스 정보를 확인할 수 있다.

ps 명령어는 grep이라는 명령어와 같이 쓰인다. 특정 문자열을 가진 파일들을 찾을 때 사용.

ps ax | grep httpd는 httpd 프로세스들에 대한 정보만 확인할 때 두 가지 명령어를 같이 혼용해서 사용할 수 있다. 가장 일반적인 형태이다.

a: 실행중인 모든 프로세스

x: 접속된 터미널 뿐만 아니라 사용되고 있는 모든 프로세스들을 검사

u: 프로세스를 실행하는 사용자 이름과 프로세스 시작 시간도 같이 출력해서 확인 가능

ps aux: 어떤 프로세스를 누가 어느시간동안 사용하고 있는지 확인 가능, status 현재 프로세스 상태를 확인할 수 있다.

status에는 s, d, t 등이 있는데 z는 좀비 프로세스, kill 시그널을 받아도 종료되지 않는 상태, 메모리 정보는 다 사라졌지만 부모 프로세스가 아직 해당 프로세스의 작업 종료를 못할 경우 나타난다.

 

NICE

프로세스의 실행 우선순위를 설정할 때 사용하는 명령어

프로세스의 우선순위가 높다라고 이야기 하는 것은 

빨리 처리되어야 하기 때문에 낮은 프로세스가 할당 받은 자원들을 실행순서가 높은 프로세스들에게 할당을 하게 된다.

프로세스의 우선순위가 높은 프로세스는 자원 할당에서 우선 순위를 할당받게 되고 실행속도가 빨라지게 된다.

 

pstree

실행중인 프로세스들을 트리구조로 나타내는 것을 이야기한다.

캡처된 화면을 보면 init 프로세스를 최상위로 배치하고

그것을 기반으로 현재 실행중인 프로세스들의 상태를 트리 형태로 나타내는 것을 확인할 수 있다.

p: pid도 같이 명시됨

n: pid를 기반으로 정렬되서 트리가 나온다.

jobs

현재 중지된 작업 상태나 백그라운드로 실행중인 프로세스나 아직 변경되진 않았지만 보고되지 않은 job 프로세스들을 확인할 때 사용하는 명령어

job이라는 명령어로 입력을 하면 현재 실행중인 프로세스를 확인할 수 있고, 프로세스 앞에 +나 -로 명시할 수 있다.

+는 현재 실행중인 작업, -는 아직 실행되지 않고 대기 상태에 있는 job들을 표시

bg와 fg

bg는 포그라운드에서 백그라운드로 작업 전환시 사용하는 명령어

fg는 백그라운드에서 포그라운드로 작업 전환할 때 보통 사용

명령어 bg를 사용하는 이유 중 하나는 작업이 빨리 끝날 것을 생각하고 있겠지만 실행하는 시간이 오래걸려서 시스템을 포그라운드로 처리하면 작업 지연이 유발할 경우 백그라운드로 전환시켜서 작업을 지속적으로 처리하고자 할 때 보통 포그라운드 작업을 백그라운드 작업으로 전환해서 작업을 진행

포그라운드에서 백그라운드로 작업 전환을 할 때는 ctrl + z 를 눌러서 작업을 일시중지시키고 난 다음에 명령어 bg를 주어서 실행

곧바로 백그라운드 작업으로 실행시키고자 한다면 프로세스명 뒤에 and 연산자 같은 기호를 붙여서 백그라운드 작업으로 전환할 수 있음

fg는 백그라운드에서 포그라운드로 작업 전환시 사용하는 명령어

특별하게 작업 번호를 붙이지 않으면 현재 수행중인 작업을 포그라운드로 작업하고 만약에 포그라운드 작업을 종료하려면 ctrl+c를 눌러서 작업을 종료할 수 있다.

kill

지금 운영중인 프로세스를 종료시킬 때 사용

PID 또는 %작업번호를 입력하면 해당 프로세스나 job은 다음 작업 종료가 된다.

만약에 시그널 번호나 시그널 이름을 주게 될 경우 즉 특정 이벤트가 발생하면 자동으로 프로세스를 종료도 할 수 있다.

만약에 ctrl + c를 눌렀을 때 해당 프로세스는 중지해라. 이렇게 조건을 주어서 프로세스를 종료할 때 시그널 번호를 사용할 수도 있다.

-l: 시그널 옵션 확인

 

killall

같은 종류의 프로세스를 다수개를 한번에 종료시킬 때 사용

해당 프로세스명과 연관된 프로세스를 동시에 종료시킬 때 사용할 수 있다.

 

nice

프로세스들 사이의 우선순위를 설정할 때 혹은 우선순위 값을 확인할 때 사용할 수 있는 명령어

NI 값을 조정해서 프로세스의 우선순위를 조절할 수 있다.

NI 값의 범위는 -20~-19 까지이다.

숫자가 작을 수록 우선순위 값이 높다. 커질 수록 해당 프로세스는 낮은 우선권을 갖게된다.

낮은 우선권을 가진 프로세스는 높은 우선권을 가진 프로세스에게 자원을 먼저 할당해줌으로써 작업처리 지연이 발생할 수 있다.

일반적으로 우선순위 값은 0을 갖기는 하지만 NI 값이 작을 수록 우선순위가 높다고 볼 수 있다.

특별하게 옵션을 지정하지 않고 nice를 특정 프로세스에게 지정을 하면 우선권은 10씩 증가해서 우선권이 낮아진다.

일반 사용자는 nice 값을 이용해서 프로세스의 NI 값을 조정할 수 없고, root 사용자만이 NICE 값을 이용해서 NICE 값을 감소키셔서 우선순위를 높일 수 있다.

nice -10 bash는 bash 프로세스 NI값을 10만큼 증가시키는 것이다.

nice --10 bash는 NI 값을 -10만큼 감소시켜 우선순위를 높인다.

 

renice

이미 실행중인 프로세스의 우선순위를 변경하고자 할 때 사용하는 명령어.

root 권한자가 이를 실행할 수 있다.

nice 명령어와 차이점.

nice는 기존 NI 값을 기준으로 증가시키거나 감소시키지만

renice는 지정한 NI값을 설정한다.

renice는 양수값에 -를 사용하지 않는다.

renice에 하이픈을 쓰면 NI 값을 음수값으로 지정하는 것이다.

renice -20 3241: 프로세스 3241의 NI값을 -20으로 셋팅한다.

top

리눅스 시스템의 운영 상태를 실시간으로 모니터링하거나 프로세스 상태를 확인할 수 있다.

top 프로세스들 식별자 번호, 프로세스 소유자, 우선순위 NICE 값, 가상 메모리 총량, 메모리 사용량, 공유 메모리 총량, 해당 프로세스 상태, 프로세스의 CPU 사용량, 프로세스의 메모리 사용률, CPU 사용시간 같은 다양한 상태 정보들을 확인할 수 있다.

기본적으로 5초에 1번씩 실시간으로 시스템 상태 정보가 갱신이 되기 때문에 실시간 모니터링이 된다.

nohup

프로세스가 중단되지 않고, 백그라운드로 작업을 수행할 때 일반적으로 사용한다.

사용자가 로그아웃하거나 터미널 창이 닫혀도 실행중인 프로세스를 계속 백그라운드 프로세스로 작업할 수 있도록 도와준다.

용량이 큰 데이터 압축파일의 경우 포그라운드로 작업이 계속 진행이되면은 너무 오랜시간이 걸릴 경 nohup을 이용해서 중단없이 백그라운드로 작업을 전향한 후에 해당 업무를 지속적으로 처리한 후에 업무를 완료할 수 있게 해준다.

백그라운드로 실행될 수 있도록 명령행 뒤에 '&'을 명시한다.

 

tail

파일의 마지막 행을 기준으로 해서 지정한 행까지 파일 내용을 출력하는 명령어

10줄씩 출력

& 끝에서 읽어올 파일의 라인수를 지정

tail -n5: 파일의 마지막 행부터 5번째까지 파일 내용을 확인할 수 있다.

cron

작업을 하다보면 지정된 시간에 주기적으로 처리해야될 프로세스들이 있다.

주기적으로 반복되는 일들을 설정 시에 cron을 사용해서 작업을  지속적으로 주기적으로 처리

cron 관련 서비스는 cron daemon은 crond라는 명령어로 실행할 수 있고 관련된 설정 파일은 /etc/crontab이라고 하는데 cron 관련 설정을 할 수 있다.

일반적으로 시간과 분 데이 먼쓰 주 이런 식으로 분단위로 최소한 분까지 작업 시간 영역을 지정해서 주기적인 작업을 등록할 수 있다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*이기적 영진닷컴 Youtube Link - https://www.youtube.com/watch?v=32lSCBb32Ms&list=PL6i7rGeEmTvp_MYm0zuiFe7COrM3endfu&index=14

 

프로그램 프로세스

소스코드로 작성된 CPU를 할당받지 않은 것을 프로그램

프로그램이 실행되기 위해서 CPU나 메모리를 할당받은 것을 프로세스

현재 실행중인 프로그램이 프로세스

프로세들마다 고유의 프로세스 ID(PID)를 할당 받는다.

 

일반적으로 시스템이 부팅되면 가장 먼저 실행되는 프로세스가 init이다

아이디는 1이다.

이 프로세스에 의해서 다른 프로세스들이 호출이 되는 구조

 

프로세스 유형에는 프로그라운드 프로세스와 백그라운드 프로세스로 나눈다.

포그라운드 프로세스 화면에서 실행되는 것이 보이는 프로세스 (워드 프로세스, 계산기 등 어플리케이션) 

백그라운드 프로세스는 화면에서 실행되는 것이 보이지 않는 뒤에서 시스템을 운영하기 위해서 일반적으로 돌아가는 프로세스 (네트워크이나 밑단에서 돌아가고 있는 프로그램들)

 

포그라운드는 사용자와 상호작용하는 프로세스

터미널에 직접 연결해서 입출력을 주고 받는 프로세스

 

백그라운드 프로세스는 사용자와 직접 대화하지 않고 뒤에서 실행되는 프로세스

사용자의 입력과 무관하게 실행되는 프로세스

 

fork() 함수

사용자가 새로운 프로세스를 생성하기 위해서 사용하는 시스템 호출 함수

새로운 프로세스를 생성할 때 기존 프로세스를 복제하는 방식을 사용

원본 프로세스는 그대로 있고 새로운 프로세스가 또 하나 만들어진다.

새로운 프로세스를 위한 메모리를 할당을 하고 작업이 진행이 된다.

원본 프로세스를 부모 프로세스라고 하고 새로 복제된 프로세스를 자식 프로세스라기 이야기 한다.

메모리도 다르지만 소스 코드는 동일하다.

 

exec() 함수

호출하는 프로세스가 새로운 프로세스로 변경되는 방식

기존 프로세스는 사라지고 새로운 프로세스가 생성되는 방식으로 프로세스를 만든다

기존 프로세스의 메모리를 그대로 새로운 프로세스가 할당받아 사용하는 개념

덮어 씌우는 개념

새로운 프로세스를 위해서 메모리를 할당한다고 하지는 않는다.

 

데몬(Daemon)

시스템을 부팅하면 자동적으로 실행되는 백그라운드적 프로세스

메모리에 상주하면서 사용자의 요청을 즉각 즉각 처리해주는 서버 프로세스

일반 사용자들은 이 프로세스에 대한 권한이 없고

root 권한을 가진 사용자만이 데몬을 실행하거나 정지시킬 수 있다.

- standalone daemon: 독립적으로 운영되는 데몬, 누군가에 의해서 실행되는 것이 아니라 해당 프로그램이 항상 메모리에 상주하면서 점유율이 높은 경우에 독립적으로 구동이 되서 실행되는 데몬들. HTTPD 등이 대표적인 standalone daemon

- inetd daemon: 슈퍼데몬, 가장 메인이 되는 데몬, 해당 데몬을 실행함으로써 그 밑에 여러가지 종속되어 있는 서비스들을 동시에 구동이 가능. 하나의 데몬을 실행을 시키면 그와 관련된 의존적인 데몬들을 동시에 실행. Telnet, FTP 등은 Super daemon이 구동이 되어야 실행이 될 수 있는 데몬들.

메인이 되는 데몬, 핵이 되는 데몬을 슈퍼 데몬이라고 한다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*이기적 영진닷컴 Youtube Link - 

 

리눅스에서 변수의 정의는 시스템 환경 정보를 저장하는 저장소로 정의하고 있다.

이러한 변수는 환경 변수랑 셸 변수로 구분한다.

환경 변수는 전역변수라고 얘기하는데 전체 셸에서 사용 가능한 변수를 이야기 한다.

서브 셸의 기능상속이 가능하며 환경변수 확인 명령으로는 env가 있다.

그리고 지역변수는 현재 로그인한 셸에서만 사용 가능한 지역변수를 셸이라고 한다.

서브 셸의 기능 상속이 불가능하다.

변수 확인 명령어는 set이다.

 

셸에는 시스템이 부팅될 때 자동으로 생성되는 셸과 사용자가 직접 변경해서 사용하는 셸이 있다.

서브 셸은 사용자가 직접 변경해서 사용하는 셸이다.

환경 변수에서는 서브 셸을 지정하더라도 기능 상속을 받아서 해당 기능을 수행하는 반면

지역 변수에서는 기본적인 기능 상속이 불가능. 사용 못 한다.

차이점이 있다.

 

책에서는 주요 환경 변수를 다루고 있다.

PATH, HOME, HOSTNAME, USERDISPLAY, PS1, PS2 

이런 다양한 환경변수가 사용되고 있다.

 

환경 설정 파일: /etc/profile, /etc/bashrc, ~/.bash_profile, ~/.bashrc 이다.

이러한 환경 설정 파일은 셸 시작 시 자동으로 실행 되는 고유 시작 파일이라고 보면 되겠다.

사용자 운영 환경을 설정하게 된다.

특히 셸 파일은 크게 두가지가 있다. 전역적 파일과 지역적 파일로 구분된다.

 

전역적 파일은 사용자에게 공통적으로 적용되는 운영환경이다. 보통 /etc 디렉토리 밑에 위치한다.

지역적 설정 파일들은 계정자마다 서로 다른 환경을 구성할 수 있게 만들어 놓은 운영설정 파일로 사용자의 HOME 디렉토리에 히든 형태로 숨겨져서 저장되어 있다.

 

똑같은 파일이라도 /etc 밑에 있느냐, /home 밑에 있느냐에 따라 /etc는 전역, /home은 지역설정이라고 이야기 한다.

전체 사용자에게 공통적인 환경설정을 지정할 때 사용하는 것.

현재 로그인한 사용자에게만 적용하는 환경설정.

 

/etc/profile.d 는 특정 운영 프로그램을 시작할 때 자동 실행하게 될 스크립트 파일을 넣어둔 파일

부팅하면 자동으로 설정된 경로를 통해서 해당 프로그램들이 부팅시 실행을 하게 된다.

 

본셸 계열에 포함된 배쉬셸이 있는데 리눅스 표준 셸로 채택되어 있다.

리눅스 및 맥 OS에서 사용되는 셸

명령어 완성, 히스토리, 명령어 치환, 명령어 편집 등 다양한 기능들을 지원하고 있다.

history

히스토리 기능은 계정자가 로그인한 후에 입력하는 명령어들을 기록하는 기능.

1000개 정도의 명령어를 .bash_history 파일에 저장.

반복되는 명령어.

약간 변형해서 입력해야 하는 명령어.

.bash_history 에 저장된 명령어를 호출해서 사용한다.

호출은 키보드의 상하좌우 키를 누르면 입력했던 명령어를 호출할 수 있다.

.bash_history는 로그인한 후에 계정자가 입력한 명령어를 기억하기 때문에 home 디렉토리에 저장이 되어 있다.

echo history size 이런 것을 지정하면 현재 최대 몇개까지 history에서 명령어 기록할 수 있는지 혹은

export 명령어를 이용해서 history 사이즈도 조정할 수 있다.

alias

자주 사용하는 명령어를 특정 문자로 간략화 시켜놓은 기능

배쉬 셸에서 지원해주는 주요 기능 중 하나.

설정된 alias를 확인하고 싶으면 alias를 입력하면 현재 설정된 별칭들을 볼 수 있고

해제하고 싶으면 unalias 명령어를 입력해서 설정된 alias를 해제할 수 있다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*이기적 영진닷컴 Youtube Link - https://www.youtube.com/watch?v=_7CwI263I_o&list=PL6i7rGeEmTvp_MYm0zuiFe7COrM3endfu&index=12

 

셸은 명령어 해석기라고 이야기 한다.

사용자가 입력한 명령어를 해석해서 커널에 전달해주는 중개자 역할을 한다.

dos에 커맨드와 동일한 기능을 수행한다고 볼 수 있다.

셸은 로그인 할 때 사용자별 사용 환경 설정 기능도 갖고 있다.

사용자 마다 시스템 구성을 다르게 할 수 있는데 셸이 이를 컨트롤 한다.

셸 자체는 스크립트 언어이기 때문에 프로그래밍 기능이 가능하다.

 

종류로는 본셸과 C셸이 있다.

일반적으로 프롬프트가 $(달러)이면 본셸이고, %(퍼센트) 모양이면 C셸 계열이라고 이야기 한다.

대부분의 우리가 사용하고 있는 셸은 본셸 계열.

C셸은 본셸의 기능과 히스토리 엘리어스 작접 제어 기능을 추가로 가지고 있다.

 

셸은 로그인 후 자동으로 생성하는 로그인 셸과 사용자가 직접 변경 실행할 수 있는 서브셸로 구분할 수 있다.

현재 시스템에서 지원 가능한 셸을 확인하고 싶으면 /etc/shell 을 확인하면 현재 시스템에서 지원하는 셸들을 확인할 수 있다.

계정 마다 서로 다른 셸을 사용 가능. 계정자들의 셸을 확인하려면 /etc/passwd 파일에서 계정자들의 셸을 확인할 수 있다.

현재 로그인한 사용자의 셸을 확인하려면 echo $SHELL 명령어를 사용하면 현재 로그인한 사용자가 사용하고 있는 셸을 확인할 수 있다.

 

지금 현재 사용하고 있는 사용자들이 사용하고 있는 셸을 변경하고자 할 경우 chsh, usermod 명령어를 통해서 변경할 수 있다.

chsh

change shell

특정 사용자의 셸을 지정을 하게 되면

/etc/passwd 안에 해당 계정자의 셸이 변경됨

바로 적용이 되려면 재부팅 해서 사용해야 한다.

l: /etc/shell에서 확인하는 내용과 동일한 내용을 확인할 수 있다.

usermod

계정자의 정보를 변경하는 명령어

s 사용자 셸 명: 지정된 사용자의 셸을 변경한다.

 

감사합니다.

728x90
반응형
LIST

+ Recent posts