본문 바로가기
리눅스

리눅스 쉘과 프로세스

by 햇병아리엔지니어 2022. 9. 19.
반응형

리눅스 쉘과 프로세스에 대해 알아보겠습니다.

 

1. 쉘이란

사용자가 입력한 명령어를 커널에서 번역해주며 터미널에서 입력한 명령을 해석하고 관리하는 프로그램이다. 
쉘은 사용자 커널 사이에 연결시켜주는 역할을 하며 사용자가 입력한 명령을 해석하여 운영체제가 해당명령을 알 수 있게 해줍니다.
쉘은 여러가지 종류가 있으며 가장 많이 사용되는 쉘은 bash 쉘입니다. 
현재 사용중인 쉘은 echo $SHELL 명령어로 확인이 가능합니다. 

 

 

2. 쉘 메타문자

1) 경로이름 메타문자 : 특정한 경로를 지정해둔 경로 이름 메타문자
~ : 현재 로그인 한 사용자의 홈디렉토리 (사용자 정보를 저장하고 있는 /etc/passed 파일의 6번째에 설정된 디렉토리) 
- : 이전 작업 디렉토리 (CentOS의 Bash 쉘 기준 바로 이전의 디렉토리만 기억) 

2) 파일이름 메타문자 : 파일 이름을 대체합니다. 
* : 하나 이상의 문자를 대체하는 문자로 일반적으로 전체를 의미합니다. 특정 디렉토리 내의 모든 파일을 지정할 때 또는 특정 이름으로 시작할 때 등 여러가지로 활용합니다. 
ex) rm -rf ./* : 현재 경로포함 전체를 지우세요. 
? : 하나의 문자만 대체합니다. 

3) 인용부호 메타문자 : Grave Accent, 작은 따옴표, 큰 따옴표  
'':''안에 있는 문자를 명령어로 인식하여 실행합니다.  
" : 작은 따옴표 안에 있는 메타문자를 일반문자로 취급합니다. 
"": 큰 따옴표 안에 있는 $,',\ 문자를 제외한 나머지 문자만 일반문자로 취급합니다.
$는 리눅스 쉘에서 변수를 사용할 때 사용하는 문자입니다. 

4) 방향 재지정 메타문자 : <,>,|
< : 표준 입력 재지정
> : 표준 출력 및 표준 에러를 재지정, 일반적으로 명령어의 출력을 파일로 저장 또는 네트워크로 전송
파일 저장 : echo "test" > ./file
정상적인 결과만 출력할 때 : find / -perm -4000 2> /dev/null 
에러 결과만 출력할 때 : find / -perm -4000 1> dev/null 
정상적인 결과는 파일에 저장, 에러는 출력 X : find / -perm -4000 1> ./setuid_file 2>/dev/null 
>을 한 번만 사용하면 파일의 내용을 덮어씁니다. >>을 사용하면 기존의 파일 내용에 이어서 씁니다. 

| : [명령어1]|[명령어2]처럼 사용하며 명령어1의 결과를 명령어2의 입력으로 사용합니다.
ex) ls /etc |grep rc : ls 명령어의 결과에서 특정 문자를 포함한 라인만 뽑아볼 때
ls /etc | more : ls /etc 결과가 너무 길어 화면에 다 나오지 않을 때 끊어서 확인하고 할 때 쓰는 명령어 입니다.

3. 사용자 초기화 파일

/etc/profile : 시스템 전역에 걸쳐 환경을 설정하는 파일, 모든 사용자가 적용되는 파일입니다. 
~/.profile : 개별 사용자의 홈 디렉토리에 있는 파일, 해달 사용자의 설정을 변경할 때 사용합니다. 
~/.bashrc : 개별 사용자의 홈 디렉토리에 있는 파일, 해당 사용자의 쉘 관련 설정을 변경할 때 사용합니다. 
환경 변수, 쉘 프롬프트(명령어 앞에 붙는 내용), 별명 기능 (alias), 쉘 옵션 정의 등을 설정 가능합니다. 

1) 환경 변수
시스템 환경에 대한 설정을 저장하고 있는 변수입니다. 
HOME : 사용자의 홈디렉토리
PATH : 실행파일을 찾는 경로
LANG : 프로그램 사용 시 기본 지원되는 언어
SHELL : 로그인해서 사용하는 쉘
EDITOR: 기본 편집기 이름
PS1 : 명령 프롬프트 변수

 

4. 프로세스 종류와 명령어

프로세스 종류
부모 프로세스 
: 다른 프로세스를 생성할 수 있는 프로세스입니다.  
자식 프로세스
: 부모 프로세스로부터 만들어지는 프로세스입니다.  
정상적으로는 자식 프로세스 종료 후 부모프로세스 종료됩니다. 

데몬 프로세스
: 일반적으로 사용자가 실행시키지 않고 커널에 의해 구동, 백그라운드로 동작하는 프로세스입니다. 
특정 서비스를 제공하기 위해 구동하며 파일 이름 끝에 'd'를 붙여서 사용하는 것이 일반적입니다. 
'windows의 서비스'와 같은 존재입니다. 

고아 프로세스
: 일반적으로 자식프로세스는 종료되면 부모 프로세스로 돌아가는 데
부모 프로세스가 먼저 종료된 경우에는 자식 프로세스를 고아 프로세스라고 합니다. 
고아 프로세스는 init 프로세스가 처리해줍니다. 

* init 프로세스 
: 컴퓨터 시스템의 부팅 과정 중 최초의 프로세스 입니다. 
init은 시스템이 종료될 때까지 계속 실행하는 데몬 프로세스이며 다른 모든 프로세스의 직간접 부모 프로세스 입니다. 
자동으로 고아 프로세스를 입양합니다.  

좀비 프로세스 
: 정상적으로 프로세스를 종료했지만 자원을 반납하지 않은 상태로 계속 남아있는 상태입니다.  
자원을 점유한 상태에서 동작하지 않은 프로세스입니다. 

프로세스 명령어
ps명령어 : 윈도우 작업관리자와 비슷합니다. 
옵션에 따라 출력되는 정보의 값이 달라집니다. 

ps -e : 시스템 상의 모든 프로세스 정보를 출력합니다. 
ps -f : 상세한 정보를 출력합니다. 


일반적으로 ps -ef 명령어를 많이 사용하며 결과값은 다음과 같습니다. 


UID : 프로세스 소유자 ID
PID : 프로세스 ID 
PPID : 부모 프로세스 ID
C : 스케줄링을 위한 CPU 사용량, 별로 의미 없는 필드입니다. 
STIME : 프로세스 시작 시간 
TTY : 장치 번호 pts/1??
TIME : 프로세스에 대한 누적 실행 시간 
CMD : 명령 옵션과 Argumnet 입니다.

반응형

댓글