운영체제/Linux

프로세스 관리 명령

1. ps

현재 시스템에서 실행 중인 프로세스 목록을 출력한다.

사용형식

ps [옵션]

사용옵션

-A : 모든 프로세스 출력.
-e : -A와 동일.
T : 현재 터미널에서 실행된 프로세스만 출력.
-a : 현재 세션 사용자에 의해 모든 터미널에서 실행된 프로세스 출력.
a : 모든 프로세스를 BSD 스타일로 출력. 명령과 함께 사용된 파라메터도 출력. x와 함께 사용시 제어 터미널없이 실행된 프로세스까지 함께 출력.
-d : 현재 세션 사용자에 의해 실행된 모든 프로세스를 제어 터미널 유무와 상관없이 전부 출력.
r : 현재 실행중인 프로세스만 출력.
x : 제어 터미널 없이 실행된 프로세스만 출력. a 옵션과 보통 함께 사용.
f : pstree와 같은 형식으로 ASCII art 방식으로 출력.
-F : 모든 항목을 다 출력.(full format)
-f : UNIX 스타일로 모든 항목 출력.
j : 부모 프로세스를 포함한 jobs 형식으로 출력.
-j : jobs 형식.
l : BSD 스타일의 자세한 항목 출력.
-l : long format. -y옵션과 함께 사용하면 플래그 정보를 표시하지 않는다.
u : UID를 포함하여 출력.
v : 가상 메모리 정보를 포함하여 출력.
-Z : 보안 컨텍스트 정보 출력.(SELinux에 해당.)
h : 헤더 없이 출력.
w, -w : wide format으로 줄바꿈하여 모든 항목 출력.

일반적으로 1개의 옵션만을 사용하기 보다는 관련있는 옵션을 묶어서 사용한다. ps 명령의 실행 예는 다음과 같다.

모든 프로세스를 표준적인 방법을 출력하는 예:

$ ps -e
$ ps -ef
$ ps -eF
$ ps -ely

프로세스 트리를 출력하는 예:

$ ps -ejH
$ ps axjf

스레드 정보를 표시하는 예:

$ ps -eLf
$ ps axms

보안 정보를 출력하는 예:

$ ps -eo euser,ruser,suser,fuser,f,comm,label
$ ps axZ
$ ps -eM

root 사용자에 의해 실행된 모든 프로세스 출력하는 예:

$ ps -U root -u root u

출력 필드

  • USER : 프로세스 소유자의 계정.
  • PID : 프로세스 식별자.
  • RSS : 프로세스에 의해 사용되는 실제 메모리 사용량.(Kbyte)
  • SZ : 프로세스 자료와 스택의 크기.(Kbyte)
  • TIME : 현재까지 사용된 CPU 시간.(분, 초)
  • TTY : 프로세스의 제어 터미널.
  • %CPU : 전체 프로세스를 대상으로 CPU가 해당 프로세스를 실행한 CPU 시간의 백분율.
  • %MEM : 프로세스가 사용한 실제 메모리의 백분율.
  • START : 프로세스 시작 시간.
  • COMMAND : 명령어 이름.

프로세스의 상태코드(STAT)

  • D(disk wait) : 디스크 입출력 대기같은 인터럽트 할 수 없는 대기 상태.
  • R(running or runable) : 프로세스가 실행중이거나 실행큐에 들어있는 실행 가능 상태.
  • S(sleep) : 인터럽트 가능한 대기 상태.
  • T(stopped) : 프로세스가 ^Z나 트레이스 명령 등으로 멈춘 상태.
  • W(paging) : 가상 메모리 사용 중.(2.6버전 커널부터 사용하지 않음.)
  • X(dead) : 실행 종료. 이후 나타나지 않음.
  • Z(zombie) : 좀비 프로세스.

