ps [옵션] : 현재 실행 중인 프로세스 정보를 출력한다. 프로세스 확인 및 관리를 위해 사용한다.
-e : 시스템에 있는 모든 프로세스 출력
-f : 프로세스에 대한 자세한 식별 정보 출력
-u UID : 특정 사용자에 대한 모든 프로세스 출력
-o 항목 : 특정 프로세스 정보 항목에 대한 프로세스 정보 출력 ex) ps -o uid, ps -o pid
-p PID : 특정 프로세스 ID에 대한 프로세스 정보 출력
-ef : 프로세스의 식별 정보를 중점적으로 모든 프로세스 출력
ef 옵션은 굉장히 길게 출력이 되기 때문에 more을 사용해서 페이지 단위로 출력했다.
pgrep [옵션] 패턴 : 특정 프로세스 이름으로 찾아 정보 출력 = ps [옵션] | grep 패턴
pgrep은 특정 프로세스만 리스트로 출력하는 명령어이다.
-x : 입력해준 패턴 sw와 정확히 일치하는 프로세스 정보가 출력된다.
-n : sw 패턴을 포함하고 있는 가장 최근의 프로세스 정보 출력 => 233
옵션 사용 시, 여러 개의 옵션을 붙여서 혹은 따로 사용 가능하다.
/*번외
-c : 조건에 맞는 프로세스 수를 출력한다.
이건 피피티에는 없던 내용인데, 공부하다 보니까 알아두면 재밌을 것 같아서 해봤다.
옵션 없이 pgrep sw를 했을 때 숫자 세개가 나오는데, -c를 붙여서 출력하면 3이 나온다.
-l : PID와 함께 일치하는 프로세스 이름 출력
옵션을 -lu로 했더니 -u만 입력했을 때 나오던 숫자 옆에 프로세스 이름이 함께 출력된다.
-u UID : 특정 사용자의 모든 프로세스 출력
사용자 이름 kchabind으로 입력해서 모든 프로세스가 출력되도록 했다.
-t term : 특정 단말기와 관련된 프로세스 정보 출력, 특정 터미널에 실행 중인 프로세스의 PID 출력
term이 대체 뭘까 열심히 찾아보니까 terminal이었다. 이 옵션은 프로세스 중에 TTY 값이 일치하는 PID 목록만 출력한다.
시그널 : 특정 이벤트가 발생했을 때 신호를 보내서 알려주는 것, 프로세스에게 보내는 신호. 시그널을 수신하면 지정된 동작을 수행한다.
<기본 응답이 종료인 시그널들>
1 SIGHUP : hang up의 약어. 로그아웃과 같이 터미널에서 접속이 끊겼을 떄 보내지는 시그널.
2 SIGINT : 키보드로부터 오는 실행 중지 시그널. 보통 Ctrl-C에 의해 발생한다.
9 SIGKILL : 무조건 종료. 프로세스를 강제로 종료시킨다. sigterm과 달리 무시할 수 없다.
15 SIGTERM : terminate의 약자. 정상 종료 시키는 시그널, 무시할 수도 있다. kill 명령의 기본 시그널.
프로세스 종료
-사용자의 프로세스만 종료시킬 수 있다.
-관리자는 모든 프로세스를 종료시킬 수 있다.
*jobs 명령어
jobs [옵션] [작업번호] / 작업 목록을 출력해준다. 작업 번호 미지정시 백그라운드 작업을 모두 출력한다.
항목 | 출력 예시 | 의미 |
작업 번호 | [1] [2] [3] .... | 백그라운드 실행 시마다 순차적 증가 |
작업 순서 | +, - | + : 가장 최근에 접근한 작업 - : + 작업 바로 전 접근 공백 : 그 외 |
상태 | running | -작업 상태를 표시한다. running : 실행 중 done : 정상적 작업 종료 terminated : 비정상적 작업 종료 stopped : 작업 일시 중단 |
명령 | sleep 100& | 백그라운드로 실행 중인 명령 |
포그라운드(fore-ground) 처리 : 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 다른 명령을 입력할 수 없는 처리 방법. 보통의 처리 방법.
Ctrl-C를 눌러서 종료.
백그라운드(back-ground) 처리 : 입력한 명령이 실행되는 동안 결과가 출력될 때까지 기다림없이 또 다른 명령을 입력할 수 있다. 명령어 뒤에 &를 붙여야한다. 보통 명령 실행 시간이 길거나 실행 중 다른 작업을 해야할 때 사용한다.
작업 전환 및 종료
Ctrl-Z : 작업 일시 중지
bg %[작업번호] : 백그라운드 작업으로 전환
fg %[작업번호] : 포그라운드 작업으로 전환
kill %[작업번호] : 해당 작업을 종료
pkill [시그널] 프로세스명
프로세스의 명령이름으로 프로세스를 찾아 지정한 시그널을 보낸다.
<쉘 스크립트 프로그래밍>
쉘 : 사용자의 명령을 처리하고, 사용자와 운영체제 사이에서 중간자 역할을 한다.
쉘 스크립트
-명령어들을 모아놓은 텍스트 파일
-쉘이 쉘 스크립트 파일을 해석하여 한 줄 씩 실행한다.
1) bash kali.sh
2) ./kali.sh => ./파일명
vi 편집기를 이용해서 kali.sh 스크립트 파일을 만들고 bash kali.sh로 실행시켰다.
chmod로 모든 사용자에게 실행권한을 주도록 했더니 kali.sh의 파일 권한이 변경된 것을 볼 수 있다.
자꾸 왜 bash kali.sh를 할 때 명령어를 찾을 수 없다는 말이 나올까 이상해서 찾아보니 vi 편집기에서 스크립트를 작성해야하는 거였다. 다시 해보니까 제대로 Hello World가 출력됐다.
쉘 변수
1) 전역변수(환경변수)
-모든 쉘에서 사용 가능.
-변수명 앞에 export 명령어를 붙여 선언한다.
*환경변수 예시
변수명 | 의미 |
$user | 사용자 이름 |
$term | 터미널 타입 |
$path | 명령어를 검색할 디렉토리 리스트 |
2) 지역변수 : 현재의 쉘에서만 사용 가능
*공백 = 구분문자
변수 선언 시 앞 뒤에 공백이 있어서는 안된다.
위 사진과 같은 경우 =과 " 사이에 공백이 있으므로 오류가 난다.
큰 따옴표 " " : 공백을 보존한다.
위 이미지를 보면 알 수 있듯이 sleeping mandu를 큰 따옴표 없이 입력하면 공백이 몇 자가 되든간에 출력은 항상 sleeping mandu 이다. 큰 따옴표 안에선 공백이 보존돼서 출력도 공백을 무시하지 않는다.
작은 따옴표 ' ' : $의 의미를 제거한다.
a를 변수로 선언했지만, '$a'라고 하면 $a가 그대로 출력된다.
작은 따옴표 없이 $a라고 입력해야 1204가 출력된다. "$a"도 변수 값이 출력된다.
역따옴표 ` `: 실행 결과를 나타낸다. 소괄호로 감싸는 것과 같은 역할을 한다.
매개변수
$0 : 쉘 스크립트 이름
$1, $2, $3, ..... : 매개변수 1, 2, 3,..
$# : 입력된 매개변수 들의 수
$* : 입력된 매개변수들의 목록
read [옵션] 변수명 : 표준 입력으로 문자열을 입력받는다. C언어의 scanf 함수를 생각하면 될듯.
-p : 출력과 입력을 한 행에서 처리한다.
자동입력 처리
명령 << END
입력 내용
END
END = 입력 종료 문자
END가 입력될 때까지 키보드 입력을 받아들인다.
case문, until문 예제 실습.
함수 호출 예제 실습
매개변수 세 개를 파일 실행 시 옆에 써줘야 한다.
비교 연산자
-산술 비교 연산자
연산자 | 의미 |
A -eq B equal |
A, B 같으면 참 |
A -ne B not equal |
A, B 다르면 참 |
A -gt B greater than |
A가 B보다 크면 참 |
A -ge B greater than or equal to |
A가 B보다 크거나 같으면 참 |
A -lt B less than |
A가 B보다 작으면 참 |
A -le B less than or equal to |
A가 B보다 작거나 같으면 |
-문자열 비교 연산자
연산자 | 의미 |
문자열 A = 문자열 B | 두 문자열이 같으면 참 |
문자열 A != 문자열 B | 두 문자열이 다르면 참 |
-n 문자열 | 문자열이 null이 아니면 참 |
-z 문자열 | 문자열이 null이면 참 |
-파일 관련 연산자
연산자 | 의미 |
-e 파일명 | 파일이 존재하면 참 |
-d 파일명 | 파일이 디렉토리면 참 |
-f 파일명 | 파일이 일반 파일이면 참 |
-r 파일명 | 파일이 읽기 가능이면 참 |
-w 파일명 | 파일이 쓰기 가능이면 참 |
-x 파일명 | 파일이 실행 가능이면 참 |
'Linux' 카테고리의 다른 글
Linux 3주차 과제 2 (0) | 2022.05.10 |
---|---|
Linux 3주차 스터디 과제 3 (0) | 2022.05.08 |
Linux study 2주차 실습 4 (0) | 2022.04.01 |
Linux study 2주차 Pipe 실습 (0) | 2022.04.01 |
Linux study 2주차 : cmp, diff, sort, split, paste (0) | 2022.04.01 |