OS(Operating System)
- 컴퓨터의 성능을 높이고, 사용자에게 편의성을 제공을 목적으로 컴퓨터 하드웨어를 관리하는 프로그램
- 사용자와 컴퓨터 간의 인터페이스 역할을 하는 시스템 소프트웨어
- 어플리케이션과 하드웨어 사이에서 하드웨어와 어플리케이션을 관리하는 인터페이스적인 역할을 함.
종류
- window
- maxOS
- Linux
- RreeBSD
- SOLARIS
- SunCobalt
- redhat
Linux System
- 1991년 핀란드 헬싱키 대학의 리누스 토르발스가 취미로 만든 운영체제
- 리눅스 커널을 사용하는 운영체제
- Linux : Linus' *nix(리누스의 유닉스)
- 소스코드가 공개된 대표적인 오픈 소스 소프트웨어
- 모바일 운영체제 안드로이드의 기반으로 사용
- 수많은 개발자들이 오픈소스를 가지고 활동중
특징
- Multi-User, Multi-Tasking
- 다양하고 뛰어난 네트워크 환경 및 파일씨스템 지원
- 유연성과 확장성, 안정성, 보안성
- 우수한 가격대 성능비 : PC급 서버에서 Enterprise급 성능
- 다양한 응용프로그램 제공
- - 셀(Shell)과 기본 명령어 지원, X Window 시스템, 편집기 등등
- 다양한 배포판이 있음 (도움을 받을 수 있는 - 유료)
Architecture
위로 올라갈수록 밑을 제어, 관리한다고 생각

Shell
- 명령어나 유틸리티, 프로그램을 실행할 때 사용하는 인터페이스를 제공하는 프로그램
- 커널과 사용자 사이에서 명령어를 해석하여 전달
- 쉘 자체 프로그래밍 기능이 있음
- 사용자 환경 설정 기능을 제공
- sh, bash, csh 등등 (사용하는 문법도 다 다름)
- CLI(Command line interface)
- 쉘 확인 echo shell -> echo : 확인한다는 명령어
Linux Directory Structure
/(root)
/bin : Essential User Binaries
/dev : Device Files
/etc : Configuration Files
/home : User's Home Directories
/lib : Essential Shared Libraries
/usr : User Binaries
/var : Variable Cache/lock/lib/spool/mail
Client, Server
- 서버에 클라이언트가 접속하여 필요한 작업을 수행 (서버는 24시간 수행)
- 서버에 로그인하여 명령을 실행하기 위해서는 응용프로그램 필요
- 프로토콜
- ssh/telnet
- http/https
-ftp/sftp
-smtp
-pop3/imap
-nntp
Shell Commands
ls : 현재 디렉터리에 있는 파일과 디렉터리 목록확인
ls -a : 현재 디렉터리에서 숨겨진 파일과 디렉터리 목록 확인(all)
ls -l : 현재 디렉터리에서 파일과 디렉터리 목록을 자세히 확인(long)
ls -al: ls -a와 ls -l를 합친 명령어
ls -R : 자세히 출력
pwd : 현재 작업중인 경로 출력(절대경로)
cd : 원하는 디렉터리로 이동
mkdir : 새로운 디렉터리 생성
rmdir : 디렉터리 삭제
Path
절대경로
- 루트 디렉터리로 시작하여 원하는 디렉터리까지 경로를 기술
- 현재 위치와는 상관없음.
상대경로
- 현재 위치를 기준으로 원하는 디렉터리를 기술하는 방식
- ./ : 현재 디렉터리를 의미
- ../ : 상위 디렉터리를 의미
Command
cat
cat [옵션] [파일명]
옵션
-n : 모든 라인 앞에 라인 번호 출력. (빈 라인도 번호 출력)
-b : 비어 있지 않은 라인에만 번호 출력
-E : 라인의 마지막에 $ 기호 출력. (빈 라인도 $ 기호 출력)
-T : 탭 문자를 ^I로 바꿔서 출력
-s : 두 번 이상 연속된 빈 라인(empty line) 출력 안함
-v : 탭(TAB)과 줄바꿈(LFD)을 제외한 nonprinting 문자를 ^, M-를 사용하여 표시
-e : -vE와 결과 같음. 줄바꿈(LFD)을 포함한 nonprinting 문자 표시
-t : -vT와 결과 같음. 탭(TAB)을 포함한 nonprinting 문자 표시
-A : -vET와 같음. 탭(TAB), 줄바꿈(LFD)을 포함한 nonprinting 문자 표시
rm
- 파일이나 디렉터리를 삭제하는 명령어
- 삭제 후 취소하는 명령어가 없음.
- rmdir 디렉터리에 하위폴더나 파일이 없을 때 삭제하는 명령어
- 디렉터리내에 하위폴더나 파일을 모두 삭제 : rm -rf
ln
- 리눅스 파일 시스템에서 파일 링크를 만드는 명령어
- Hard link : 파일의 I-node를 공유해서 사용 - ln [원본] [링크이름]
- Symbolic link : window의 바로가기와 같은 링크 - ln -s [원본] [링크이름]
IO Redirection
표준스트림을 다른 경로로 재지정
> : 파일에 작성
>> : 파일에 추가
2>&1 : stderr를 stdout으로 재지정할 때 사용
cat > 파일이름 : 파일에 작성하고 나서 ctrl + d 누르면 저장
Pipe |
프로세스나 프로그램의 결과를 다른 프로그램으로 넘겨줄 때 사용
cat -n (앞에 번호 출력)
앞에서 사용한 결과물을 뒤에 명령어의 입력값으로 넘겨줌.
ex)
cat -n data.txt | grep Hello
|가 cat-n data.txt를 grep 명령어에 입력값으로 넘겨줌.
Ownership, Permission
리눅스에서는 파일과 디렉터리에 대해 소유권가 허가권을 설정할 수 있음
소유권 - 소유자와 소유그룹 설정
허가권 - read/write/execute
- rwxrw-r--
rwx : 소유자의 권한
rw- : 소유그룹의 권한
r-- : 사용자의 권한
chmod
파일이나 디렉터리의 permission 변경
-rw-rw-r-- -> rwxr-xrw-
Absolute mode : 숫자로 설정
chmod 756 list.txt
Symbolic mode : u/g/o/a, +/-/=
chmod u+x list.txt
chmod g-w+x list.txt
chmod o+w list.txt
umask
새로 만들어진 파일 또는 디렉터리의 권한을 어떻게 설정할 지 제어하는 마스크 설정
파일의 기본허가권 : 666, rw-rw-rw-
디렉터리의 기본 허가권 : 777, rwxrwxrwx
뒤에 3자리가 umask
touch : 빈 파일 생성 touch [파일명]

chown, chgrp
시스템 관리자를 위한 명령어
chown : 파일이나 디렉터리 소유자 및 소유그룹 변경
- chown user:group filename(or directory) : 파일에 대하여 소유자와 소유그룹을 변경
- chown -R user:group directory
chgrp : 파일이나 디렉터리 소유그룹 변경
su, sudo
시스템 관리자를 위한 명령어
su : 현재 계정에서 다른 사용자로 로그인
- 로그인하려는 계정의 암호 필요
- su : su root
- su - : 다른 계정 로그인 + 로그인 계정의 쉘 환경 사용
sudo : 슈퍼유저의 보안 권한으로 프로그램을 실행할 수 있게 해주는 명령어
- sudoers에 등록된 사용자만 사용가능
- root의 암호가 아니라 현재 로그인된 암호를 사용하면 됨.