리눅스 쉘 스크립트 맛보기

2.1 리눅스의 부팅 과정과 로그인 쉘

  1. init
    • init과 연결된 수많은 프로세스들이 자신만의 프로세스 ID(PID)를 가지고 생성되기 시작
    • init의 PID는 1
    • init 프로세스가 시스템을 초기화하고 터미널 라인을 오픈하기 위한 작업을 시작하고, 표준 입력과 표준 출력, 표준 에러를 설정
    • ps -ef 를 입력하면 PID와 같이 출력
      • 표준 입력 (0): 키보드로부터 입력받는 것
      • 표준 출력 (1) / 표준 에러(2) : 모니터로 출력하는 것
        • 파일 디스크립터 0 1 2 ( 식별자 )
        • 사용 사례 : bash 스크립트를 작성할 경우 표준 에러를 표준 출력으로 돌리고, 에러인 경우 dev/null로 찍는 경우 등등
        • standard error redirection
        • https://unix.stackexchange.com/questions/111611/what-does-the-rc-stand-for-in-etc-rc-d
    • 그 이후 로그인 프롬포트를 보여줌
    • init 프로세스는 /etc/rc.d/init.d 에 런레벨별로 설정되어 있는 쉘 스크립트를 실행. 이 스크립트들은 chkconfig 명령을 사용해 부팅 시 자동으로 실행할 것인지, 실행하지 않을 것인지 설정할 수 있음
    • 부팅 시 수행할 런레벨은 /etc/inittab에 설정되어 있음( 우분투는 /etc/init/rc-sysinit.conf!)
    • 런레벨은 0부터 6까지 존재하는데, 주로 텍스트 모드 런레벨인 3번(주로 서버)과 그래픽 모드 런레벨인 5번을 주로 사용(주로 데스크탑) 현재는 level 2를 사용 중
    • rc1.d, rc2.d, rc3.d, rc4.d, rc5.d, rc6.d에 설정 파일이 들어가있음 (runlevel configuration)
    • K로 시작하는 것은 kill, S로 시작하는 것은 Start를 의미하며 파일의 prefix를 수정하면 바로 반영
  2. 로그인 프롬포트
    • /bin/login 프로그램이 /etc/passwd 파일에 있는 첫 번째 필드를 체크하기 위해 유저 아이디를 검증하고, 존재하면 패스워드 검증
    • 패스워드가 맞다면 /etc/passwd 파일의 마지막에 설정되어있는 SHELL 변수에는 로그인 쉘을, USER와 USERNAME 변수에는 로그인 이름을 할당
    • 로그인이 끝나면 /etc/passwd 파일에서 유저 라인의 마지막 단계에 입력되어 있는 프로그램을 실행. 일반적으로 배시 쉘로 설정되어 있음

쉘 초기화 파일들

  1. /etc/profile
    • 시스템 전역 쉘 변수 초기화
    • 유저가 쉘에 로그인하면 가장 먼저 이 곳의 파일을 읽음. 이 파일에는 PATH, USER, LOGNAME, MAIL, HOSTNAME, HISTSIZE, INPUTRC 등의 쉘 변수들이 선언되어 있음
    • 전역 리드라인 초기화 파일인 /etc/inputrc 파일을 읽어들이도록 되어 있으며, 프로그램들의 전역 환경을 설정하는 파일을 포함하고 있는 /etc/profile.d 디렉터리를 읽어들이도록 구성되어 있음
  2. /etc/bashrc
    • 쉘 함수와 Alias를 위한 시스템 전역 변수 정의
  3. ~/.bash_profile
    • 유저 개인의 환경 설정 파일
    • 시스템 전역이 아닌 유저 자신만의 PATH와 시작 프로그램을 추가적으로 설정
  4. ~/.bashrc
    • 유저 개인의 Alias 및 변수 설정 파일
    • 유저 자신의 개인적 명령어 앨리아스를 정의할 수 있으며, /etc/bashrc 파일에서 시스템 전역 변수를 읽은 다음, 특별한 프로그램을 위한 변수를 설정할 수 있음
  5. ~/.bash_logout
    • 로그아웃 설정 파일
    • 로그아웃 절차를 포함하고 있음. ex) 로그아웃하면 터미널 윈도우가 사라짐
  6. source 명령
    • 쉘 환경 설정 파일 즉시 적용하기. . 명령도 같은 기능을 수행

Continue reading

리눅스 쉘과 명령어 기초

리눅스와 쉘

  • 쉘(Shell) : 운영체제에서 제공하는 명령을 실행하는 프로그램이며 운영체제의 관리하에 있는 파일, 프린팅, 하드웨어 장치, 애플리케이션과의 인터페이스를 제공한다
  • 즉, 운영 체제에서 제공하는 각종 명령들을 쉘 인터페이스에서 실행하면 운영체제가 그 명령에 해당하는 일을 수행
  • 쉘 스크립트 : 인터프리터로서 리눅스 시스템에서 지원하는 명령어들의 집합을 묶어서 프로그램화한 것

Continue reading

Pagination


© 2017. by Seongyun Byeon

Powered by zzsza