4.6 파이프, 필터, 리디렉션
파이프
파이프란 2개의 프로그램을 연결하는 연결 통로의 의미다.
'|'를 사용한다.
ex. ls -l /etc | more -> ls -l /etc 의 파일을 화면 단위로 출력
필터
필터란 필요한 것만 걸러주는 명령어다. grep, tail, wc, sort, awk, sed 명령어 등이 있다.
ps -ef | grep bash -> bash라는 글자가 들어간 프로세스만을 출력한다.
리디렉션
> 출력을 파일이나 기타 장치로 처리한다.
< 내용을 입력받는 출처를 정한다.
(덮어쓰기)
>>, << 위와 같으나 덧붙이기
*리디렉션 기준 앞에는 무조건 명령어가 와야 된다.
리디렉션은 표준 입출력 방향을 바꿔준다.
- ls -l > list.txt -> ls -l 명령 결과를 화면에 출력하지 않고 list.txt 파일에 저장하도록 한다. 만약 list.txt 파일이 기존에 있다묜 덮어쓰도록한다.(overwrite)
- ls -l 1> list.txt -> 1: 표준 출력(에러나 기타 특정 상황이 아닌 결과값), 2: 표준 에러
- ls -l >> list.txt -> 위와 같다. 단 list.txt 파일이 기존에 있다면 이어서 쓴다(append)
- sort < list.txt -> list.txt 파일을 정렬해서 화면에 출력한다.
- sort < list.txt > out.txt -> list.txt 파일을 정렬해서 out.txt 파일에 쓴다.
4.7 프로세스, 데몬, 서비스
4.7.1 프로세스
프로세스는 하드데스크에 저장된 실행 코드(프로그램)가 메모리에 로딩되어 활성화된 것 정도로 설명할 수 있다.
프로세스와 관련된 필수 개념 및 용어는 다음과 같다.
*cpu = 프로세서
- 포그라운드 프로세스 - 실행하면 화면에 나타나서 사용자와 상호작용하는 프로세스를 말한다. (대부분의 응용 프로그램)
- 백그라운드 프로세스 - 실행은 되었지만 화면에 나타나지 않고 뒤에서 실행되는 프로세스를 말한다. 예를 들어 바이러스 백신과 서버 데몬 등이 있다.
- 프로세스 번호(PID) - 각각의 프로세스에 할당된 고유 번호. 활성화된 프로세스를 메모리에서 강제로 제거하려면 프로세스 번호를 사용해야 한다.
- 작업 번호 - 백그라운드 프로세스의 순차 번호를 의미한다. (백그라운드 작업 확인 명령어: jobs로 확인 가능(해당 터미널에서만 가능) / [1]+처럼 +가 붙어있을 경우, 1순위)
- 부모 프로세스와 자식 프로세스 - 모든 프로세스는 부모 프로세스의 하위에 종속되어 실행된다. 부모 프로세스를 종료하면 그와 종속된 자식 프로세스도 모두 종료된다.
다음은 프로세스와 관련된 주요 명령이다.
- ps - 현재 프로세스의 상태를 확인하는 명령어
- ps -ef | grep 프로세스 이름 (ps -ef = ps aux = 모든 실행 보기)
- kill - 프로세스를 강제로 종료하는 명령어
- kill -9 프로세스 번호 (시그널 번호 9번은 강제종료)
- pstree - 부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여준다.
모든 명령어 뒤에 &을 붙이면 자동으로 백그라운드로 실행된다.
-> gedit 등은 별도의 창으로 실행되므로 백그라운드로 실행해도 아무 문제 없다.
-> 압축 프로그램으로 대용량 압축 파일을 만들 때 시간이 오래 걸리기 때문에 유용
-> vi 에디터와 같이 현재 터미널에서 입출력해야 하는 프로세스를 백그라운드 프로세스로 실행하는 것은 아무 의미 없다.
NOTE
kill signal
kill -2 PID: SIGINT = Ctrl+c
kill -9 PID: SIGKILL 강제 종료
Kill PID (-15): SIGTERM 정상 종료 (생략 가능)
kill -20 PID: Ctrl+z
PID 1 = systemd(이전엔 init)
/dev/null : null, 없다. (블랙)
bg %작업번호 / fg %작업번호 (백그라운드 <-> 포그라운드)
4.7.2 서비스
데몬이라고 부르는 서비스는 서버 프로세스를 말한다.
4.8 서비스와 소켓
서비스는 평상시에도 늘 가동하는 서버 프로세스며, 소켓은 필요할 때만 작동하는 서버 프로세스다. 서비스와 소켓은 systemd(슈퍼 데몬)라는 서비스 매니저 프로그램으로 작동시키거나 관리한다.
4.8.1 서비스 (stand-alone)
서비스의 특징은 다음과 같다. (상시구동)
- 시스템과 독자적으로 구동 및 제공되는 프로세스를 말한다. 웹 서버, DB 서버, FTP 서버 등을 예로 들 수 있다.
- 실행 및 종료는 대개 systemed start/stop/restart /enable/disable 서비스이름 명령으로 사용된다.
- 서비스의 실행 스크립트 파일은 /usr/lib/systemd/system 디렉터리에 '서비스이름.service'라는 이름으로 확인할 수 있다.
- 부팅과 동시에 서비스의 자동 실행 여부를 지정할 수 있다. 커미널에서 systemctl list-unit-files 명령을 실행하면 현재 사용과 사용 안 함을 확인할 수 있다.
- 메모리 자원 더 소모
4.8.2 소켓 (inetd, xinetd)
소켓의 특징은 다음과 같다. (필요할 때 구동)
- 외부에서 특정 서비스를 요청할 경우 systemd가 구동시킨다. 그리고 요청이 끝나면 소켓도 종료된다.
- systemd가 서비스를 새로 구동하는 데 시간이 소요되기 때문에 소켓이 소비스에 비해 처음 연결되는 시간이 약간 더 걸릴 수 있다.
- 소켓과 관련된 스크립트 파일은 /usr/lib/systemd/system 디렉터리에 '소켓이름.socket'이라는 이름으로 존재한다.
- 메모리 자원 덜 소모
4.9 응급 복구
시스템이 복구되지 않는 이유는 무척 다양하다.(ex. 사용자가 비밀번호를 잊어버리는 경우) 이때 해야 하는 작업이 '응급 복구'다.
시스템을 보호하려면 처음 부팅할 때 나오는 GRUB 자체를 편집할 수 없도록 설정할 필요가 있다.
4.10 GRUB 부트로더
GRUB 부트로더란 Rocky Linux를 부팅할 때 처음 나오는 선택 화면을 말한다.
GRUB의 기본적인 특징은 다음과 같다.
- 부트 정보를 사용자가 임의로 변경해 부팅할 수 있다.
- 다른 여러가지 운영체제와 멀티부팅을 할 수 있다.
- 대화형 설정을 제공하므로 커널 경로와 파일 이름만 알면 부팅이 가능하다.
Rocky Linux에서는 GRUB보다 더 향상된 GRUB 2를 사용한다. GRUB 2의 장점은 다음과 같다.
- 셸 스크립트를 지원함으로써 조건식과 함수를 사용할 수 있다.
- 동적 모듈을 로드할 수 있다.
- 그래픽 부트 메뉴를 지원하요 부트 스플래시 성능이 개선되었다.
- ISO 이미지를 이용해서 바로 부팅할 수 있다.
- 설정 파일의 형식이 변경되었지만 더 향상된 냐용을 포함할 수 있다.
GRUB 2의 설정 파일은 /boot/grub2/grub2.cfg 파일(직접 편집해서는 안 된다.)이며 /etc/grub2.cfg는 링크 파일이다.
설정된 내용을 변경하려면 /etc.default/grub 파일 혹은 /etc/grub.d/ 디렉터리의 파일을 수정한 후 grub2-mkconfig 명령을 적용한다.
GRUB 2와 관련된 내용은 방대하므로 상세 내용은 GNU GRUB Manual 2.06을 참조하자.
[COMMAND] << DELIMETER
HERE-DOCUMENT
DELIMETER
DELIMETER -> EOF
4.11 간단한 커널 컴파일
4.11.1 모듈의 개념과 커널 컴파일의 중요성
커널의 가장 큰 역할은 '하드웨어 지원'이다.
초창기 커널에는 하드웨어를 지원하는 코드를 전부 넣어놓았지만, 시간이 지날수록 지원해야 할 하드웨어가 많아져 커널에 넣어야 할 코드가 많아졌고 커널이 점점 커졌다. 커널이 커지면 컴퓨터의 자원을 많이 차지해 결국 운영체제를 무겁게 만드는 결과를 낳으므로 자주 사용하지 않고 가끔 사용하는 코드는 커널에 넣지 않고 별도로 보관했다가 필요할 때 호출하게 됐고 이러한 코드를 '모듈'이라고 한다.
커널 컴파일 또는 커널 업그레이드는 주로 하드웨어 지원 또는 보안 문제 때문에 하게 된다.
uname -r: 커널버전
uname -a: 모든 정보
uname -n: 노드 이름
uanme -s: 커널 이름
4.11.2 커널 컴파일
커널 업그레이드 순서
- 현 커널 버전 확인
- 커널 소스 다운로드
- 커널 소스 압축 풀기
- 커널 설정 초기화
- 커널 환경 설정
- .config 편집 및 이전 정보 삭제
- 커널 컴파일 및 설치
- 부트로더 확인
'Linux' 카테고리의 다른 글
Ch.6 하드디스크 관리와 사용자별 공간 할당-1 (0) | 2024.03.31 |
---|---|
Ch.5 X 윈도 (0) | 2024.03.31 |
CH.4 서버를 구축하는 데 알아야 할 필수 개념과 명령-4 (0) | 2024.03.26 |
CH.4 서버를 구축하는 데 알아야 할 필수 개념과 명령-3 (0) | 2024.03.24 |
CH.8 원격지 시스템 관리 (0) | 2024.03.18 |