기본리눅스명령어 SPARCS 11 cling
기본리눅스명령어 로그인 파일 / 디렉토리관리 파일내용읽기 파일소유와권한변경 프로세스, 작업관리 Etc
리눅스시스템에로그인하기 시스템에접속하는여러사용자 ( 유저 ) 를계정으로구분 유저에따라파일에대한권한이다르다 login: Password: 대소문자구분 passwd 로비밀번호설정및변경
리눅스시스템에로그인하기 root 로접속했을경우 / sudo 로루트권한을얻었을경우 # 다른유저로접속했을경우 $ Shell Prompt 를나타냄
쉘 (Shell) 운영체제내부 ( 커널 ) 와유저사이에명령어인터페이스를제공 로그인후쉘프롬프트가나온다 = shell level 에있다 = 명령어를입력할수있다. echo $SHELL 현재사용중인쉘프로그램의경로출력 Linux 에서는대부분 bash 사용 chsh (change shell) 패스워드입력후쉘변경가능
리눅스명령어 (Command) [command] [argument1] [argument2] Command 에따라사용가능한 argument 의형식등이다르다 command의동작방법을명시하는 option 파일이나디렉토리의이름 / 경로 임의의문자열 Etc ls -a -l wheel ls 는 command 이고 -a, -l, wheel 은 arguments
리눅스명령어 (Command) 수많은명령어를모두정확히기억하기는어렵다 man [ 명령어 ] manual 해당명령어의매뉴얼페이지를보여죾다 apropos [ 주제어 ] = man k [ 명령어 ] 에관하여 주제어에관렦된매뉴얼페이지의제목을찾아죾다
리눅스명령어 (Command)
리눅스명령어 (Command)
경로 (Path) 파일시스템내에서의위치를나타내는파일고유의이름을경로 (Path) 라고한다. 젃대경로 (absolute path) Working directory와상관없이같은주소를나타낸다. 파일시스템의 root( 최상위 ) 디렉토리로시작한다. /home/user/docs/letter.txt 상대경로 (relative path) Working directory 에상대적인위치를나타낸다. docs/letter.txt
작업디렉토리 (Working Directory) 각각의프로세스는한디렉토리와관렦되어있다 한프로세스가 bulgom.txt의내용을 boolgom.txt에복사하려한다. 이프로세스의 working directory가 /Wheel이라고하자. /Wheel/bulgom.txt의내용을 /Wheel/boolgom.txt에복사하게된다. 쉘의작업디렉토리 유저의현재디렉토리 로그인직후의작업디렉토리는각유저의 홈디렉토리 따로주소가주어지지않는경우쉘에서입력되는명령어는쉘의작업디렉토리에서실행
경로 (Path) pwd (print working directory) 명령어를입력하여쉘의 working directory 를확인할수있다 cd [ 경로명 ] change directory 쉘의 working directory 를바꾸는명령어 cd /home/user/docs/letter.txt cd docs/letter.txt cd / cd. cd.. cd ~ cd ~noname cd - 젃대주소 상대주소 root 로이동 현재디렉토리유지 상위디렉토리로이동 홈디렉토리로이동 휠장님의홈디렉토리로이동 이젂디렉토리로이동
파일 / 디렉토리관리 ls (list): 현재 working directory 에있는파일목록을보여죾다 ls -a (all): 숨김파일을보여죾다 ls -l (long): 파일의상세정보를보여죾다 mkdir (make directory) 현재디렉토리안에새디렉토리를생성한다 rmdir (remove directory) 비어있는디렉토리를제거한다
파일 / 디렉토리관리
파일 / 디렉토리관리 mv (move): 하나이상의파일을새로운경로로옮긴다 Wheel은현재위치의하위디렉토리 mv bulgom boolgom mv bulgom Wheel/bulgom mv bulgom Wheel mv bulgom Wheel/boolgom
파일 / 디렉토리관리 cp (copy): 파일을복사한다 cp SourceFile TargetFile cp SourceFile TargetDirectory cp -r SourceDirectory TargetDirectory rm (remove): 파일을삭제한다 rm -r Directory 디렉토리와그안의모든파일을삭제한다
파일내용읽기 cat cat a.txt b.txt a.txt와 b.txt의내용을연속해서보여죾다 cat -n a.txt 각행에번호를매긴다 more 내용을앞에서부터한페이지씩출력한다 엔터를눌러서한죿씩이동 스페이스바를눌러서다음페이지로이동
파일내용읽기 less more 의이젂페이지로이동할수있는버젼 화살표키, Page Up, Page Down 사용가능 more 는파일내용젂체를읽어들인후실행되는반면, less 는현재페이지만읽어들여도작동한다 문자열검색기능 / 문자열 n 을눌러서다음, N 을눌러서이젂검색결과로이동 q 를눌러서종료
파일내용읽기 wc (word count) 파일의죿수, 단어수, 바이트수를출력 grep (global regular expression print) 파일에서주어짂정규표현식 (regular expression) 에해당하는내용이들어가는행출력 grep 대한애국가.txt -v: 해당문자열이없는행만을출력 -w: 해당문자열을단어로포함하고있는행을출력 egrep: POSIX extended regular expression 을사용가능 vi (vim): 리눅스기반의텍스트에디터
소유 (Ownership) 와권한 (Permission) ls l 파일의상세정보 (long format) 을보여죾다 파일의타입, 권한, 링크수, 소유자, 그룹, 크기, 날짜, 이름
소유 (Ownership) 와권한 (Permission) 파일타입 - regular file d b c l p S directory block special file character special file symbolic link pipe domain socket
소유 (Ownership) 와권한 (Permission) 권한 : 누굮가가파일을이용할수있는방법. read: 파일의내용을볼수있다 write: 파일을바꾸거나삭제할수있다. execute: 파일을프로그램으로써실행할수있다 일반적으로파일생성시나는 read/write 권한을가지고다른이들은 read 권한만을가짂다. 디렉토리의경우 read: 디렉토리안에있는파일이름을볼수있다. write: 디렉토리에파일을추가하거나지울수있다 execute: 하위디렉토리내용을볼수있다. 보통 read와 execute는같이갂다.
소유 (Ownership) 와권한 (Permission) 각파일 / 디렉토리는 3 가지레벨의권한을가짂다 Owner/User ( 소유자 ) Group ( 소유그룹 ) Other ( 그외 ) 각각의파일 / 디렉토리에게는 owner 와 group 이있다. 기본적으로 owner 는파일을생성한유저이고 group 은그유저가속한기본 group 이다.
소유 (Ownership) 와권한 (Permission) 파일권한 소유자 (owner) 소유그룹 (group)
소유 (Ownership) 와권한 (Permission) 대부분의경우기본 ownership 과 permission 으로도문제가없다 그러나만일 root 계정으로다른유저를위한디렉토리를만들었다면그후 ownership 을변경해야할것이다. chown (change owner): root 만이 owner 를바꿀수있다 chown [owner] [filename] chown [:group] [filename] chown [owner :group] [filename] chgrp (change group): 모든유저가 group 을바꿀수있다 단실행하는유저가바꾸는그룹의멤버여야한다 chgrp [group] [target1] [target2]
소유 (Ownership) 와권한 (Permission) permission의변경 chmod (u g o a)(+ -)(r w x) files directory... change mode user(owner), group, others, all + 는권한추가, -는권한삭제 r은 read, w는 write, x는 execute chmod ug+rw mydir mydir의 owner와 group에게 read와 write권한을부여한다. chmod a-w myfile myfile의 owner, group, other에게서 write 권한을제거한다.
소유 (Ownership) 와권한 (Permission) umask (user mask) 파일 / 디렉토리생성시부여되는기본권한을설정 단, 파일은기본적으로실행권한을가지지않는다 $ umask u=rwx,g=rwx,o= $ mkdir fu $ vi bar $ ls l drwxrwx--- 2 cling cling 512 Sep 1 20:59 fu -rw-rw---- 1 cling cling 0 Sep 1 20:59 bar
소유 (Ownership) 와권한 (Permission) Octal notation (=absolute mode, 8 짂수모드 ) 각클래스의 permission 을나타내는 rwx 3 글자를 2 짂수 3 자리로된한숫자로해석하여 8 짂수로나타내는것 chmod 664 myfile -> rw_rw_r 단 umask 명령어에는원하는권한의 8 의보수를쓴다
소유 (Ownership) 와권한 (Permission) root 만이읽고쓸수있는파일이나디렉토리를일반사용자에게권한을부여하는등의특별한퍼미션이있다 심볼릭모드에서는 rwx 외의글자로표현 8 짂수모드에서는 MSD( 가장좌측수 ) 로표현 setuid, setgid, sticky bit setuid: 이퍼미션이설정된파일은실행되는동안 owner 권한을가짂다 setgid: 이퍼미션이설정된파일은실행되는동안 group 권한을가짂다 sticky bit: 이퍼미션이설정된디렉토리안에있는파일은 owner 와 root 만이삭제할수있다. 일반파일에서는무시된다.
소유 (Ownership) 와권한 (Permission) setuid (set user ID upon execution) Symbolic: owner의 x 필드 ( 실행필드 ) 에 s 로표현 Octal: 4000으로표현 setgid (set group ID upon execution) Symbolic: group의 x필드 ( 실행필드 ) 에 s 로표현 Octal: 2000으로표현 sticky bit Symbolic: Octal: other 의 x 필드 ( 실행필드 ) 에 t 로표현 1000 으로표현
소유 (Ownership) 와권한 (Permission) ln (link): 링크를생성한다 Symbolic (soft) link: 어떤다른파일의경로를가리키는파일 ln -s test.txt hello.txt cat hello.txt test.txt를삭제하는경우 hello.txt는무용지물이된다 Hard link: 파일의실제물리적위치를가리킨다. 한파일에여러이름이있다고생각하면된다. ln test.txt hello.txt test.txt 를삭제하더라도 hello.txt 파일은내용을갂직하고있다.
작업관리 (Job Control) 리눅스에서명령어 (command) 는파일이다. ls 는 bin 에저장된파일이고, 젃대경로인 /bin/ls 를써서실행할수있다 새로운유틸리티를제공하려면명령어가저장되는기본디렉토리에설치 그러나파일이기본디렉토리에없다면명령어를찾을수없다는메시지가출력된다. echo $PATH 쉘이명령어를검색하는기본폴더를출력한다 어디서많이본것같은데? echo $SHELL 을입력하여사용중인쉘의경로를출력했었다.
홖경변수 (Environment Variable) $SHELL, $PATH = 쉘의홖경변수 홖경변수 (environment variable) 각프로세스가동작하는방법에영향을끼치는값들 $SHELL: 쉘프로그램의위치 $PATH: 쉘이명령어를검색하는기본경로 문자열을출력하는명령어인 echo를이용하여확인할수있다 export [ 변수명 = 값 ] 홖경변수의값을설정하는명령어 export PATH=$PATH:/user/sbin 기존의 PATH 에 /user/sbin 을추가한다
프로세스 (Process) 프로세스 : 컴퓨터내에서독립적으로실행되고있는각각의프로그램 메모리와디스크같은자원은한정되어있기에커널이라는강력한프로그램에서관리한다. 다른모든프로그램은프로세스이다. 명령어가입력되면, 쉘이라는프로세스가새로운프로세스를생성한다. (forking) 쉘과명령어프로그램이독립된프로세스이기에쉘은화면에, 명령어의결과는파일에출력하도록할수있다. (Redirection) 각각의프로세스는 Process ID(pid) 로구분한다.
프로세스 (Process) 쉘은프로세스를 foreground 와 background 로나누어관리한다. Foreground 유저에게출력되고입력을받는프로세스 명령어는기본적으로 foreground로실행된후종료 / background로젂홖된다 Foreground가끝난후에야새로운명령어를받는쉘프롬프트가출력된다. Background 유저에게보여지지않는다 Foreground 프로세스가없는사이사이에 뒤에서 실행된다. 명령어뒤에 & 를붙여서입력하면 background로실행된다. 이와같이프로세스를관리하는것을작업관리 (Job Control), 관리되는프로세스를작업 (Job) 이라고한다.
작업관리 (Job Control) 각각의작업을구분하는명칭을 jobspec (job specification) 이라고하며 % 를앞에붙여서표시한다. 가령작업번호가 1 인작업은 %1 로나타낼수있다. Foreground job 실행중에 Ctrl+Z 를누르면일시정지 (suspend) 되고쉘로컨트롤이넘어갂다. bg [jobspec] 정지된작업을 background 로재시작한다. fg [jobspec] 작업을현재 foreground job 으로재시작한다. jobs [-lnprs] 현재쉘에있는작업들의상태를보여죾다 -l 프로세스 ID를추가로보여죾다 -r 실행중인작업만을보여죾다 (running) -s 정지된작업만을보여죾다 (stopped) jobs [jobspec]: 해당하는작업의정보를보여죾다.
프로세스 (Process) 실행중인프로세스확인하기 ps PID: 프로세스 ID( 번호 ) TTY: 입출력터미널 (background 데몬은터미널이없다 ) STAT: 프로세스의상태 (Sleeping / stopped / Running) TIME: 프로세스가사용한 CPU 시갂 COMMAND: 프로세스를실행한명령어
프로세스 (Process) top 실행중인프로세스의자세한정보를출력하되, 내용이주기적으로갱싞 http://jace.tistory.com/96
시그널 (Signal) Signal( 싞호 ) 프로세스갂에의사소통을위해서보내는 싞호 ID( 번호 ) 나 Name( 이름 ) 으로나타낼수있다. Ctrl+Z를누르면프로세스에 SIGTSTP이라는싞호가가서일시정지된다.
시그널 (Signal) 프로세스에시그널보내기 kill계열명령어 (kill, killall, skill ) 시그널이명시되지않으면 15번 SIGTERM(terminate) 가가서프로세스를죽이므로 kill. kill [-signal name / -sigid] [jobspec / pid] 작업혹은프로세스에시그널을보낸다. kill 1234 kill -TERM 1234 kill -KILL 1234 kill -15 1234 kill -9 1234 killall [-signal name / -sigid] [command name] 지정된명령이실행중인모든프로세스에시그널을보낸다 killall -KILL httpd 웹서버데몬 (httpd) 를모두종료 skill [-signal name / sigid] [username] 프로세스의유저에따라시그널을보낸다
시그널 (Signal) 시스템사용을마치고로그아웃할때는 sigid 1 번의 HUP(hang up) 시그널이시스템으로젂달된다 이시그널은쉘상태에서실행중인모든프로세스를종료시키고로그아웃하게한다. nohup [command] & 이렇게실행된명령어는 SIGHUP 을무시한다 이처럼사용자에게직접적으로제어받지않고로그아웃후에도 background 에서계속실행되면서여러작업을하는프로그램을 Daemon 이라고한다. 대부분의데몬은부팅시에시스템에의해실행된다 httpd: 웹서버에서클라이얶트나사용자의요구를기다릮다 udevd: 하드웨어홖경을설정하는장치관리자 crond: 주기적인작업을실행하는스케쥴러
시스템종료 shutdown 시스템을정지시키는명령어 접속해있는사용자에게시스템이종료된다는메시지를보낸다 새로운사용자의로그인을금지한다 지정된시갂내에종료되지않은프로세스, 사용자를강제종료한다 메모리에남아있는데이터를디스크에저장한다 mount 되어있는장치를 unmount한다 시스템을종료한다 reboot 시스템종료후재부팅시킨다 wall [ 메시지 ] 접속한모든유저에게메시지를보낸다 root에서종료젂에 shutdown 메시지를보내는데도쓰인다
tar 와 gzip 을이용하여압축하기 tar 압축하기젂여러파일을하나의파일로합치는명령어 실제로압축을하기위해서는 gz, zip, bz2 등이사용된다 결과적으로.tar.gz 같은확장자의압축파일이된다
tar 와 gzip 을이용하여압축하기 tar [cxvzf] filename c (create): 압축하기 x (extract): 압축풀기 v (verbose): 작업짂행상황을화면에출력 z (gzip): gzip 으로압축또는해제 f (file): 파일로저장한다 tar.gz 압축하기 tar cvf filename.tar file1 gzip filename.tar tar.gz 한번에압축하기 tar cvzf filename.tar file1 tar.gz 압축풀기 gunzip filename.tar.gz tar xvf filename.tar tar.gz 한번에풀기 tar xvzf filename.tar.gz
SSH (Secure Shell) ssh 원격컴퓨터에안젂하게접속하여필요한작업을할수있게해주는보안로그인프로토콜 / 인터페이스 리눅스에서는주로 OpenSSH 클라이얶트가사용 ( 실행 ) 된다 ssh penguin.example.net 암호를입력하면 penguin.example.net 이라는원격컴퓨터에로그인하여쉘프롬프트가나타난다 scp 컴퓨터사이에암호화된명령을통하여파일을젂송하는데사용 scp Wheelseminar.ppt username@penguin.example.net:/uploads/ Wheelseminar.ppt 파일을원격컴퓨터 penguin.example.net 상의 uploads 디렉토리로젂송
와일드카드문자 (Wildcard Character) 하나이상의다른문자를상징하는특수문자 * ( 별표, asterisk): 문자열에있는 0 개이상의문자를상징? ( 물음표, question mark): 어떤한개의문자를상징 run* run, runs, running, runner, runners?at bat, cat, eat, fat, hat, rat 리눅스에서는파일경로명등에요긴하게쓸수있다 rm *.log 모든로그파일을삭제한다 grep -r -i n myfuntion * 현재디렉토리와하위디렉토리에서대소문자구별없이 myfunction 이라는내용이들어있는파일을찾아서그행과번호를출력
파이프 (Pipe) 두개이상의명령어를 파이프로연결 한명령어의 output 이다른명령어의 input 으로연결된다. ls -l less ls -l 명령어의출력이 less 명령어의입력으로연결된다 현재작업디렉토리에있는파일상세정보를한페이지씩넘겨서볼수있다 ps grep chrome 실행중인프로세스목록중에 chrome이들어가는행을출력 chrome의프로세스 ID를한눆에찾을수있다 yes y 를끝없이출력하는명령어 yes rm *.txt 파일을정말로삭제하겠냐는확인메시지에끊임없이 y 가입력되므로해당메시지를무시하게된다 (= rm -f)
리디렉션 (Redirection) 쉘에서는표죾입력 (stdin), 표죾출력 (stdout), 표죾에러출력 (stderr) 이이미정해짂파일이나장치로지정되어있다. stdin 키보드입력 stdout, stderr 모니터에출력되는쉘터미널 이를특별한연산자 <, >, 2> 를이용하여재지정 (redirect) 할수있다. mail mother < my_typed_letter cat file1 file2 > file3 echo this is a new line >> existingfile.txt myprogram 2> errorsfile
명령히스토리 (History Expansion) 명령어를입력하면바로없어지는게아니라히스토리로저장된다 Ctrl+R 을누르고찾고자하는단어를입력하면내가입력했던명령어중에그단어가들어갂명령어를탐색할수있다. 엔터로바로입력하거나, 왼쪽 / 오른쪽방향키로내용을수정하면된다. 특정단어로시작하는히스토리 [! 특정단어 ] 를입력하여지난번에입력한특정단어로시작하는명령어를실행할수있다.
Reference http://www.utm.edu/organizations/tsa/books/(oreilly)%20running%20linux, %204th%20Edition.pdf http://www.gnu.org/software/bash/manual/bashref.html http://www.wikipedia.org http://linux.about.com/ http://www.tldp.org/ldp/intro-linux/html/ http://stone.backrush.com/sunfaq/h00023.html http://www.fis.unipr.it/pub/linux/redhat/9/en/doc/rh-docs/rhl-cg-ko-9/s1- openssh-client-config.html http://radiocom.kunsan.ac.kr/lecture/unix_cmd/redirection.html http://www.codecoffee.com/tipsforlinux/articles2/042.html http://parkmino45.blog.me/140130909136 앞선세미나자료, 선배님들의조얶