본문 바로가기

LINUX

[SWING] Linux 03

과제 1

 

 

프로세스

 

ps [옵션] : 'process status'

 

현재 실행 중인 프로세스(실행 중인 프로그램)의 정보를 출력하고,

프로세스 확인 및 관리를 위해 사용한다.

윈도우의 작업관리자와 비슷하다고 한다.

 

-e : 시스템에 있는 모든 프로세스 (every의 약자일까?)

-f : 프로세스에 대해 자세한 식별 정보

-u UID : ID를 입력받은 user에 대한 정보

-o 항목 : 특정 항목에 대한 정보

-p PID : 특정 process ID에 대한 프로세스 정보

-ef : 프로세스의 식별 정보를 중점적으로 모든 프로세스 

 

 

 

pgrep [옵션] 패턴 = ps [옵션] | grep 패턴

 

특정 프로세스 이름으로 정보를 찾아 출력한다.

 

-x : 패턴과 exactly 일치하는 프로세스의 정보

-n : 패턴을 포함한 프로세스 중 가장 최근의 프로세스 정보 (near의 약자일까?)

-u UID : 특정 user 의 모든 프로세스

-l : PID (프로세스 번호)와 프로세스 이름

-t term : 특정 단말기와 관련된 프로세스의 정보

 

 

 

시그널을 보내 프로세스를 종료할 수도 있다.

시그널의 종류에는 SIGHUP(1), SIGINT(2), SIGKILL(9), SIGTERM(15) 등이 있고 프로세스는 기본적으로 종료로 응답한다.

 

이때, 관리자(root)는 모든 프로세스를 종료시킬 수 있지만 아니라면 사용자의 프로세스만 종료시킬 수 있다.

 

kill [시그널] PID

 

: PID (프로세스 번호)를 이용해 프로세스에게 시그널을 보내 종료시킨다.

 

 

하고 있는 작업이 없어서인지 아무것도 안나오길래 아까 위에 있던 su 의 PID를 입력해서 종료해버렸다.

그랬더니 root 계정이 해제된 것을 볼 수 있다.

 

 

pkill [시그널] 프로세스명

 

: 프로세스의 명령이름으로 찾아 시그널을 보내 종료시킨다.

 

 

오. 아깐 아무것도 나오지 않아서 상심했는데...

아래에 나올텐데 백그라운드에 sleep 200 & 한번 실행했다고 뭔가 새로운 작업이 생겼다.

생기자 마자 죽여버렸다. 

괜찮다. 이제 다시 만들줄 아니까.

 

 

작업 제어

 

<작업 처리 방법>

 

fore-ground 처리

 

입력한 명령이 실행되어 결과가 출력될 때까지 다른 명령은 입력할 수 없는 처리 방법으로 가장 보편적임.

한번에 하나씩만 처리할 수 있고 결과가 완전히 출력되어야 다음 명령을 입력할 수 있다고 이해하면 됨.

 

개인적으로 좀 이상하다. 결과가 출력되는게 늦어서인지 엔터를 눌러도 실행은 안되고 계속 엔터만 쳐지질 않나.

 

 

back-ground 처리

 

명령 입력만 끝나면 출력 유무와 관계없이 바로 다른 명령을 입력할 수 있는 처리 방법으로,

한번에 여려 명령을 처리할 수 있고 결과가 출력되든 말든 바로 다음 명령을 입력할 수 있다고 이해하면 됨.

그렇기 때문에 명령 실행 시간이 길거나 실행 중 다른 작업을 해야할 때 사용한다.

명령어 뒤에 & 기호를 붙인다.

 

 

<작업 목록 출력>

 

jobs [옵션] [%작업번호]

 

작업 번호를 지정하지 않으면 back-ground 작업을 모두 출력한다.

 

 

 

<작업 전환 및 종료>

 

Ctrl + z : fore-ground 작업을 일시 중지

bg [%작업번호] : back-ground 작업으로 전환

fg [%작업번호] : fore-ground 작업으로 전환

kill [%작업번호] : 작업 종료

 

 

쉘 스크립트

 

쉘은 사용자 명령을 처리하고, 사용자와 운영체제 사이에서 중간자 역할을 하는 프로그램이다.

