2022. 5. 3. 23:17ㆍBE/Linux
이 글은 목소리가 감미로우신 이고잉님의 오픈튜토리얼 리눅스 강의를 듣고 정리한 내용입니다.
Daemon
daemon은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다.
웹서버와 같은 상시 수행해야 하는 작업들을 다룬다.
daemon의 대표적인 예시로 apache2(웹서버)를 들 수 있다.
daemon으로 실행되는 프로그램들이 있는 디렉터리를 확인한다.
cd /etc/init.d
ls -al
# Linux 기준. macOX는 다르다.
리눅스의 /etc/init.d는 daemon들이 모여있는 디렉터리다.
cd /etc/rc3.d/
ls -al
리눅스의 /etc/rc3.d/에는 daemon들의 링크가 모여있는 디렉터리가 있다.
rc3.d는 CLI환경에서 실행되는 daemon의 링크를 모아놓은 디렉터리고
rc5.d는 GUI환경에서 실행되는 daemon의 링크를 모아놓은 디렉터리다.
rc3.d 디렉터리에서 ls -al 하면 lrwxrwxrwx라고 나오는 것들은 link다.
윈도우의 바로 가기 같은 것이다.
대문자 S로 시작하는 링크들은 CLI 즉 콘솔로 부팅된 경우 실행되는 daemon들이고
대문자 K로 시작하는 링크들은 종료되는 daemon들이다.
또 S나 K 뒤에 오는 숫자들은 실행의 우선순위를 나타낸다.
service
# daemon 프로그램을 끄고 킬려면 service를 사용해야 한다.
sudo service apache2 start
ps aux | grep apache2
sudo service apache2 stop
ps aux | grep apache2
service를 이용해서 항상 실행해야 하는 daemon 프로그램을 시작하고 끝내 본다.
자동으로 실행되게 하려면 etc/rc3.d/ 아래에 링크를 생성하면 된다.
macOS에서의 daemon
macOS에선 daemon을 다루는 방법이 Linux와는 다르다.
macOS에선 launchd
를 이용해서 daemon
과 agent
를 다룬다.
agent
에이전트에 대한 정의는 에이전트를 보는 시각에 따라 매우 다양하다.
일반적으로 다음과 같이 정의할 수 있다.
- 에이전트는 특정 목적에 대해 사용자를 대신하여 작업을 수행하는 자율적 프로세스(autonomous process)이다.
- 에이전트는 독자적으로 존재하지 않고 어떤 환경(운영 체제, 네트워크 등)의 일부이거나 그 안에서 동작하는 시스템이다.
- 에이전트는 지식 기반(knowledge base)과 추론 기능을 가지며, 자원 또는 다른 에이전트와의 정보 교환과 통신을 통해 문제를 해결한다.
- 에이전트는 스스로 환경의 변화를 인지하고 그에 대응하는 행동을 취하며, 경험을 바탕으로 학습하는 기능을 가진다.
데몬(daemon)과 에이전트(agent)의 차이점에 대하여 말해본다면 실행에 있어서 사용자의 존재감?이다.
Daemon은 사용자의 입력 없이 시스템이 켜지면 백그라운드에서 작업을 수행한다.
웹서버나 데이터베이스 서버와 같은 작업을 수행하기에 적합한 방식이다.
Agent은 반면에 사용자의 입력이나 요구에 부합하기 위해서 수행된다. 그렇기에 사용자의 로그인이 필요하다.
출처 : [네이버 지식백과] 에이전트 [agent] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 전산용어사전편찬위원회)
출처 : https://dev-dream-world.tistory.com/89
출처 : https://hiddenviewer.tistory.com/5
Daemon과 Agent의 위치
Apple은 BSD-스타일의 init
과 SystemSmarter를
대체하기 위해 launchd
를 2005년에 발표했다.
macOS는 launchd
프로세스를 통해서 데몬과 에이전트를 관리한다.
사용자는 launchctl
명령어를 통해서 launchd
를 다룬다.
아래는 daemon과 agent가 위치한 디렉터리의 위치다.
참고 : https://dev-dream-world.tistory.com/90
참고 : https://support.apple.com/ko-kr/guide/terminal/apdc6c1077b-5d5d-4d35-9c19-60f2397b2369/mac
Daemon 올리고 내리기
launchctl
은 ‘IPC (프로세스 간의 통신-Inter-Process Communication)로 launchd와
통신하는 CLI 프로그램이다.
plist
파일(property list file)을 해석하여 launchd
가 이해할 수 있는 양식으로 변환하여 전달.
사용자는 launchctl로
launchd
를 제어.
- daemon을 올리거나 내릴 수 있다.
launchd
가 제어하는 작업을 시작하거나 중지할 수 있다- 환경 설정
launchctl load ~/Library/LaunchAgents/myservice.plist
launchctl unload ~/Library/LaunchAgents/myservice.plist
launchctl start myservice.plist
launchctl stop myservice.plist
물론 plist가 있어야 겠지용?
시간이 없는 관계로 plist에 관한 내용은 다음에 기회가 되면 포스팅해보자.
'BE > Linux' 카테고리의 다른 글
2022-05-06 리눅스_사용자_생성_관리_전환 (0) | 2022.05.06 |
---|---|
[네이버 클라우드] 1년간 무료 리눅스 서버 구축하기 (0) | 2022.05.05 |
2022-05-02 백그라운드 실행 (0) | 2022.05.03 |
2022-05-01 터미널에서 java 작성, 컴파일, 실행하기 (0) | 2022.05.02 |
2022-05-01 file을 찾는 방법 (0) | 2022.05.01 |