BSD 포맷에 의한 추가 상태 코드

  • < : 실행 우선 순위 높음.(다른 사용자의 nice 명령에 의한 우선 순위 변경 안됨.)
  • N : 실행 우선 순위 낮음.(다른 사용자의 nice 명령에 의해 우선 순위 변경 가능.)
  • L : 실시간 실행이나 사용자 입출력에 의해 메모리 락이 걸림.
  • s : 세션내에서 실행됨.
  • l : 멀티 스레드.
  • + : 포그라운드 실행.

2. pstree

프로세스 정보를 트리 형태로 출력.

사용 옵션

-n : PID 순으로 정렬.
-p : 프로세스 명과 PID를 함께 출력.

3.kill

지정된 프로세스에게 종료 시그널을 전송한다.

사용형식

$ kill [옵션] 프로세스ID

사용옵션

-s : 전송할 시그널의 이름이나 번호 지정.
-p : 전송할 시그널을 출력만 한다.
-l : 시그널 목록 출력.

SIGNAL 종류

  • SIGHUP(1) : 제어 터미널이 멈추거나 제어 프로세스가 죽음.
  • SIGINT(2) : 키보드로부터의 인터럽트 시그널.
  • SIGQUIT(3) : 키보드로부터의 종료 시그널(quit).
  • SIGABORT(6) : abort로부터의 중단.
  • SIGKILL(9) : kill 시그널. 강제 종료.
  • SIGTERM(15) : 프로그램 종료 시그널.

3. top

프로세스의 CPU와 메모리 사용량 등 정보를 실시간으로 모니터링한다.

4. bg

^Z로 중지된 프로세스를 백그라운드 작업으로 변경한다. 명령 실행시 '&'를 함께 실행하면 실행시 백그라운드 작업으로 실행된다.

5. jobs

백그라운드 작업 목록을 표시한다.

6. fg

백그라운드 작업 목록에서 프로세스를 포그라운드 작업으로 되돌린다.

리눅스 명령어 요약

2009. 4. 12. 10:26

리눅스 명령어 요약

