과제 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 |