Cohe

시그널, 쉘, 마운트, Sticky Bit 본문

자격증 공부/리눅스 마스터 2급

시그널, 쉘, 마운트, Sticky Bit

코헤0121 2024. 11. 11. 20:44
728x90
반응형

1. 주요 리눅스 시그널(Signal)

리눅스에서 시그널은 프로세스 간 통신을 위한 중요한 메커니즘입니다. 주요 시그널들의 특징과 용도를 살펴보겠습니다.
시그널(Signal)은 프로세스간 통신(IPC)을 위한 소프트웨어 인터럽트, 프로세스나 운영체제가 다른 프로세스에게 어떤 이벤트가 발생했음을 알리는 메커니즘.

쓰는 법

# 프로세스 ID 확인
ps -ef | grep nginx

# nginx 설정 리로드
kill -1 `pidof nginx`

# 프로세스 상태 확인
ps aux | grep 1234

# 기본 문법
kill -[시그널번호] [프로세스ID]

프로세스 제어 관련 시그널

  • SIGHUP(1): HangUP의 약자로, 터미널 연결이 끊어졌을 때 발생합니다. 데몬의 설정 파일을 다시 읽어들일 때도 사용됩니다.
  • SIGINT(2): 키보드에서 [CTRL]+[C]를 눌렀을 때 발생하는 인터럽트 시그널입니다.
  • SIGQUIT(3): [CTRL]+[]를 눌렀을 때 발생하며, 프로세스 종료 후 코어 덤프를 생성합니다.
  • SIGKILL(9): 가장 강력한 종료 시그널로, 프로세스를 즉시 강제 종료합니다.
  • SIGTERM(15): 정상적인 종료를 요청하는 시그널로, kill 명령의 기본값입니다.

오류 관련 시그널

  • SIGILL(4): 잘못된 명령어 실행 시 발생합니다.
  • SIGTRAP(5): 디버깅을 위한 중단점에서 발생합니다.
  • SIGABRT(6): abort() 함수 호출로 인한 비정상 종료 시 발생합니다.
  • SIGBUS(7): 메모리 접근 오류 시 발생합니다.
  • SIGSEGV(11): 잘못된 메모리 참조 시 발생합니다.

프로세스 상태 관련 시그널

  • SIGCHLD(17): 자식 프로세스가 중지되거나 종료될 때 부모 프로세스에게 전달됩니다.
  • SIGCONT(12): 중지된 프로세스를 다시 실행합니다.
  • SIGSTOP(19): 프로세스를 일시 중지시킵니다.
  • SIGTSTP(20): [CTRL]+[Z]를 눌렀을 때 발생하는 일시 중지 시그널입니다.

정리

 

번호 이름 설명 기본처리
1 SIGHUP(HUP) HangUP의 약어로 로그아웃과 같이 터미널에서 접속이 끊겼을 때 보내지는 시그널입니다. 데몬 관련 환경 설정 파일을 변경시키고 변화된 내용을 적용하기 위해 재시작할 때 이 시그널이 사용됩니다. 종료
2 SIGINT (INT) 키보드로부터 오는 인터럽트 시그널로 실행을 중지. [CTRL]+[c] 입력 시에 보내지는 시그널 종료
3 SIGQUIT (QUIT) 키보드로부터 오는 실행 중지 시그널 [CTRL] + [\] 입력 시에 보내지는 시그널입니다. 기본적으로 프로세스를 종료시킨 뒤 코어를 덤프하는 역할을 함. 코어덤프
4 SIGILL (ILL) illegal instruction의 약자입니다. 잘못된 명령을 사용했을 때 발생합니다. 코어덤프
5 SIGTRAP (TRAP) trace(추적), breakpoint(중지점)에서 TRAP 발생할 때 코어덤프
6 SIGABRT (ABRT) abort의 약자로 비정상종료 함수에 의해 발생합니다. (즉 abort 시스템 호출을 하였을 때 발생) 코어덤프
7 SIGBUS 메모리 접근 에러시 발생하는 시그널입니다. 코어덤프
9 SIGKILL (KILL) ⇒ kill -9 KILL! 무조건 종료, 즉 프로세스를 강제로 종료시키는 시그널! 종료
11 SIGSEGV invalid memory reference 종료 + 코어덤프
15 SIGTERM(TERM) ⇒ kill -15 Terminate의 약자로 가능한 정상 종료시키는 시그널로 kill 명령의 기본 시그널입니다. 종료
17 SIGCHLD (child) 자식 프로세스가 stop 되거나 종료되었을 때 부모에게 전달되는 신호입니다. (멀티 프로세스 코딩에서 자세한 사용법은 배울 거..) 무시
12 SIGCONT (CONT) Continue의 약자로 STOP 시그널에 의해 정지된 프로세스를 다시 실행시킬 때 사용됩니다. 재시작
19 SIGSTOP (STOP) 터미널에서 입력된 정지 시그널입니다. SIGCONT로 재실행시킬 수 있습니다. 중지
20 SIGTSTP (TSTP) 실행 정지 후 다시 실행을 계속하기 위해 대기시키는 시그널입니다. [CTRL] + [z]를 입력했을 때 보내지는 시그널입니다. SIGCONT로 역시 다시 실행시킬 수 있습니다. 중지
29 SIGIO 비동기 입출력이 발생했을 경우 ! (I/O now possible!) 종료

 

2. 리눅스 쉘의 진화

쉘은 사용자와 커널 사이의 인터페이스 역할을 하는 중요한 프로그램입니다. 시간의 흐름에 따라 다양한 쉘이 개발되었습니다.

쉘의 발전 과정

  1. sh (Bourne Shell)
    • 최초로 개발된 POSIX 호환 쉘
    • 기본적인 쉘 기능 제공
  2. csh (C Shell)
    • 1978년 빌 조이가 개발
    • C 언어 기반의 문법 채택
    • 히스토리, alias 기능 도입
  3. tcsh
    • C 쉘의 확장판
    • 명령줄 완성, 편집 기능 강화
  4. ksh (Korn Shell)
    • 유닉스 환경에서 널리 사용
    • Bourne 쉘과의 호환성 유지
    • 향상된 명령행 편집 기능
  5. bash (Bourne Again Shell)
    • GNU 프로젝트의 일환으로 개발
    • 현재 리눅스의 대표적인 쉘
    • 강력한 스크립팅 기능 제공
  6. zsh
    • 최신 기능들을 통합한 현대적인 쉘
    • 높은 확장성과 커스터마이징 가능

3. 파일시스템 마운트 옵션

리눅스에서 다양한 저장 장치와 네트워크 파일시스템을 마운트할 때 사용되는 주요 옵션들입니다.

주요 마운트 타입

  • nfs: 네트워크 파일시스템 프로토콜
  • udf: 범용 디스크 포맷 (광학 미디어용)
  • cifs: 윈도우즈와의 호환성을 위한 네트워크 파일시스템
  • iso9660: CD-ROM 표준 파일시스템
  • loop: ISO 이미지 파일을 마운트할 때 사용

4. 특수 권한: Sticky Bit

디렉토리에 설정하는 특수 권한인 sticky bit는 공유 디렉토리에서 사용자들의 파일을 보호하는 중요한 보안 기능을 제공합니다. 주로 /tmp나 /var/tmp와 같은 공용 디렉토리에서 사용됩니다.

728x90
반응형