((네트워크관리사2급 필기시험 대비)

기본 명령어

표1. 기본 명령어 요약
명령 설명
date 날짜 및 시간을 확인/설정
time 실행한 명령어가 수행되는 시간 계산
cal 달력 출력
exit 현재 실행중인 쉘 종료
man 해당 명령어의 메뉴얼 출력
help 도움말 출력
history 사용했던 명령어의 목록 출력
which 명령어의 위치 출력

사용자 생성 및 계정 관리

표2. 사용자 생성 및 계정 관리 명령 요약
명령 설명
useradd 사용자 계정 생성
userdel 사용자 삭제
usermod 사용자 정보 수정
passwd 사용자의 암호 변경

디렉터리 및 파일 관리 명령

표3. 디렉터리 및 파일 명령 요약
명령 설명
ls 파일 및 디렉터리의 목록 출력
cat 텍스트 파일의 내용 출력
file 파일의 종류 표시
more 텍스트 파일을 한 화면 분량씩 나누어 출력
cp 파일 및 디렉터리 복사
mv 파일 및 디렉터리 이동
rm 파일 및 디렉터리 삭제
find 파일 검색
chmod 파일 및 디렉터리의 퍼미션(허용 권한) 변경
chown 파일 및 디렉터리의 소유권 변경
chgrp 파일 및 디렉터리의 소유 그룹 변경
touch 파일 수정 시간 변경 및 빈 파일 생성
grep 정규표현식을 이용하여 파일내 문자열 검색
cd 디렉터리 이동
pwd 현재 작업 디렉터리 절대경로 표시
mkdir 디렉터리 생성
rmdir 디렉터리 삭제
du 디렉터리 사용량 표시
df 하드 디스크 사용량 표시

통신 및 네트워크 관련 명령

표4. 통신 및 네트워트 관련 명령 요약
명령 설명
who, w, users 접속해 있는 사용자 확인
finger 특정 사용자의 정보 출력
talk 특정 사용자와 채팅하기
wall 접속해 있는 모든 사용자에게 메세지 전송
ping 상대 컴퓨터와 통신 가능여부 확인
ipconfig 네트워크 인터페이스의 확인 및 설정
nslookup 네임 서버 조회
traceroute 상대 서버까지 경로 출력
netstat 네트워크 상태 정보 출력

리눅스 디렉터리 구조

2009. 4. 8. 03:41

리눅스 시스템은 다양한 명령들과 설정 파일, 라이브러리들을 보관하기 위해 일반적으로 다음과 같은 디렉터리 구조를 가지고 있다.

/ 루트 디렉토리
/bin 기본적인 사용자 명령어들이 위치한 디렉터리.
/boot 시스템 부팅시 필요한 파일들이 위치한 디렉터리.
/dev 장치 파일들이 위치한 디렉터리.
/etc 시스템 설정 파일들이 위치한 디렉터리.
/home 사용자들의 홈디렉터리. 사용자 로그인을 하면 이 디렉터리의 사용자 이름과 동일한 디렉터리로 들어감.
/lib 각종 시스템 라이브러리가 있으며 커널 모듈이 위치한 디렉터리.
/lost+found 파일 시스템 복구를 위한 디렉터리.
/mnt 마운트될 파일 시스템의 마운트 포인터.
/proc 시스템 관리 목적으로 메모리 상에 존재하는 가상 렉터터리. 디렉터리내의 파일들은 현재 시스템 설정을 나타낸다.
/root 루트 사용자의 홈디렉터리.
/sbin 시스템 관리 명령어들이 위치한 디렉터리.
/tmp 임시파일들이 만들어지고 삭제되는 디렉터리.
/usr 시스템 운영에 필요한 명령어들과 라이브러리들이 위치. 배포판에서 제공되는 명령들이 위치.
/usr/bin 배포판에서 제공하는 사용자 명령어들이 위치.
/usr/etc  설정 파일.
/usr/include C언어 헤더 파일이 위치.
/usr/src 소스 상태로 제공되는 프로그램들. /usr/src/linux 리눅스 커널 소스가 들어 있다.
/usr/man man page 포함.
/var 가변적인 저장 공간. 메일서버 운영시 메일 메시지 보관 등 용도로 사용.

리눅스 소개

2009. 4. 7. 02:31

리눅스는 다중 작업, 다중 사용자 운영체제이고 다중 프로세스 시스템을 지원하는 고성능, 고가용성 운영체제이다. 그리고 이 모든 성능과 기능들은 무료로 제공된다. IEEE POSIX, System V, BSD와 소스 수준에서 많은 유닉스 표준과 거의 호환된다. 그밖에 윈도우 95/98, 윈도우 NT/2000/XP, Max OS, BSD 등과 같은 다양한 운영체제와 멀티 부팅을 통해 한 시스템에서 공존할 수 있다. 멀티 부팅의 경우 리눅스 부트로더 (LILO)와 그루브(GRUB; GRand Unified Bootloader)를 통해 부팅할 운영체제를 선택할 수 있고, 윈도우 2000/XP 등의 부트로더와도 호환된다.

인텔x86, 아이태니움, 스팍/울트라스팍, AMD 64, ARM, PA-RISC, Alpha, PowerPC, MIPS, m68k, IBM 390과 z시리즈 메인프레임 등 다양한 CPU 아키텍처에서 동작한다. 다수의 임베디드 프로세서에 포팅되었으며, 팜파일럿과 컴팩iPAQ와 같은 PDA에도 포팅되어 있다. 더욱이 클러스터를 활용한 수퍼컴퓨터의 영역에서도 사용된다.

다양한 파일시스템 유형을 지원하며, ext2fs와 같은 리눅스 전용 파일시스템외에 NTFS, VFAT, FAT16/32, 매킨토시, OS/2 등 수많은 운영체제의 파일시스템을 지원한다.

리눅스는 완전한 TCP/IP 네트워킹을 구현하고 있으며, 이더넷 카드, PPP, SLIP, PLIP, ADSL 등 장치 드라이버를 포함한다. IPv6 프로토콜 모음과 DHCP, AppleTalk, IrDA, DECnet, 패킷 라디오 통신 프로토콜인 AX.25 등 다양한 프로토콜을 지원한다.

FTP, Telnet, NNTP, SMTP, POP3, IMAP, NFS, Microsoft의 도메인에 참여할 수 있도록 해주는 마이크로소프트 프로토콜 등 완전한 TCP/IP 클라이언트와 서비스를 갖추고 있다.

리눅스는 커널 차원의 방화벽 지원이 있기 때문에 네트워크 패킷의 차단을 구현할 수 있다.

1. 커널 (Kernel)

리눅스 운영체제의 핵심 엔진부이다. 커널은 사용자 프로그램과 하드웨어 장치 간의 인터페이스, 멀티태스킹 구현을 위한 프로세서 스케줄링 등 다양한 시스템 제어를 위한 코드이다. 시스템 메모리를 최적으로 사용하기 위해 가상 메모리가 구현되어 있으며, 스왑 공간을 디스크에 할당할 수 있다.

2. 명령과 쉘(Shell)

쉘은 사용자가 입력한 명령을 실행하는 프로그램이다. 그밖에 작업 제어, 입출력 리다이렉트, 파이프 등을 지원하고 쉘 스크립트 프로그래밍을 위한 명령 언어를 제공한다. 현재 리눅스의 표준 쉘은 BASH (Bourn Again SHell)이며 '배쉬'라고 읽는다.

BASH외에 sh, csh, tcsh, ksh, zsh 등 다양한 유닉스 표준 쉘을 함께 제공하고 있다.

3. 텍스트 프로세싱과 워드 프로세싱

리눅스는 vi와 emacs라는 매우 훌륭한 편집기를 제공하여 다양한 용도로 강력한 텍스트 편집 기능을 제공하며, 오픈오피스를 통해 마이크로소프트 오피스와 거의 호환되는 오피스 프로그램 또한 제공하고 있다.

4. 개발 환경

GNU의 컴파일러인 gcc를 제공하여 C, C++, Object C, 포트란, 자바 등 대부분의 개발 환경을 제공하고 있다.

5. X-Window 시스템

1980년대 MIT에서 다양한 유닉스 시스템을 지원하는 윈도우 시스템인 X를 선보인 이래 리눅스의 윈도우 시스템으로 자리잡아 오고 있다. 현재 리눅스에서 사용가능한 X 버전은 X.org라 부르며 리눅스와 같은 PC 기반의 유닉스 시스템으로 자유롭게 배포 가능한 X11R6으로부터 개발한 것이다.

6. KDE와 GNOME

X 윈도우 시스템은 유연한 설계로 인해 다양한 데스크톱 환경을 가질 수 있으며 대표적인 데스크톰 환경으로 KDE와 GNOME('그놈'이라고 읽는다)을 제공하여 현대적인 윈도우 시스템을 제공하고 있다.

7. 배포판

리눅스 시스템은 커널을 개발하여 공개한 리누스와 수많은 오픈 소스 개발자들의 다양한 개발 커뮤니티들에 의해 만들어진 유틸리티 들의 조립품이며 이 모든 것들을 모아서 하나의 사용가능한 시스템으로 만들어 놓은 것이 배포판이다. 배포판 역시 개인으로부터 기업에 이르는 다양한 배포판 개발팀에 의해 만들어지며 수많은 배포판이 존재한다.

대표적이 배포판으로는 Redhat Enterprise, Fedora, Debian, Ubunto, GenOS, gentoo, SLACKWARE 등이 있다.

+ Recent posts