티스토리 뷰
1. parentheses, braces : cur-shell, sub-shell 예제
ex_cmd.sh 파일을 아래와 같이 작성한다. vi 이용.

그리고 해당 프로그램을 실행시켰을 때, 아래와 같은 오류가 발생하였다.

이것은 읽고(r) 쓰고(w) 접근하는(w) 권한에 대한 모드 때문이었다. chmod로 모드를 변경할 수 있다.
chmod에 대한 man페이지

chmod를 이용해서 ex_cmd.sh의 모드를 변경한 후 실행하면 아래와 같다.
위의 ( ) 로 실행한 명령어는 자식 프로세스를 하나 더 만들기 때문에 ex_cmd.sh가 두개가 보이고,
아래의 { } 로 실행한 명령어는 자기 자신 프로세스에서 실행하기 때문에 ex_cmd.sh가 하나로 보인다.

2. refactoring 예제
1) expr 사용
vi로 sum_100.sh를 작성하였다.
expr을 사용해서 while loop를 만들었다.

모드를 변경하고 실행하면 결과 화면은 아래와 같다.

맨 끝에 출력된 4490, 4693 은 마지막 PID이다.
이 두 PID의 차이로 두 개 사이에 몇 개의 프로세스가 생성되었는지를 알 수 있다.
4693 - 4490 = 203
expr 명령을 한 번 실행할 때마다 자식 프로세스가 하나 생성된다.
1~100을 더할 때 expr 을 두번씩 100번 반복되었으니 200번 expr이 실행된 것. (=200개의 자식 프로세스가 생성된 것.)
이것은 시스템에 부담이 간다.
2) (()) 이용.
vi로 sum_100_2.sh를 작성하였다.
(())을 사용해서 while loop를 만들었다.
sum과 iter계산하는 부분을 ((sum=sum+iter))이런 식으로 바꾸고 싶었는데, 문법이 틀려서인지 계속 실행에 실패했다.

모드를 변경하고 실행하면 결과 화면은 아래와 같다.

6102 - 6101 = 1
cat 명령어로 인해서 하나의 프로세스가 증가한다.
즉 이 프로그램은 해당 프로세스에서 모든 연산을 수행한다.
3) 1~20000 합산 예제. expr 사용
1)에서 1~100까지 더했던 것을 20000으로 숫자만 바꾸었다. 귀찮아서 파일이름은 그대로 진행.
해당 셸 코드를 사용할 때 얼마만큼의 시간이 필요한지 계산하였다.

4) 1~20000 합산 예제. (( )) 사용
2)에서 1~100까지 더했던 것을 20000으로 숫자만 바꾸었다. 귀찮아서 파일이름은 그대로 진행.
해당 셸 코드를 사용할 때 얼마만큼의 시간이 필요한지 계산하였다.

3)에 비해 훨씬 수행 시간이 빠르다. 3은 프로세스를 새로 많이 만들기 때문.
sys는 커널이 소요한 시간
'OS > 리눅스' 카테고리의 다른 글
| Ubuntu16.04 외부명령어 - split, head, tail, paste, cat, tac함수 (0) | 2020.12.16 |
|---|---|
| Ubuntu16.04 curl, 정규표현식 실습 (0) | 2020.12.16 |
| Ubuntu16.04 stdio - redirection 개념 및 pipe 실습 - 실행 안되는 문제 해결 (0) | 2020.12.15 |
| Ubuntu16.04 - child process의 exit code 실습 (0) | 2020.12.15 |
| Ubuntu16.04 - systemd default target 변경 (0) | 2020.12.13 |
- Total
- Today
- Yesterday
- roslaunch
- VMware
- HC-SR04
- python3
- 포트인식문제
- set backspace
- 아두이노 IDE
- subscriber
- Publisher
- Ubuntu20.04
- 초음파센서
- Ubuntu16.04
- 코드리뷰
- Python
- umount
- 8자주행
- ROS
- vue/cli
- 백준알고리즘
- 윈도우 복구
- C++
- 프로그래머스
- 윈도우
- filesystem
- 리눅스
- 원격 통신
- 우분투
- sensehat
- Mount
- VirtualBox
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
