📝리다이렉션
리다이렉션을 이용해 다른 장치로 변경할 수 있다
예) 표준 출력장치가 모니터로 되어있는걸 프린터로 바꾼다던가 합니다.
- 표준출력
- [명령 프롬프트 결과] (모니터)
- 표준입력
- [명령 프롬프트] (키보드)
📝출력의 방향을 바꾸는 기호 (>)
명령 > 파일명
명령어 내용을 파일명에 저장하는 것입니다.
notepad test.txt는 test.txt라는 파일을 만드는 것입니다.
dir > test.txt는 dir 명령어의 내용을 test.txt에 입력하라는 말입니다.
열어보면 위와 같이 되어있습니다
📝기존파일에 추가 입력하는 기호 (>>)
명령 >> 파일명
기존 파일에 있는 내용에 이어서 명령어를 입력하라는 의미입니다
여기에서 test.txt 에 dir 명령어의 내용이 담겨있는데 >를 쓸 경우 덮어쓰기가 됩니다.
>>을 쓰면 그 안에 내용은 보존하고 이어쓰기가 됩니다.
📝입력의 방향을 바꾸는 기호 (<)
명령 < 파일명
원래 키보드로 입력을 하는데 그걸 파일로 대체하고 명령을 이행하라는 의미입니다.
즉 파일에 내용이 명령어의 매개변수가 되는 것이죠
📝파일디스크립터 (fd)
리눅스, 유닉스는 컴퓨터의 모든 것을 파일로 모델링합니다.
- 0번
- 기본적으로 생성될 때 입력할 수 있는 기능이 해당 파일을 참조
- 1번
- 읽을 수 있는 기능이 해당 파일을 참조
- 2번
- 해당 파일의 오류를 출력해주는 기능이 해당 파일을 참조
그 후에 소켓, 다른 파일 등.. 이 파일을 참조하는 애들이 순차적으로 3번 4번 5번... 이런식으로 가지게 됩니다.
그러면 해당 프로세스의 3번을 읽으면 어떤 파일이 참조하고 있는지 알 수 있게 됩니다.
(번호로 매핑테이블을 만들고 빠르게 접근할 수 있다)
# 파일 디스크립터 갯수 세주는 쉘스크립트
pids=`ps -ef | awk '{print $2}'`
count=0
for pid in $pids
do
tmp=`ls /proc/$pid/fd/ | wc -l`
count=`expr $count + $tmp`
done
echo $count
1번째 testing.sh 실행은 vi로 파일을 열기전 전체 프로세스의 파일 디스크립터 개수입니다.
2번째 testing.sh 실행은 vi로 파일을 열었을 때 전체 프로세스의 파일 디스크립터 개수입니다.
해당 프로세스를 참조하는 곳과 파일 디스크립터 확인 명령어 → ls -all /proc/${pid}/fd/
이렇게 참조하는 곳이 많아질 수록 숫자가 점점 늘어나게 됩니다.
📝프로세스
현재 시스템에 실행중인 프로그램을 의미합니다.
📝PID
프로세스는 번호로 관리됩니다 이걸 PID라고 합니다.
📝데몬 프로세스
특정 서비스 제공하는 프로세스
📝고아 프로세스
자식 프로세스가 살아있는데 먼저 부모 프로세스가 종료된 경우
📝좀비 프로세스
실행을 종료했는데도 프로세스 테이블에 남아있는 경우