Computer(인강)/시스템 프로그래밍(40)
-
쉘 스크립트 03 - 반복문과 실제 예제
안녕하세요 bannavi입니다^ㅅ^ 오늘은 쉘스크립트 세번째 시간! 반복문과 실제 예제를 살펴보려고 합니다 바로 시작하도록 하겠습니다 파일 검사 실습 쉘 스크립트 조건문 - 해당 파일이 있는지 없는지를 출력하는 쉘 스크립트 작성해보기 첫번째 인자가 참이면 출력하기. 디렉토리에 없는것을 입력하면 안나오지만 디렉토리에 있는것을 입력하면 저렇게 잘 나오는것도 확인하실 수 있습니다. 논리 연산 (참고) 조건문 문법 # 기본 if/else 구문 실습 쉘 스크립트 조건문 * 두 인자값을 받아서, 두 인자값이 같으면 'same values'를 출력하고, 그렇지 않으면 'different values'를 출력하라 실습 쉘 스크립트 해석하기 # 명령해석 $?는 가장 최근에 쉘스크립트에서 실행한 명령의 결과값. 이게 0이..
2021.03.11 -
쉘스크립트 02 - 조건문
안녕하세요 bannavi입니다^ㅅ^ 오늘은 쉘스크립트의 두번째 시간! 조건문에 대해 살펴보도록 하겠습니다 바로 시작하겠습니다 4번라인, 6번라인에서 대괄호를 빼고 실행시켜봤습니다. 대괄호를 뺀 부분은 그대로 출력이 되는 모습을 보실 수 있습니다. 아하 대괄호를 써야 우리가 원하는 값을 인식하는군요. 실습 * 아이디 관련 정보 리스트 변수로 만들고, 각 정보 출력하기 1. 실제 이름(0번 인덱스) 2. 나이(1번 인덱스) 3. 직업(2번 인덱스) 배열로 세개의 데이터를 만들고 (숫자는 $표시로 만들면 문자로 인식하는 것이고 달러 표시를 안해도 숫자로 인식하기 때문에 정상적으로 출력이 됩니다) wq!로 나와 주시고요 코드를 출력해보면 정상적으로 출력이 되는 모습을 확인하실 수 있습니다. 특별한 기호들이 쉘 ..
2021.03.11 -
쉘 스크립트 - 01 이해와 변수
안녕하세요 bannavi입니다^ㅅ^ 오늘은 쉘스크립트의 이해와 변수 부분에 대해서 살펴보도록 하겠습니다 바로 진행하도록 하겠습니다. 쉘 스크립트 1. 쉘을 사용해서 프로그래밍을 할 수 있음 2. 서버 작업 자동화 및 운영(DevOps)을 위해 기본적으로는 익혀둘 필요가 있음 3. 쉘 명령어를 기본으로 하되, 몇가지 문법이 추가된 형태 4. 시스템 프로그래밍에서 꼭 익히는 내용 중 하나 쉘 스크립트의 예 문제점 서버가 어느날 다운되었다. 확인해보니 서버 저장공간이 하나도 남지 않음. 로그파일 업데이트가 안되어 관련 프로그램 비정상 종료 이유는 로그파일이 많이 쌓여있음. 어떻게 하면 자동으로 오래된 로그파일을 삭제할까? 해결 간단한 쉘 스크립트 생성 및 주기적 실행(crontab) 기본 문법 1. 쉘 스크립..
2021.03.10 -
시그널 동작 매커니즘 01 사용법 이해
안녕하세요 bannavi입니다^ㅅ^ 오늘은 시그널 동작 매커니즘의 첫번째, 사용법을 이해해보는 시간을 갖겠습니다 바로 시작하겠습니다 시그널(signal) 시그널은 운영체제에서 IPC기법 중의 하나로도 쓰일수도 있다고 말씀드렸었습니다. 하지만 IPC기법만으로 설명드리기엔 조금 아쉬운 부분도 있습니다. 1. 유닉스에서 30년 이상 사용된 전통적인 기법 2. 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었는지를 알려주는 기법 * ctrl + c를 눌러서프로세스 종료시키기(시그널 사용 예) 이기 때문입니다. 주요 시그널 - 시그널 종류와 각 시그널에 따른 기본 동작이 미리 정해져있음 - 내부적으로는 시그널 번호가 다 있을것 1. SIGKILL: 프로세스를 죽여라 2. SIGALARM: 알람을 발..
2021.03.10 -
IPC기법 - 02 실습2
안녕하세요 bannavi입니다^ㅅ^ 오늘은 IPC기법 실습 두번째 시간이지요 바로 시작해보겠습니다 지난 시간에는 pipe, message queue가 프로세스A와 프로세스B가 커널 공간을 공유한다고 배웠었습니다. 하나의 명령어를 먼저 소개드리겠습니다. ipcs라고 하는 명령어 인데요, 이 명령어를 터미널에 입력하면 현재 커널공간에 생성된 message queue, 이번시간에 배울 공유메모리, 운영체제에서 배웠던 Semaphore 정보를 확인할 수 있습니다. 해당 메시지큐를 삭제한다는 명령어 이렇게 하면 메시지큐에 생성되어있는 메시지가 없는 모습을 확인하실 수 있습니다 msgctl이라는 명령은 해당 메시지큐를 아예 커널 영역에서 삭제하는 명령입니다. 참고로만 알아두세요~ 공유메모리(shared memory..
2021.03.10 -
IPC기법 실습 - 1
안녕하세요 bannavi입니다^ㅅ^ 오늘은 IPC기법 파트에서 실습을 해보려고 합니다 바로 시작해보도록 할게요 ! 운영체제에서는 아래와 같은 기법들만 있다 라고 말씀드리고 넘어갔었는데요 오늘은 실습을 해보려고 합니다 첫번째, pipe(파이프) 두번째, 메시지 큐(message queue) msqid msgsnd msgget msgflg 설정 메시지 큐 코드 예제 메시지를 받을때는 아이디를 똑같이 써야합니다. 이걸 받으려면 프로세스를 또 하나 만들어야되겠죠? pipe파이프처럼 부모 자식 관계일 필요는 없는 것입니다! 메시지 큐의 데이터를 받는 코드에서도 struct를 동일하게 만들어봤구요 새로운 프로세스를 실행하고 동일한 messagequeue의 아이디를 가지고 해당 주소를 접근하면 거기있는 데이터를 읽을..
2021.03.09