정보처리기사/프로그래밍 언어 활용
운영체제 2
RangA
2023. 5. 31. 07:48
01. 운영체제의 개념
03. 운영체제의 기본 명령어
1) UNIX/Linux 계열 운영체제의 기본 명령어
1. 쉘(Shell) 주요 기능
- Shell은 컴퓨터 내부를 관리하는 커널과 사용자 간을 연결하는 Command 창
- 세션별 변수를 설정, 운영체제를 사용자가 원하는 상태로 설정하도록 지원함
- 사용자 요청에 기반을 둔 명령어를 작성함
- 백그라운드 처리, 서브 Shell을 생성함
- 일련의 명령어를 묶어 처리하는 스크립트 기능 지원 등이 있음
- UNIX/Linux는 최상위 유저를 CLI 환경에서 #으로, 일반 유저를 $로 표시함
- 명령어는 파일 및 디렉터리 관리, 유저 관리, 권한 관리, 프로세스 관리, 통신 관련 등으로 구분될 수 있음
2. UNIX의 주요 명령어
- 프로세스 관련 명령어
명령어 | 역할 |
---|---|
fork | 시스템 콜 중에서 새로운 프로세스를 생성, 복제하는 기능 |
exit | 프로세스를 끝마침 |
getpid | 프로세스명, 그룹명, 부프로세스(getppid)의 정보를 얻음 |
exec | 새로운 프로그램을 수행시키기 위한 시스템 호출 |
sleep n | n초 동안 대기함 |
ps | 현재 실행 중인 작업 프로세스를 출력함 |
who | 현재 시스템에 접속한 사용자를 출력함 |
& | 백그라운드 작업을 지시함 |
| | 결과 값을 다음 명령으로 연결함 |
- 파일 관련 명령어
명령어 | 역할 |
---|---|
chmod | 파일의 속성 및 Protection을 변경함 |
grep | 특정 문자열을 찾음 |
find | 특정 파일을 찾음 |
fsck | 파일 시스템을 일관성 있게 검사하고 대화식으로 복구하는 명령 |
mkfs | 파일 시스템을 구성함 |
> | 앞의 명령 결과를 파일로 저장함 |
mount | 새로운 파일 시스템을 서브 디렉터리에 연결할 때 사용함 |
ls | 파일의 목록을 보여줌 |
cat | 파일의 내용을 화면에 출력함 |
cp | 파일을 복사함 |
ln | 파일이나 디렉터리를 링크함 |
mkdir(md) | 디렉터리를 생성함 |
pwd | 현재 디렉터리를 출력함 |
uname | 유닉스/리눅스 버전을 확인함 |
chdir(cd) | 현재 디렉터리를 변경함 |
rmdir | 디렉터리를 제거함 |
2) UNIX/Linux 계열 운영체제의 쉘 스크립트(Shell Scripts)
1. 쉘 스크립트
- 운영체제의 제어 프로그램을 통제할 수 있는 인터프리터 방식의 프로그램
- 쉘 스크립트를 사용하면 여러 제어 명령어를 자동으로 연속 실행시킬 수 있음
- 쉘 스크립트는 일반 사용자보다는 시스템 관리자, 루트 권한 사용자에 의해 UNIX/Linux 운영체제의 다양한 제어 방식이나 권한은 통제하는 데 사용됨
2. sh(Bourne Shell)
- sh 파일은 루트 사용자가 실행할 수 있는 모든 쉘 스크립트를 수행할 수 있도록 하는 파일(파일 위치는 /bin/sh 또는 /bin/bash)
- sh는 가장 기본이 되는 UNIX 쉘로 다양한 쉘 스크립트를 해석하여 실행해주는 명령어
- 공격자의 집중 공격 대상이 되는 파일이며, 이 파일이 공격자에 의해 실행되면 공격자는 운영 체제의 시스템을 자신의 것으로 만들 수 있음
- bash는 Bourne-again shell을 줄여서 사용하는 용어로, sh가 새롭게 다시 태어났다는 말로 sh의 업그레이드된 버전이라고 볼 수 있음
- bash 쉘 스크립트는 C언어를 기반으로 하고 있기 때문에 C언어의 문법과 유사함
3. 제어문
- 관계 연산자
연산자 | C언어 연산자 | 의미 |
---|---|---|
-eq | == | equal |
-ne | != | not equal |
-ge | >= | greater or equal |
-gt | > | greater |
-le | <= | little or equal |
-lt | < | little |
- 선택문 if
// 문법
if [조건]; then
명령문
else
명령문
fi
---
// 예시
read a
if [${a} -ge 90]; then
echo "합격"
else
echo "불합격"
- 다중 if문
// 문법
if [조건]; then
명령문
elif [조건]; then
명령문
elif [조건]; then
명령문
else
fi
---
// 예시
read a
if [${a} -ge 90]; then
echo "A 학점"
elif [${a} -ge 80]; then
echo "B 학점"
else
echo "C 학점"
fi
- 다중 선택문 CASE
// 문법
case [문자열] in
경우 1) 명령문;;
경우 2) 명령문;;
경우 3) 명령문;;
*) 명령문;;
esac
---
// 예시
case $a in
A) echo "A 기억";;
B) echo "B 기억";;
C) echo "C 기억";;
*) echo "A B C 외 기억";;
esac
- for 반복문
// 문법
for 변수 in [옵션]
do
명령문
done
---
// 예시
for a in "seq 1 5"
do
echo $a
done
- while 반복문
// 문법
while [조건]
do
명령문
done
---
// 예시
a = 1
while [ $a -lt 5 ]
do
echo $a
a = $(($a-1))
done
- until 반복문
// 문법
until [조건]
do
명령문
done
---
// 예시
a = 5
until [ $a -eq 0]
do
echo $a
a = $(($a-1))
done
4. 환경 설정
- 환경 설정 변수
변수 | 설명 |
---|---|
$PATH | 실행 파일을 찾을 경로 |
$HOME | 현재 로그인한 사용자의 홈 디렉터리 경로 |
$LANG | 쉘에서 사용하는 언어 |
$SHELL | 로그인 시 쉘의 실행 파일 경로 |
$HISTFILE | 히스토리 파일 경로 |
$TMOUT | 세션 유지 시간 |
- 환경 설정 명령
변수 | 명령 |
---|---|
env | 전역 변수 설정 및 출력(조회) |
set | 사용자 환경 변수 설정 |
export | 환경 변수를 설정 |
echo | 환경 변수들을 출력(조회) |
setenv | 사용자 환경 변수 출력(조회) |
printenv | 현재 설정되어 있는 환경 변수들을 출력(조회) |
unset | 환경 변수를 해제 |
- 쉘 스크립트 예시
until who | grep wow
do
sleep 5
done
5, export(환경 설정 변수)
export가 매개 변수 없이 쓰일 경우 현재 설정된 환경 변수들을 확인할 수 있음
사용자가 생성하는 변수는 export 명령어로 표시하지 않는 한 현재 쉘에 국한됨
변수를 export시키면 전역 변수처럼 되어 끝까지 기억됨
환경 변수 임시 적용
$ export 환경_변수명=값
환경 변수 영구 적용 파일
- /etc/bash.bashrc
- /etc/bash.bashrc
환경 변수 해제
$ unset 환경_변수명