[프로세스와 실행]
-
컴퓨터의 구조
- 프로세스 : 실행되고 있는 상태의 프로그램.
- 사용자가 입력한 명령어(command)
- 명령어는 /bin이나 /sbin과 같은 디렉토리에 파일 형태로 저장되어 있음.
- 스토리지에 파일이 저장되어 있고 이를 프로그램이라 함.
- CPU : 프로세서. cpu는 굉장히 빠르게 동작하므로 스토리지의 속도가 따라오지 못함.
- 스토리지에 설치된 프로그램을 사용할 때, 프로그램을 읽어서 메모리에 적재.
- 메모리에 올라온 프로그램을 CPU가 수행.
- 스토리지과 메모리는 정보를 저장하는 공통점이 존재.
- RAM : DDR과 같은 메모리. 가격 비쌈. 저장 용량이 적음. 속도 빠름
- SSD, HDD : 저장장치. storage. 가격 저렴. 저장 용량이 큼. 속도 느림
-
프로세스 모니터링
- ps : 프로세스 리스트를 조회하는 명령어
- 백그라운드에서 실행되는 모든 프로그램을 조회하고 싶다면 ps aux
- apache라는 이름을 갖는 프로세스 조회 ps aux | grep apache
- PID는 프로세스 아이디. 프로세스가 지니는 식별자. 이 식별자를 통해 sudo kill {pid} 로 강제로 종료할 수 있다.
- top 과 htop 은 유사한 프로세스 모니터링 유틸리티.
- htop
- sudo apt-get install htop : 설치
- 컬럼을 클릭하면 이를 기준으로 정렬되어 조회할 수 있음
- MEM% : 프로세스가 물리적인 메모리를 얼마나 사용하는지
- TIME+ : 프로세스 실행시간
- Command : 어떤 명령어가 실행됬는지
- RES : 실제적인 메모리 사용량
- Load average : CPU 점유율. (각 각 1분/5분/15분의 평균치)
-
백그라운드 실행 (ctrl + Z , &)
- 전환작업. 현재 사용하는 프로그램을 바꾸는 작업을 리눅스/유닉스 계열에서도 사용가능하다.
- 사용하는 프로그램을 종료하지 않고 Ctrl+Z 누르면 포그라운드 프로그램과 백그라운드 프로그램을 변경할 수 있다.
- jobs 명령어를 통해 백그라운드로 실행되는 프로그램을 확인 가능.
- fg를 입력하면 백그라운드에 있는 프로그램 진행화면으로 전환된다.
- ls -R 현재디렉토리 뿐만 아니라 하위의 모든 디렉토리를 돌면서 리스트 출력
- 명령어 다음에 &를 입력하면 백그라운드로 해당 명령어를 실행하고 다른 명령어를 입력할 수 있다.
-
항상 실행
- 데몬의 개념
- 데몬은 항상 실행되고 있다는 특성을 지닌다.
- 서버에 해당하는 프로그램은 데몬에 해당된다.
- service와 자동실행
- 웹 서버중에 대표적으로 apache가 존재
- sudo apt-get install apache2 실행 시 /etc/init.d/apache2에 아파치가 설치된다.
- /etc/init.d는 데몬 프로그램들이 위치하는 디렉토리
- 이 프로그램들을 끄고 켜는 것은 일반적인 프로그램과는 다르다.
- 대부분 service start, service stop으로 끄고 킬 수 있다.
- sudo service apache2 start 아파치 실행
- sudo service apache2 stop 아파치 종료
- ps aux를 통해 프로세스 실행 여부 확인
- /etc/rc3.d/ 운영체제를 CLI로 구동
- /etc/rc5.d/ 운영체제를 GUI로 구동
- 경로로 들어가면 심볼릭링크(윈도우로 치면 바로가기)들을 확인할 수 있다.
- /etc/rc3.d/에 있는 심볼링 링크 이름의 의미는
- S는 서버가 시작될 때 함께 시작하는 데몬프로그램.
- K는 실행되지 않는 프로그램
- 뒤에 숫자는 우선순위를 의미한다
- 서버가 재기동될때 자동으로 실행되는 설정을 하고 싶다면 rc3.d에 심볼릭링크를 걸면 된다.
-
정기적 실행(cron)
- 정기적으로 명령을 실행시켜주는 툴.
- 정기적 백업, 전송, 피시 시간 조정 등에 이용
- crontab -e 에디터 실행
- m / h / dom / mon / dow / command
- 실행주기 분 / 시간 / 매월 일자 / 몇 월 / dow는 요일
- crontab expression 참조.
- */1 1분에 한번
- 10 1 1시 10분에 실행
- */1 * * * * date >> date.log
- 1분에 한번씩 일자와 시간을 date.log에 append 해서 기록
- */1 * * * * date >> date.log 2>1&
- 스탠다드 에러는 기록안되므로 이 것을 1(표준 출력)으로 리다이렉트해서 함께 기록.
- crontab --help 를 통해 옵션을 확인할 수 있다.
-
쉘을 시작할 때 실행
- alias는 별명을 의미.
- alias l='ls -al' 이제 l만 입력해도 ls -al 명령어가 수행된다.
- alias ..='cd ..' 상위경로로 이동하면 alias를 생성한 것
- alias c ='clear' c를 누르면 화면이 깔끔하게 지워짐
- echo $SHELL 실행 시 쉘 확인 가능
- 쉘이 실행될 때 .bashrc파일을 실행한다.
- 현재 상태. 프롬프트 정보를 변경
- 특정 명령을 실행 시 명령이 어딨는 순서대로 찾는일.
- $PATH 변경
- 이런 경우 쉘 시작될때 설정되도록 하기 위해서 설정할 수 있다.
[사용자]
-
다중 사용자. multi user
- 다중 사용자 시스템이 되면 복잡도가 상승.
- 여러사람이 함께 쓰고 각자 권한을 가지고 있기 때문에 어떠한 문제점이 있을지 파악하는 것이 중요.
- id : 로그인한 아이디를 확인할 수 있다.
- who : 현재 이 시스템에 누가 접속했는지 확인할 수 있다.
-
관리자와 일반 사용자
- super user. root user. 전지전능한 권력을 지닌 사용자
- 일시적으로 관리자의 권한으로 명령어를 실행해야 할 때 sudo를 붙여서 수행.
- 모든 일반유저는 sudo를 사용할 수 있지는 않음.
- super user인지 확인하는 방법
- $ 일반사용자. # super user
- su 명령어 : a 사용자에서 b 사용자로 변경하고 싶을 때 이용. switch user
- su - root : super user로 로그인.
- sudo passwd -u root : 패스워드 잠금을 unlock
- sudo passwd -l root : 잠금 설정
- 홈디렉토리
- 일반 사용자는 home하위에 존재. /home/username
- root 사용자는 최상위 디렉토리 하위. /root
-
사용자의 추가 (임의로 hi라는 이름의 사용자 만들기)
- useradd -m hi
- m 옵션 사용시 사용자를 추가하면서 홈 디렉토리도 함께 생성.
- sudo passwd hi
- 비밀번호 생성.
- sudo usermod -a -G sudo hi
- 사용자의 권한을 수정해서 hi 사용자를 sudo그룹에 추가하기.
'CS > OS' 카테고리의 다른 글
[OS] 운영체제 기초 (0) | 2020.02.29 |
---|---|
[Linux] 생활코딩 리눅스 강좌 (5) (0) | 2019.10.08 |
[Linux] 자주 사용하는 명령어 정리2 (0) | 2019.10.05 |
[Linux] 자주 사용하는 명령어 정리1 (0) | 2019.09.28 |
[Linux] RPM 과 YUM (0) | 2019.09.27 |