제 2 장 유닉스 / 리눅스 사용
DESCRIPTION
제 2 장 유닉스 / 리눅스 사용. 로그인. 실습 서버들 Linux CentOS $ telnet 117.16.244.171 login : s 자기학번 Password: ****** login: stu Password: stu *1* Linux Ubuntu $ telnet 117.16.244.172 login: stu Password: stu *1* Unix Solaris 11 $ telnet 117.16.244.157 login: stu Password: stu *1*. - PowerPoint PPT PresentationTRANSCRIPT
제 2 장 유닉스 / 리눅스 사용
1
로그인 직접 로그인
X- 윈도우 VMware
원격 로그인 telnet
• Windows• Unix/Linux
PuTTY• Windows• Unix
Xmanager ( 3 장 )
2
실습 서버들 Linux CentOS
• $ telnet 117.16.244.171• login: s 자기학번• Password: ******• login: stu• Password: stu*1*
Linux Ubuntu• $ telnet 117.16.244.172• login: stu• Password: stu*1*
Unix Solaris 11• $ telnet 117.16.244.157• login: stu• Password: stu*1*
2.1 기본 명령어
3
간단한 명령어 사용$ date
$ hostname
$ uname
$ uname -a
$ who
$ ls
$ clear
$ passwd
4
(Kernel Release Version 의미 )
2. 6. 32- 71. el6. i686<Major><Minor><Build><Revision><Version><Architecture>
<Major> 커널에 커다란 변화가 있을 때 바뀌는 번호<Minor> 짝수일 때 안정 버전 , 홀수일 때 개발버전<Build> 패치 레벨을 나타내는 숫자<Revision> 패키지 개정 횟수를 나타내는 숫자<Version> 패키지 버전 ( 예 ) el6 : Enterprise Linux (Red Hat Enterprise Linux/CentOS)<Architecture> 프로세서 ( 예 ) i686 : Intel Pentium processor (= x86 microarchitecture)
( 실습 ) 유닉스 / 리눅스 디렉토리 이해$ ls /$ ls /bin$ ls /boot$ ls /dev$ ls /etc$ ls /home$ ls /kernel (Unix only)$ ls /lib$ ls /lost+found$ ls /media$ ls /mnt$ ls /opt$ ls /proc$ ls /root$ ls /sbin$ ls /tmp$ ls /usr$ ls /var
5
$ ls /usr/bin$ ls /usr/include$ ls /usr/lib$ ls /usr/libexec$ ls /usr/local$ ls /usr/sbin$ ls /usr/share$ ls /usr/src 리눅스 파일시스템의 디렉토리 용도와
파일 개수를 알아보세요( 참고 ) 교재 p41~42 web http://proton.pathname.com/fhs/ $ ls / | wc [-w] $ ls /bin | wc [-w] $ df
리눅스 디렉토리 계층구조 리눅스의 디렉터리도 루트로부터 시작하여 계층구조를 이룬다
6
$ cat /proc/1/maps또는 $ ps$ cat /proc/PID/maps
유닉스 디렉토리 계층구조 유닉스의 디렉터리는 루트로부터 시작하여 계층구조를 이룬다
7
8
Linux 설치 : 하드 디스크 분할 여러 파티션의 장점
부팅시 파일 시스템 체크에 필요한 시간을 줄여줌 파일들은 파티션 경계를 넘어서 커질 수 없음 bad spot 발생시 해당 파티션만 재설치 하면 됨
각 파티션별 비율 (파티션 연습 후 재설정하세요 !) swap 가상메모리 영역 일반적으로 메모리의 2배정도 (4096M = 4G)
Linux-2.2 이후 512MB 제한 없음 , 2*1K-block=2048 이상 성능 영향 없음 $ dumpe2fs /dev/sda1 | grep “Block size” $ tune2fs –l /dev/sda1 | grep Block $ cat /proc/swaps $ free
******************************************************************************************* /boot 커널과 부트스트랩과정에 필요한 파일이 들어 있는 곳
PC BIOS의 한계성으로 인해 , 이런 파일들이 저장할 소형 33
파티션를 잡아주는 것이 좋음 (500M)
……………………………………………………………………………………… / 한 덩어리 약 55% 정도 (예 , 100G/200G)
………………………………………………………………………………………• / 최상위 디렉토리로서 약 8% 정도 (8G)• /usr 일반 사용자 프로그램을 설치할 디렉토리로 약 35% 정도 (35G)• /var 각종 로그 파일 및 메일에 관련된 곳 약 12% 정도 (12G)
******************************************************************************************* /home 사용자들의 홈디렉토리가 위치해 있고 웹서버의 자료가 위치하는 곳 약 45% 정도 (나머지 )
(Linux)$ getconf PAGESIZE 4096(Solaris)$ pagesize –a 40922097152
2.2 파일 및 디렉터리
9
파일의 종류 일반 파일 (ordinary file) “-” $ ls -l
데이터를 가지고 있으면서 디스크에 저장된다 .
디렉터리 (directory)/ 폴더 (folder) “d” $ ls -l
디렉터리 ( 폴더 ) 자체도 하나의 파일로 다른 디렉터리들을 포함하여 계층 구조를 이룬다
부모 디렉터리는 다른 디렉터리들을 서브 디렉터리로 갖는다
특수 파일 (special file)
장치 파일 : 물리적인 장치에 대한 내부적인 표현 $ ls –l /dev
• 문자 단위 입출력 장치 파일 : 키보드 (stdin), 모니터 (stdout), 프린터 등 “ c”
• 블록 단위 입출력 장치 파일 : 하드디스크 등 “ b”
통신 파일• 파이프 파일 (file) “p” $ mknod mypipe p
• 소켓 파일 (file) “s” $ chef & ; cook /* socket() 시스템 호출로 소켓 파일 생성 */
링크 파일 $ ls –l /bin
• 심볼릭 ( 소프트 ) 링크 (symboilic link) 파일 “ l”
10
$ cp –r /socket . $ cd socket$ gcc chef.c –o chef$ gcc cook.c –o cook$ ./chef &$ ./cook
홈 디렉터리 / 현재 작업 디렉터리 홈 디렉터리 (home directory)
각 사용자마다 별도의 홈 디렉터리가 있음 사용자가 로그인하면 홈 디렉터리에서 작업을 시작함
현재 작업 디렉터리 (current working directory) 현재 작업 중인 디렉터리 로그인 하면 홈 디렉터리에서부터 작업이 시작된다 .
11
디렉터리 관련 명령 pwd(print working directory)
현재 작업 디렉터리를 프린트 $ pwd
cd(change directory) 현재 작업 디렉터리를 이동 $ cd [ 디렉터리 ]
mkdir(make directory) 새 디렉터리를 만듬 $ mkdir 디렉터리
12
디렉터리 리스트 ls(list) 디렉터리의 내용을 리스트
$ ls test
$ ls –s -s(size)총 44 test
$ ls –a -a(all). .. .bash_history test
$ ls –i -i(inode)4718595 test
현업에서 정말 많이 사용 : ls, grep, find, vi
13
# dumpe2fs /dev/sda1 | grep size# tune2fs –l /dev/sda1 | grep size
디렉터리 리스트 $ ls –l -l(long)
합계 4-rw-rw-r--. 1 stu stu 7 2013-09-11 11:11 test
$ ls –asl 합계 324 drwx------. 4 stu stu 4096 2013-09-11 12:13 .
4 drwxr-xr-x. 17 root root 4096 2013-09-11 12:12 ..
4 -rw-r--r--. 1 stu stu 18 2011-05-31 01:58 .bash_logout
4 -rw-r--r--. 1 stu stu 176 2011-05-31 01:58 .bash_profile
4 -rw-r--r--. 1 stu stu 124 2011-05-31 01:58 .bashrc
4 drwxr-xr-x. 2 stu stu 4096 2010-11-12 09:54 .gnome2
4 drwxr-xr-x. 4 stu stu 4096 2012-08-08 08:50 .mozilla
4 -rw-rw-r--. 1 stu stu 7 2013-09-11 12:13 test
$ ls –il
4718595 -rw-rw-r--. 1 stu stu 7 2013-09-11 11:11 test
14
경로명 파일이나 디렉터리에 대한 정확한 이름 절대 경로명 (absolute pathname)
루트 디렉터리로부터 시작하여 경로 이름을 정확하게 적는 것 상대 경로명 (relative path name)
현재 작업 디렉터리부터 시작해서 경로 이름을 적는 것~ : 홈 디렉터리 . : 현재 디렉터리.. : 부모 디렉터리
15
파일 내용 리스트 파일 내용 출력과 관련된 다음 명령어들
cat, more, less, head, tail, wc, 등
$ 명령어 파일
$ 명령어 파일 * (* 는 모든 글자 )
$ more 파일 + (+ 는 모든 파일 )
$ less 파일 + (+ 는 모든 파일 ):[Space]:[Enter]:b
16
cat 명령어 파일 내용 출력
$ cat xx
$ cat ...^D
$ cat > xx...^D
$ cat >> xx...^D
17
more/head/tail/wc more 명령어
하나 이상의 파일 이름을 받을 수 있으며 각 파일의 내용을 페이지 단위로 출력
head 명령어파일의 앞부분 (10 줄 ) 을 출력
tail 명령어 파일의 뒷부분 (10 줄 ) 을 출력
wc(word count)
파일에 저장된 줄 , 단어 , 문자의 개수를 세서 출력
$ wc test1 1 7 test
18
cp 명령어 $ cp 파일1 파일2
파일 1의 복사본 파일 2를 현재 디렉터리에 만든다
$ cp xx yy$ ls –il4718602 -rw-rw-r--. 1 stu stu 3 2013-09-11 12:29 xx4718603 -rw-rw-r--. 1 stu stu 3 2013-09-11 12:29 yy
$ cp 파일 디렉터리 파일 1의 복사본을 디렉터리 내에 만듬
$ mkdir dd$ cp xx dd$ ls –il4718604 drwxrwxr-x. 2 stu stu 4096 2013-09-11 12:30 dd4718602 -rw-rw-r--. 1 stu stu 3 2013-09-11 12:29 xx4718603 -rw-rw-r--. 1 stu stu 3 2013-09-11 12:29 yy
19
mv 명령어 mv(move)
파일 1 의 이름을 파일 2 로 변경한다
$ mv 파일 1 파일 2 $ mv yy zz$ ls -il4718604 drwxrwxr-x. 2 stu stu 4096 2013-09-11 12:30 dd4718602 -rw-rw-r--. 1 stu stu 3 2013-09-11 12:29 xx4718603 -rw-rw-r--. 1 stu stu 3 2013-09-11 12:29 zz
파일을 디렉터리 내로 이동
$ mv 파일 디렉터리 $ mv zz dd$ ls -il4718604 drwxrwxr-x. 2 stu stu 4096 2013-09-11 12:31 dd4718602 -rw-rw-r--. 1 stu stu 3 2013-09-11 12:29 xx
20
ln 명령어 ln(link)
파일1의 이름을 파일2로 링크한다
$ ln 파일1 파일2 $ ln xx yyy$ ls –il4718604 drwxrwxr-x. 2 stu stu 4096 2013-09-11 12:31 dd4718601 -rw-rw-r--. 1 stu stu 7 2013-09-11 12:13 test4718602 -rw-rw-r--. 2 stu stu 3 2013-09-11 12:29 xx4718602 -rw-rw-r--. 2 stu stu 3 2013-09-11 12:29 yy
심볼릭 링크$ ln –s 파일1 파일2 $ ln –s xx zzz$ ls -il4718604 drwxrwxr-x. 2 stu stu 4096 2013-09-11 12:31 dd4718601 -rw-rw-r--. 1 stu stu 7 2013-09-11 12:13 test4718602 -rw-rw-r--. 2 stu stu 3 2013-09-11 12:29 xx4718602 -rw-rw-r--. 2 stu stu 3 2013-09-11 12:29 yy4718606 lrwxrwxrwx. 1 stu stu 2 2013-09-11 12:33 zz -> xx
21
파일 / 디렉토리 삭제 rm(remove) 명령어
명령줄 인수로 받은 파일 (들 )을 지운다
$ rm 파일 + $ rm xx
$ rm -r 디렉터리 ( 조심해서 사용 )디렉터리 내의 모든 파일 및 하위 디렉터리들을 단번에 지운다
$ rm -r dd
rmdir(remove directory) 명령어 명령줄 인수로 받은 디렉터리 (들 )을 지운다
$ rmdir 디렉터리 +
주의 : 디렉터리 내에 아무 것도 없어야 한다$ rmdir dd
22
2.3 파일 속성
23
파일 속성 (file attribute)
파일의 이름 , 타입 , 크기 , 소유자 , 사용권한 , 수정 시간$ ls -sl xx 6 -rw-r--r--. 1 stu stu 7 2013-09-11 11:11 test
24
사용권한 (permission mode)
읽기 (r), 쓰기 (w), 실행 (x) 권한
파일의 사용권한은 소유자 (owner)/ 그룹(group)/ 기타 (others) 로 구분하여 관리한다
25
x
소유자 그룹 기타rw- rw- rw— (text file
default)000 010 010 (umask)rw- r-- r-—
X 윈도우의 GNOME 데스크톱에서 속성 확인
기본 속성 사용권한
26
chmod(change mode)
사용권한 - rw- rw- r-- 2 진수 : 110 100 100
8 진수 : 6 4 4
$ umask $ umask 002 $ cat > xx $ umask $ chmod 777 xx $ chmod 000 xx $ cat xx
[u|g|o|a]+[+|-|=][r|w|x]+ u(user), g(group), o(other), a(all)
연산자 : +( 추가 ), -( 제거 ), =( 지정 )
권한 : r( 읽기 ), w( 쓰기 ), x( 실행 )
$ chmod a+r xx $ cat >> xx $ chmod u+w xx (# mkdir /dd) $ cat >> /dd/SMY $ chmod 777 dd $ chmod 1777 dd
파일 혹은 디렉터리의 사용권한을 변경하는 명령어• $ chmod [-R] 사용권한 파일 /* -R : Recursive */
-R 옵션은 디렉터리 내의 모든 파일 , 하위 디렉터리에 적용 디렉터리 sticky bit
• $ chmod 1777 dd
27
( 참고 ) set-user-id set-group-id set-sticky bit Symbolic File Access Modes
$ chmod a=rw xx
$ chmod g+x xx
$ chmod g-rwx xx
$ chmod g=u xx
Octal File Access Modes$ chmod 644 xx
$ chmod 751 xx
$ chmod 000 xx
실행파일에 대하여 4000 set user ID : $ chmod 4751 xx $ chmod u+s xx 2000 set group ID : $ chmod 2751 xx $ chmod g+s xx 1000 set sticky bit : $ chmod 1751 xx $ chmod o+t xx
$ find / -perm -4755 -ls > result
$ find / -perm 4700 -ls > result 디렉토리에 대하여
1000 set sticky bit : $ chmod 1777 share 그 디렉토리 안의 파일 제거 또는 이름 변경은 파일 소유자 , 디렉토리 소유자 , 수퍼유저만 가능 다른 사용자는 그 안에 자기파일 생성만
umask (user mask) : file 생성시 허가권 제한
28
- rws r-x --x- 100 111 101 001
- rwx r-s --x- 010 111 101 001
- rwx r-x --t- 001 111 101 001
[#] chown(change owner)/chgrp(change group)
chown 명령어파일이나 디렉터리의 소유자를 변경할 때 사용한다
$ chown 사용자 파일 $ chown [-R] 사용자 디렉터리
chgrp 명령어파일의 그룹을 변경할 수 있다
$ chgrp 그룹 파일$ chgrp [-R] 그룹 디렉터리
파일의 소유자 또는 슈퍼 유저만 사용 가능 ! 29
[#] root prompt
2.4 입출력 재지정 및 파이프
30
출력 재지정 (output redirect-ion) 명령어의 표준출력 내용을 모니터에 출력하는 대신에 파일에 저장
$ 명령어 > 파일$ who > names
31
출력 재지정 예 $ cat > xx
Hi ! This is the first list.^D
$ cat > yyHello ! This is the second list.^D
$ cat xx yy > zz
$ cat zzHi ! This is the first list.Hello ! This is the second list.
32
출력 추가 명령어의 표준출력을 모니터 대신에 기존 파일에 추가$ 명령어 >> 파일
$ cat >> list1Bye !This is the end of the first list.^D
$ cat list1Hi ! This is the first list.Bye !This is the end of the first list.
33
입력 재지정 (input redirection)
명령어의 표준입력을 키보드 대신에 파일에서 받는다 .
$ 명령어 < 파일$ wc < list14 17 71 list1
34
문서 내 입력 (here document)
명령어의 표준입력을 단어가 다시 나타날 때까지의 내용으로 보통 스크립트 내에서 입력을 줄 때 사용
$ 명령어 << 단어...
단어
$ wc << endhello ! word countend2 420
35
파이프 로그인 된 사용자들을 정렬해서 보여주기$ who > names$ sort < names
$ 명령어 1 | 명령어 2 명령어 1 의 표준출력을 명령어 2 의 표준입력으로 바로 받는다 .
$ who | sort
36
2.5 후면 처리 및 프로세스
37
전면 처리 vs 후면처리 전면 처리 (foreground processing)
명령어를 입력하면 명령어가 전면에서 실행되며 명령어 실행이 끝날 때까지 쉘이 기다려 준다
$ 명령어 ; 명령어
후면 처리 (background processing) 명령어들을 후면에서 처리하고 전면에서는 다른 작업을 할 수
있으면 동시에 여러 작업을 수행할 수 있다 $ 명령어 &
38
후면 처리 예 ( 교재 p69) $ (sleep 1000; echo done1) &
[1] 8320 $ (sleep 1000; echo done2) &
[2] 8325 $ find / -name xx -print &
[2] 8330 $ jobs
[1] Running ( sleep 1000; echo done1 ) [2] - Running ( sleep 1000; echo done2 )[3] + Running find / -name xx –print
$ fg %작업번호$ fg %1( sleep 100; echo done )$ Control-Z$ bg %1
후면처리 입출력$ find / -name xx -print > result &$ find / -name xx –print > result 2> err &$ find / -name xx -print > result 2>&1 &$ wc < inputfile &
39
프로세스 (process)
실행중인 프로그램을 프로세스 (process)라고 부른다 각 프로세스는 유일한 프로세스 번호 PID 를 갖는다 ps 명령어를 사용하여 나의 프로세스들을 볼 수 있다
$ psPID TTY TIME CMD8695 pts/3 00:00:00 csh8720 pts/3 00:00:00 ps
$ ps u (u: user oriented display)USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mysung 8695 0.0 0.0 5252 1728 pts/3 Ss 11:12 0:00 -csh
mysung 8793 0.0 0.0 4252 940 pts/3 R+ 11:15 0:00 ps u
40
ps aux (BSD style)$ ps aux (a: all, u: user-oriented, x: including without tty)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2064 652 ? Ss 2011 0:27 init [5]root 2 0.0 0.0 0 0 ? S< 2011 0:01 [migration/0]root 3 0.0 0.0 0 0 ? SN 2011 0:00 [ksoftirqd/0]root 4 0.0 0.0 0 0 ? S< 2011 0:00 [watchdog/0]...root 8692 0.0 0.1 9980 2772 ? Ss 11:12 0:00 sshd: mysung [pr
mysung 8694 0.0 0.0 9980 1564 ? R 11:12 0:00 sshd: mysung@pts
mysung 8695 0.0 0.0 5252 1728 pts/3 Ss 11:12 0:00 -csh
mysung 8976 0.0 0.0 4252 940 pts/3 R+ 11:24 0:00 ps aux
(cf.) $ ps –ef $ ps -af
41
kill & killall 명령어 프로세스를 강제적으로 종료시키는 명령어$ kill 프로세스번호$ killall 프로세스이름$ kill % 후면작업번호
$ kill 8320 혹은 $ kill %1$ ps[1] Terminated ( sleep 100; echo done )
$ kill [bash PID]$ kill -9 [bash PID]
42
2.6 문서편집기
43
gedit GNOME 이 제공하는 GUI 기반 문서편집기 사용방법
[ 프로그램 ] -> [ 보조 프로그램 ] -> [gedit 텍스트 편집기 ] $ gedit [ 파일이름 ] &
기능 파일 : 새로 만들기 , 열기 , 저장
닫기 편집 : 입력취소 , 잘라내기 , 복사
붙여넣기 보기 : 도구모음 , 상태표시줄 ,
전체화면 검색 : 찾기 , 바꾸기 검사 : 맞춤법 검사 문서 : 모두 저장 , 모두 닫기 도움말
44
kwrite
KDE 데스크톱 환경이 제공하는 GUI 기반 문서 편집기
기능 파일 : 새문서 , 열기 , 저장 , 편집 : 실행취소 , 잘라내기 , 복사
붙여넣기 보기 : 새창 , 줄번호 , 글꼴크기 도구 : 맞춤법 검사 , 들여쓰기
대소문자 변환 , 정렬 설정 : 도구모음 , 상태표시줄 ,
편지기 설정 , 단축키 설정 도움말
45
핵심 개념 유닉스의 디렉터리는 루트로부터 시작하여 계층구조를 이룬다
절대 경로명은 루트 디렉터리부터 시작하고 상대 경로명은 현재 디렉터리부터 시작한다
파일의 사용권한은 소유자 , 그룹 , 기타로 구분하여 관리한다
출력 재지정은 표준출력 내용을 파일에 저장하고 입력 재지정은 표준입력을 파일에서 받는다
실행중인 프로그램을 프로세스라고 한다
Linux 기본 명령어 1 장 & 2 장 퀴즈
1 장 & 2 장 교재와 ppt
( 참고 ) http://www.mireene.com/webimg/linux_tip1.htm
46
과제 1 (9/26금 23:59 까지 제출 ) [ 과제 1] 117.16.244.171 CentOS 의 아래 디렉터리들의 용도와 파일 개수를 조사하여 제출합니다 ☞ Chapter 2
수업자료 p5
(1) 루트 (/) 디렉터리 아래의 중요 디렉터리(2) /usr 디렉터리 아래의 중요 디렉터리
$ ls /$ ls /bin$ ls /boot$ ls /dev$ ls /etc$ ls /home$ ls /kernel (Unix only)$ ls /lib$ ls /lost+found$ ls /media$ ls /mnt$ ls /opt$ ls /proc$ ls /root$ ls /sbin$ ls /tmp$ ls /usr$ ls /var$ ls /usr/bin$ ls /usr/include$ ls /usr/lib$ ls /usr/libexec$ ls /usr/local$ ls /usr/sbin$ ls /usr/share$ ls /usr/src47