Bourne Shell 의 실행 파일은 /bin/sh 이고

Bash(Bourne again Shell) 의 실행파일은 /bin/bash 이다.

 

쉘 스크립트는 명령어들을 모아놓은 텍스트 파일로, 쉘이 해석해서 한 줄씩 실행해준다.

여태까지처럼 명령어 하나씩만 실행하지 않고 한꺼번에 실행할 수 있다.

 

#! : 매직 넘버. 항상 첫 행에 위치하면서 처리할 프로그램을 지정한다.

# : 주석 처리

 

실행하는 방법은 다음과 같다.

1) bash 파일명

2) ./파일명 (실행 권한을 부여해줄 때)

 

쉘 스크립트를 만들고

vi 편집기를 작동시키자.

예전에 만들어놓은 swing.txt 파일의 내용인 swing30 을 출력하는 내용을 swing.sh 안에 써보자.

 

bash 로 쉘 스크립트를 실행해도 swing30 이 잘 출력되고,

chmod 로 execute 실행 권한을 부여하고 ./ 를 써도 잘 출력된다.

 

 

 

쉘 변수

 

 

/etc/shells

 

사용 가능한 쉘들의 정보를 가지고 있는 파일이다.

 

 

쉘 변수에서 공백(white space)은 변수들을 구분하는 문자로,

변수를 선언할 때 앞 뒤에 공백이 있으면 안 된다.

 

<따옴표>

 

큰 따옴표 (" ") : 공백을 보존한다.

작은 따옴표 (' ') : $ 의 의미를 없앤다. 따옴표 속 내용이 그대로 출력된다.

역 따옴표 (` `) : 실행 결과를 나타낸다. 소괄호 ()로 감싸는 것과 역할이 같다. 키를 찾기 힘들다면 ~ 키와 같은 키이다.

 

 

<매개변수>

 

$0 : 쉘 스크립트의 이름

$숫자 : 매개변수 n

$# : 매개변수들의 수

$* : 매개변수들의 목록

 

 

매개변수란 무엇일까요? 매직 넘버는 정확히 언제 쓰는걸까요?

역시 아무 일도 일어나지 않는군요.

일어나게 만들어 봅시다.

touch 명령어로 para.sh 라는 쉘 스크립트를 만들어 줍니다.

그리고 나면 VI 편집기를 켜줘요.

 

 

짜잔. 매직넘버와 주석도 쉘 스크립트 안에서 다는 것이었습니다.

저 역 슬래시를 치는 방법이 궁금하신가요? 저도 궁금해서 찾아봤습니다.

 

역 슬래시는 \ 키를 누르면 입력할 수 있습니다.

 

 

 

 

 

입력

 

read [옵션] 변수명

 

쉘에 내장된 명령어로,

표준 입력으로 문자열을 받는다.

 

-p : 출력과 입력을 한 행에서 처리한다.

 

 

-p 옵션을 넣어볼까요.

 

 

 

입력과 출력을 한 행에서 처리해야하는데 그냥 출력되지 않아도 될게 출력되고 출력되어야 할게 사라진 느낌입니다.

입력을 받았으니 출력하지 않겠단 건가 봅니다.

 

 

<자동 입력 처리>

 

명령 <<TERMINATOR

내용을 입력한다.

TERMINATOR

 

TERMINATOR : 입력 종료 문자. 이 문자를 입력하기 전까지 키보드로 입력할 수 있다.

 

 

 

TERMINATOR 인 END 를 입력한 뒤 입력한 bye 가 보라색 글씨가 아니라 흰 글씨로 보이는걸 보니 정말 키보드 입력이 되지 않는 것을 확인할 수 있습니다.

 

 

 

조건문

 

if 문

 

 

case 문

 

 

for 문

 

 

while 문

 

 

 

until 문

 

 

 

함수 정의

 

 

 

과제 2

 

 

 

 

 

과제 3

 

 

 

 

 

 

'LINUX' 카테고리의 다른 글

[SWING] Linux 06  (0) 2022.06.27
[SWING] Linux 05  (0) 2022.05.23
[SWING] Linux 04  (0) 2022.05.14
[SWING] Linux 02  (0) 2022.04.02
[SWING] Linux 01  (0) 2022.03.27