Linux 개요, 명령어와 디렉토리 Suckzoo
Linux 다중 사용자, 멀티 태스킹, 다중 스레드를 지원하 는 네트워크 운영 체제(NOS) 자유 소프트웨어와 오픈 소스 개발의 가장 유명한 표본
Linux의 특징 멀티유저 시스템을 지원 가볍고 안정적 서버로서 많이 선택 받는다. 무료, 소스코드가 공개되어 있음
배포되는 Linux Fedora, Ubuntu, CentOS, BSD, Debian 등 다양 한 OS가 무료로 배포되고 있다. 거울을 통해 CentOS, debian, fedora, bsd, ubuntu가 미러링 되는중. (chicken도?)
Linux 구조 - Linux Kernel 운영체제의 핵심 부분. 세부적인 기능은 아래와 같다. 프로세스 관리 메모리 관리 파일 시스템 관리 디바이스 관리 네트워크 관리 지속적으로 이용되므로 보호된 메모리에 적재된다.
Linux 구조 – Linux Shell Shell : 껍데기 OS를 둘러싼 껍데기라고 할 수 있다. 명령어를 입력 받아 컴퓨터가 이해할 수 있는 0과 1로 된 명령어로 바꾸어 커널에 전달해주는 역할 을 한다.
리눅스의 디렉토리 구조 /bin /sbin /boot /tmp /dev /usr /etc /var /home /lib /media /proc /opt /root
/home, /root /home은 일반 사용자들의 홈 디렉토리. /root는 루트의 홈 디렉토리.
/bin, /sbin /bin /sbin 일반사용자가 리눅스를 사용할 때 쓰는 각종 유틸리티가 들어있는 디렉토리 일반사용자가 리눅스를 사용할 때 쓰는 각종 유틸리티가 들어있는 디렉토리 (ex : cat, chmod, ls) /sbin 루트유저가 시스템 관리에 필요한 유틸리티가 들어있는 디렉토리
/boot, /dev /boot /dev 부팅에 필요한 필수적인 파일들이 모인 디렉토리 장치 파일, 특수 파일이 들어있는 폴더 부트로더, 커널이 위치한다. /dev 장치 파일, 특수 파일이 들어있는 폴더
/etc, /lib /etc /lib 시스템의 전반적인 관리 파일이 들어있는 디렉토리 계정 정보, 비밀번호, 스케줄링 등에 관련된 파일이 있음 static file이어야 한다. static file : 사용자 권한 없이 변경할 수 없는 파일. /lib 시스템을 부트 하거나 혹은 그 외에 root에 관련된 파일 을 이용할 때 자주 쓰이는 라이브러리 파일을 담고 있다. 라이브러리 : 하위 프로그램들의 모임
/media, /proc /media /proc 외부 저장매체(ex : usb memory)를 mount하여 하위 디렉토 리인 것 같이 사용할 수 있는 디렉토리 /proc 실행되고 있는 프로세스, 사용중인 디바이스, 커널이 수집한 하드웨어 정보가 저장된다. /proc/meminfo – 메모리 사용 현황 /proc/stat – 시스템 상태 /proc/uptime – 부팅 후 흐른 시간 /proc/version – 실행되고 있는 커널 버전 각 프로세스는 고유의 식별자(PID)를 가진다. PID를 이름으로 갖는 디렉토리들이 /proc의 하위 디렉토리로 존재 하며, 그 안에 각종 정보가 저장됨.
/opt, /tmp /opt /tmp 기본적으로 설치되는 프로그램을 제외한 소프트웨어들과 애드온들이 설치되는 디렉토리이다. 기본적으로 설치되는 프로그램을 제외한 소프트웨어들과 애드온들이 설치되는 디렉토리이다. bit에는 scala가 깔려있는 듯 /tmp 임시파일들이 저장되는 장소 linux 종료 시 모든 파일이 삭제됨.
/usr /usr /bin, /usr/bin, /usr/local/bin의 차이 시스템에 빌드하는 프로그램들의 소스나 매뉴얼 등을 포 함하고 있는 디렉토리이다. /usr/src : 시스템에 빌드하는 프로그램들의 소스 /usr/share : 매뉴얼 등의 자료 /usr/local : 잡다한 것들 /bin, /usr/bin, /usr/local/bin의 차이 /bin은 리눅스를 돌리기 위한 최소한의 것들을, /usr/bin은 콘솔에서 확장된 것이나 Xwindow 관련 프로그램 등이, /usr/local/bin은 잡다한 프로그램들이 위치해있다.
/var 자주 바뀌는 데이터들을 모아놓은 디렉토리 /var/lib /var/log /var/run /var/tmp 시스템 운용 시 계속 바뀌는 파일들이 담김 /var/log 각종 로그들 저장 /var/run 시스템 정보를 담음. 부팅시 초기화된다. /var/tmp /tmp보다 좀 더 오래 유지되야 하는 것들이 담긴다. 부팅시 초기화되지 않는다.
Commands 계정 관련 Shell 관련 매뉴얼 Path 관련 파일 관련 출력 passwd chsh man pwd cd ls cp, rm, mv mkdir, rmdir tar 출력 cat, more, less, wc grep touch, vi
Commands 권한 프로세스 시스템 원격 접속 와일드카드 pipe(|) 리디렉션 히스토리 chmod, chown, chgrp su, sudo 프로세스 signal ps, kill jobs, bg, fg background process(&) 시스템 halt, reboot, shutdown init 원격 접속 ssh, scp 와일드카드 pipe(|) 리디렉션 히스토리
passwd (password) 계정의 비밀번호를 바꾼다. 사용법 passwd를 친다 원래 비밀번호를 친다 새 비밀번호를 친다 끗
chsh (change shell) 사용하는 shell을 바꾸어 준다. 기본으로 사용하는 shell은 /bin/bash echo $SHELL : 현재 이용중인 shell 출력
man (manual) 프로그램의 사용방법을 출력해주는 명령어 용법 : man [command] man ls
pwd (print working directory) 현재 작업중인 디렉토리를 표시해준다. 예 : /home/suckzoo에서 작업 중이면
cd (change directory) 작업중인 디렉토리를 다른 디렉토리로 변경한다. 용법 : cd [target]
ls (list) 파일들을 나열하는 명령어 option -l(long) -a(all) -R(recursive) 권한, group, owner 등 자세한 정보 표시 -a(all) 숨겨진 파일까지 다 보여짐 -R(recursive) 디렉토리 안의 디렉토리 안의 … 디렉토리 까지 전부 나온다. -d(directory) 디렉토리 내부 컨텐츠가 아니라 디렉토리 그 자체의 정보를 출력한 다. ls –d public_html vs ls public_html
cp (copy) 파일을 복사한다. 사용법 : cp [option] [source] [target] option -r(recursive) : 해당 파일과 그 하위파일까지 전부 복사 디렉토리 복사 시 사용 가능.
mv (move) 파일을 이동(잘라내기+붙이기)한다. 사용법 : mv [option] [source] [target] -r(recursive) : 해당 파일과 그 하위파일까지 전부 이동 디렉토리 옮길 때 쓸 수 있음.
rm (remove) 파일을 삭제한다. 사용법 : rm [option] [source] option -r(recursive) :해당 파일과 그 하위파일까지 전부 삭제 디렉토리 통으로 삭제시 이용 가능. 조심조심 쓰자. 잘못 쓰다 날라가면 죽슴다 ㅠㅠ
mkdir (make directory) 디렉토리를 새로 만든다. 사용법 : mkdir [option] [target] option -p : 해보세요 mkdir –p h/e/l/l/w/o/r/l/d cd h cd e cd l …
rmdir (remove directory) 비어있는 디렉토리를 지울 때 쓴다. 사용법 rmdir [option] [target] option -p : 하위 디렉토리를 모조리 지운다. 단, 모든 하위 디렉토리가 비어있어야 한다. rm –r a vs rmdir –p a
tar 여러 파일을 모으고 압축한다. 사용법 : tar [cvxzf] filename file1 file2 … option -c(create) : 압축 하기 -v(verbose) : 진행상황 화면에 보여주기 -x(extract) : 압축 풀기 -z(gzip) : gzip으로 압축/해제 -f(file) : 압축 결과를 파일로 저장하기
tar 파일 모으기 모으고 압축까지 한번에 (tar.gz) tar.gz 풀기 alzip.tar 파일로 a.a, b.b, c.c, d.d를 모으는 방법 tar cvf alzip.tar a.a b.b c.c d.d 모으고 압축까지 한번에 (tar.gz) alzip.tar.gz 파일로 a.a b.b c.c d.d를 모으고 압축 tar cvzf alzip.tar.gz a.a b.b c.c d.d tar.gz 풀기 gunzip alzip.tar.gz -> tar xvf alzip.tar 를 한방에! tar xvzf alzip.tar.gz
cat(concatenate) 파일 내용 읽기, 합치기 할 때 쓴다. 사용법 cat [filename] 파일을 읽는다 cat [a] [b] > [c] a와 b의 파일 내용을 합친 것을 c로 저장한다. cat –n [filename] 줄 번호가 나오게 파일 내용을 출력한다.
more 내용을 앞에서부터 화면에 꽉 차게 출력시킨다. 엔터를 눌러서 한 줄씩 이동 스페이스바를 통해 한 페이지씩 이동 q로 나간다.
less more보다 더 많은 기능 지원 사용법 : less [filename] less로 파일을 불러와보자. /[keyword] : [keyword] 찾기 n으로 이전, N으로 다음 키워드 찾기. :[line] : [line]번 줄로 이동 무려 편집기능도 제공한다. v를 눌러보세요 q로 나간다. 그 외 http://linuxaria.com/howto/bash-linux-less?lang=en
wc(word count) 줄 수, 단어 수, 바이트 수를 세준다. wc [filename]
grep (global/regular expression/print) 텍스트 검색 기능을 가진 명령어 주어진 정규표현식(regular expression)과 맞는 줄을 찾아 출력 grep [option] [keyword] [file] option -i : 대소문자 구분 엑스 -w : 독립적인 단어로 검색 -w로 apple을 찾으면 pineapple을 가진줄은 출력이 안된다.
Regular Expression
touch 수정 시간을 손대는 명령어 용법 : touch [option] [file/time] option 만진다. 수정 시간을 손대는 명령어 용법 : touch [option] [file/time] option -r [file1] [file2] file2의 수정시간을 file1과 같게 한다. -t [time] [file] file의 수정시간을 time이 되게 한다.
vi 편집기이다. 다들 한번쯤은 써봤을 것이므로 패스한다. vi의 사용법 http://vim-adventures.com/
권한 말 그대로 권한. 파일을 접근할 수 있는지 여부를 사용자/그룹/그외 로 나누어 8진수로 표현.
권한 설정에 8진수 쓰기 ls –l 해보면 요기에 –rwxrwxrwx 이런애들이 8진수에 대응 ex) catAndDog.c -rw-r—r-- : (4+2)(4)(4) -> 644 ex2) catAndDog -rwxrwxr-x : (4+2+1)(4+2+1)(4+1) ->775
sticky bit 모든 사용자가 사용할 수 있는 디렉토리에 적용 이 디렉토리 내의 파일을 others가 임의로 삭제할 수 없음 소유자만 삭제 가능 예 : /tmp 팔진수 세자리 앞에 1을 붙여 표현
SetUID, SetGID SetUID가 걸린 파일을 실행시키면 파일 소유자의 권한으로 프로그램을 실행한다. 8진수 세자리 앞에 4를 붙여 표현 SetGID가 걸린 파일을 실행시키면 파일 소유그룹 의 권한으로 프로그램을 실행한다. 8진수 세자리 앞에 2를 붙여 표현
chmod chmod 파일의 권한을 바꾼다. 용법 : chmod [permission] [file] 혹은, +, -, r, w, x 등을 이용하여 설정 가능 u : user, g : group, o : others, a : all ex : chmod ug+wx a 유저, 그룹에게 a의 쓰기/실행 권한 부여
chown, chgrp chown chgrp 파일 주인을 바꾼다. 용법 : chown [owner] [file] 루트밖에 못한다. chgrp 파일 소유 그룹을 바꾼다. 용법 : chgrp [group] [file]
su (subsitute user) 유저 전환하기. 용법 : su [username] username이 비면 root로 전환 시도. password 필요.
sudo(substitute user do) /etc/sudoers에 유저가 기록되어 있어야 함. 다른 유저의 권한으로 어떤 프로그램을 실행시킴. sudo [option] [process] option -u [username] : username의 권한으로 실행 -u가 없으면 root로 인식.
Signal 프로세스간 의사소통을 위해 보내는 신호
jobs, ps jobs ps 현재 작업중인 프로세스들을 출력한다. 마찬가지로 현재 작업중인 프로세스들을 출력한다. 용법 : ps [option] option -u : CPU, memory 점유율 등 보다 다양한 정보 표시 -a : 모든 유저가 사용하는 프로세스 표시 -U [user] : [user]가 사용하는 프로세스 표시
kill 프로세스를 파.괘.한.다 용법 : kill [option] [pid] option -[signal] : PID가 [pid]인 프로세스에게 [signal]을 보냄 -l [signal] : [signal]이 어떤 신호인지 출력
bg(background), fg(foreground), & fg [process] [process]를 foreground 상태로 만든다. foreground 실행되고 있으며 유저에게 보이는 프로세스 bg [process] 프로세스를 background에서 실행되게 한다. background 실행되고 있지만 유저에게 보이지 않는 프로세스 [process] & 프로세스 뒤에 &를 붙이면 background 상태로 시작한다.
halt, reboot halt reboot -f 붙이면 “강제”로 컴퓨터 종료 시스템을 종료합니다 뚜룽 루트만 가능 재부팅 한다. -f 붙이면 “강제”로 컴퓨터 종료
shutdown 무려 시간 예약 기능이 있음 시스템 종료 or 재부팅 용도 용법 : shutdown [option] -h [time] : time에 시스템 종료 [time]에 들어갈 수 있는 것들 10 -> 10분 15:10 -> 15시 10분에 종료 (hh:mm) now -> 롸잇 나우 -r [time] : time에 재부팅 시작 -c : shutdown 명령 취소
init Run-level 용법 : init [runlevel] 루트만 가능. 리눅스는 시스템이 가동되는 방법을 7가지로 나눔 이를 런레벨이라고 함. 0 : 종료(halt) 1 : 단일 사용자 모드(시스템 복구에 이용) 3 : 다중 사용자 모드(텍스트 로그인) 5 : 다중 사용자 모드(Xwindows 로그인) 6 : 재부팅 2,4는 사용 엑스 /etc/inittab에 각 런레벨이 정의되어있다. 용법 : init [runlevel] 루트만 가능.
ssh (Secure Shell) 원격 컴퓨터에 접속하여 작업할 수 있게 해준다. 용법 : ssh [user@computer]
scp (Secure Copy) 암호화된 명령을 통하여 파일을 전송하는데 사용 용법 scp [file] [user@computer:directory] 마찬가지로 user@부분이 비어있으면 원래 계정과 같은 아이디로 접속 시도.
Wildcard *? * ? 0개 이상의 문자를 상징. ex : suck* 딱 1개의 문자를 상징 ex : ?parcs suck, suckz, suckzo, suckzoo, suckza … ? 딱 1개의 문자를 상징 ex : ?parcs oparcs, pparcs, qparcs, rparcs, sparcs, tparcs, …
Pipe 한 명령어의 output이 다른 프로그램의 input으 로 연결된다. standard i/o임. ex 쐬빠이쁘 한 명령어의 output이 다른 프로그램의 input으 로 연결된다. standard i/o임. ex ps aux vs ps aux |more ps aux | grep bash yes – 끊임없이 y를 출력하는 프로그램 계속하시겠습니까?(y/n)이 귀찮을 때 yes | [command]
Redirection Standard In/out >[a], 2>[b] >>, 2>> stdin : 키보드 입력 stdout : 모니터 출력 stderr : 모니터 출력(에러) >[a], 2>[b] 출력 리다이렉션 정상 출력 결과는 [a]로, 에러는 [b]로 보낸다. ex : ls /tmp /tmpp > output.txt ex : ls /tmp /tmpp 2> output.txt ex : ls /tmp /tmpp > /dev/null ex : ls /tmp /tmpp 2> /dev/null >>, 2>> >, 2>와의 차이점은 파일을 새로 만들지 않고 파일 끝에 붙인다 는 점이다.
Redirection 표준 출력과 에러를 동시에 리다이렉션하기 < [a] &>[file] >&[file] mail mother < “give me $1” </dev/random 입력으로 랜덤한 값을 넣는다.
History 컨트롤+R을 눌러보세요 이전에 쳤던 명령어나 키워드 아무거나 쳐보세요 !keyword -> 컨트롤+R 이전에 실행된 것들 중 keyword를 포함한 이전에 실행했 던 명령을 다시 실행할 수 있음.
Reference SPARCS 11’ cling 선배님의 세미나자료 Wikipedia