7.Linux
UNIX에 대해
UNIX는 미국의 AT&T사의 벨 연구소에서 개발되었다. 다양한 시스템에서의 이식성, 멀티태스킹과 다중 사용자를 지원하도록 설계하였다.
UNIX는하나의 OS를 가리키는 말이 아니라 UNIX 표준에 근거하여 만들어진 OS의 총칭이다.
예전에는 워크스테이션(업무용 고성능 컴퓨터)등에서 사용하던 것이지만 최근에는 개인용 컴퓨터(PC)에서 작동하는
이른바 PC-UNIX가 증가하고 있다. Linux도 PC-UNIX 중의 하나이다.
*워크스테이션 : 과학기술연산 및 공학 설계 등 전문 분야의 작업을 고려한 고성능 컴퓨터이다.
UNIX(Linux)는 원래 명령을 직접 입력함으로써 관리나 조작을 하는 CUI환경이 중심이다. 또한 서버로서의 실적이 많아 기업이나 학교등 대규모 네트워크에 도입하는 경우가 많다. 개인 컴퓨터용 OS로는 별로 사용되지 않았지만 최근에는 Windows와 Mac과 같이 직관적으로 조작할 수 있는 GUI환경도 마련되어 있다.
UNIX의 발전
Linux는 1991년 당시 핀란드의 대학생이었던 Linus Torvalds가 개발했다. 처음에는 단순한 커널이었으나 무료로 이용할 수 있는 OS의 수요에 대처하는 형태로 널리 보급되었다. 소스 코드가 공개(오픈 소스)되었기 때문에 많은 기능이 추가되고 있다. 현재는 초보자도 다루기 쉬운 Linux 디스트리뷰션(제품)이 몇가지 개발되었다. 저비용으로 도입할 수 있기 때문에 기업에서도 많이 도입하고 있다.
*CUI(Character User Interface)
문자기반사용자 인터페이스로 명령 프롬프트에서 명령을 직접 입력하여 실행한다.
*오픈소스
소스코드를 일반에게 공개하고 있는 상태를 말한다.
*디스트리뷰션
기업이나 단체가 독자적인 도구나 지원 등의 서비스를 추가하여 패키지로 만들어 배포하는 형태.
Linux의 개요
Linux는 1991년에 Linus Tovalds가 개발한 PC용 UNIX(PC-UNIX) 중 하나이다.
Windows나 Mac과 같이 개인사용OS로이용하기 보다 주로 웹서버와 같은 서버로 이용한다.
Linux는 오픈소스의 개념을 도입해서 사용자에 의해 개선 및 신기능의 개발이 이루어진다.
Distribution(배포형태)
Linux 자체는 오픈소스이지만 실제로는 기업이나 단체가 독자적인 도구나 지원등의 서비스를 추가해서 패키지로 만들고 있다.
종류 | 주요 용도 |
---|---|
Arch Linux | 범용 |
CentOS | 서버 |
Fedora | 범용 |
Red Hat Enterprise Linux | 서버, 메인 프레임 |
Ubuntu | 데스크탑, 서버 |
TurboLinux | 데스크탑, 서버 |
디스트리뷰션에는 유료, 무료가 있고 다운로드, 패키지, 잡지등의 부록 CD-ROM 등을 통해 배포된다.
Linux의 조작 환경
Linux 시스템의 구성
Linux는 서버로 이용하는 경우가 많기 때문에 대부분 CUI환경에서 사용한다. 즉, 단말(터미널)에 명령을 이용하여 작업을 수행한다.
로그인과 로그아웃
Linux의각 기능을 이용하려면 미리 주어진 사용자 계정과 비밀번호를 이용해서 로그인을 해야한다. 또한 모든 작업을 종료하면 로그아웃한다.
로그인: login: 이라고 표시되면 사용자 계정을 입력하고 엔터키를 누르고, Password:가 표시되며 비밀번호를 입력하고 엔터키를 누른다.
로그아웃 : exit 또는 logout을 입력하고 엔터키를 누른다.
who : who 명령을 사용하면 현재 로그인한 사용자를 확인할 수 있다.
localhost는 서버명, '~'는 현재 디렉터리를 나타태는 기호이다.
슈퍼 유저 : 관리자 권한을 가지고 있으며 계정명은 root이다. 슈퍼 유저는 소프트웨어의 설치나 삭제, 환경 설정 등 시스템 전체를 조작할 수 있다.
파일의 종류
Linux에서 취급하는 파일은 일반 파일, 디렉터리, 특수파일 세종류로 나눌 수 있다.
- 디렉터리 : 여러개의 파일을 모아서 관리한다. (Windows의 폴더에 해당한다)
- 홈 디렉터리 : 로그인 후의 초기 디렉터리
- 일반 파일 : 데이터나 프로그램 등이 기록되어 있는 파일
- 심볼릭 링크 : 다른 파일을 별명으로 관리할 수 있는 파일 (Windows의바로가기에 해당)
디바이스 파일 : 컴퓨터의 주변 기기(디바이스)를 제어하는 파일. dev폴더 하위에 있다.
퍼미션(Permission)
파일이나 디렉터리에 대해 사용자나 그룹이 갖고 있는 읽기, 쓰기, 실행 권한을 말한다.
User, Group, Other의 권한.퍼미션 확인
ls -l 을 입력하면 파일 목록이 표시되면서 퍼미션과 관련된 정보를 확인할 수 있다.
- 파일의 종류 : (d 디렉터리 / s 심볼릭링크)
- User의 파일 권한 : rwx 읽기/쓰기/실행(권한이 없으면 '-'로 표시)
- Group의 파일 권한 : User와 동일
- Other의 파일 권한 : User와 동일
파일 조작
명령어 | 용도 |
---|---|
cd | 현재 디렉터리를 변경한다. 파라미터가 없으면 홈디렉터리로 이동한다. |
pwd | 현재 디렉터리의 절대 경로를 나타낸다. |
ls | 디렉터리의 정보 목록을 나타낸다. |
mv | 파일명을 변경하거나 파일을 이동한다. |
cp | 파일을 복사한다. |
mkdir | 새로운 디렉터리를 작성한다. |
rm | 파일이나 디렉터리를 삭제한다. |
cat | 파일 내용 조회 |
파이프
명령과 명령을 '|' 파이프로 연결하여 앞 명령에서 얻어지는 결과를 뒷 명령에 전달하는 것을 의미한다.
ls 명령의 결과 디렉터리,파일 목록이 grep 명령으로 전달되어 해당 목록 중에서 web이라는 문자를 포함하는 행을
검색한다.
ls | grep wep리다이렉트(Redirect)
표준 입력, 표준 출력, 오류 출력의 입출력 위치를 변경하는 기능이다.
입력원을 지정하려면 '<'
출력처를 지정하려면 '>', '>>'를 사용한다.
- ls 명령으로 조사한 Maildir 디렉터리의 파일명/디렉터리명 목록의 정보를 sample.txt 파일에 저장한다. ls Maildir > sample.txt
텍스트 에디터(Text Editor)
Linux에서 텍스트 에디터는 아주 중요한 애플리케이션이다.
텍스트 에디터란, 텍스트 파일을 편집하기 위한 애플리케이션이다.
<종류>
- vi
- Vim
- Emacs : 소스코드의 편집, 메일 등의 기능이 있다.
프로세스와 데몬
실행하고 있는 프로그램
프로세스의 확인
ps 명령은 현재 시스템상에서 작동하고 있는 프로세스의 목록을 표시하는 명령이다.
ps -aux 라고 입력하면 모든 프로세스를 확인할 수 있다.
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER : 사용자명
- PID : 프로세스번호
- TTY : 단말
- COMMAND : 프로세스의 커맨드명
프로세스의 강제 종료
'Kill -9 프로세스번호' 라고 입력하면 강제 종료가 가능하다.
시그널번호 9에 의해 강제 종료된다.
kill -9 143
데몬
Linux에서는 시스템을 유지시키기 위해 필요한 프로세스를 상주시키고 있다. 이런 상주 프로그램을 '데몬'이라고 한다.
Daemon은 수호신을 뜻한다.
데몬 프로그램의 이름 끝에는 'd'가 붙어있다.
대표적인 데몬 | 동작 |
---|---|
syslogd | 시스템 로그를 기록한다. |
devfsd | 하드웨어를 설정한다. |
crond | 프로세스를 정기적으로 실행한다. |
inetd | 인터넷 서비스를 제공한다. |
httpd | 웹서버 서비스를 제공한다. |
ftpd | ftp 서버 서비스 제공 |
GUI
X Window 시스템
UNIX 상에서 윈도우 환경을 제공하는 프로토콜이다. 1987년부터 이용되어왔다.
윈도우는 GUI의 기본이다.
- 대부분의 Linux 디스트리뷰션에서 GUI의 데스크탑 환경을 채택하고 있다. 'GNOME', 'KDE' 등이 있다.
Shell
쉘은 프로그램을 실행하기 위한 인터페이스이다.
UNIX서버에서 주로 이용하는 명령줄 환경에서는 서버가 입력한 명령을 쉘이 해석하여 커널에 지시를 내린다.
UNIX 쉘에는 여러 종류가 있고, 각각 갖고 있는 기능이 다르다.
종류 | 설명 |
---|---|
B 쉘(Bourne Shell) | 가장 기본적인 쉘 (명령어 : sh ) |
K 쉘(Korn Shell) | UNIX의 표준 쉘 (명령어 : ksh) |
C 쉘 | b쉘을 C 언어풍으로 개선한 쉘 (csh) |
tcsh (TENEX C Shell) | c쉘의 사용자 인터페이스를 개선한 쉘 |
bash(Bourn Again Shell) | Linux의 표준 쉘, b쉘의 사용자 인터페이스를 개선한 쉘 |
zsh | tcsh, bash 기능 합친 쉘 |
사용자는 취향에 맞게 쉘을 바꿀 수 있다.
GUI를 가진 쉘을 Graphical Shell 이라고 한다. Windows의 탐색기나 Mac OS의 finder 등도 포함된다.