리눅스:daemon(자동실행)

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동

리눅스를 위한 문서틀 틀:리눅스


  1. 리눅스:명령어
    1. 리눅스:디렉터리관련
      1. 리눅스:저장장치관련
      2. 리눅스:df(디스크사용량)
      3. 리눅스:저장장치관련팁
      4. 리눅스:압축
    2. 리눅스:프로세스관련
  2. 리눅스:권한관련
  3. 리눅스:편의기능
    1. 리눅스 원격 관리
      1. 리눅스:SSH
      2. 리눅스:MobaXterm
    2. 리눅스:각종 설정
    3. 리눅스:cron(자동작업 등록)
    4. 리눅스:daemon(자동실행)
    5. 리눅스:alias(명령 축약)
    6. 리눅스:로그관리
      1. 리눅스:logrotate(로그파일관리)
    7. 리눅스:포트관리
  4. 리눅스 기반 OS
    1. 틀:우분투
  5. 리눅스:패키지 관리
    1. 리눅스:apt-get
  6. 다양한 패키지
    1. 리눅스:openssl(ssl인증서)
  7. 리눅스:쉘 스크립트
    1. 틀:Bash

개요[편집 | 원본 편집]

컴퓨터가 켜지면 자동 실행. 데몬 혹은 부팅 시 자동실행...이라고 부르면 될까?

방법[편집 | 원본 편집]

기초사용법[편집 | 원본 편집]

과정 설명 방법
파일수정 /etc/rc.local 파일에 작성한 명령이 시작 시에 실행된다.
fi

실행할 구문을 넣는다. & 붙여 백그라운드로.

exit 0
권한수정 실행하게 되는 파일의 실행권한을 준다.

필요에 따라 주면 된다.

chmod 777 파일명

파이썬 파일 실행하기[편집 | 원본 편집]

과정 설명 방법
환경 지정 해당 파일을 파이썬을 이용하여 실행하라는 의미.

.py 파일 가장 위에 우측의 코드를 기입해준다.

#! /usr/bin/env python  # 버전을 지정한다면 python3.4 형식으로.
데몬에 등록 /etc/rc.local 파일에 우측과 같이 기입한다. python /파일경로.py &

우분투[편집 | 원본 편집]

과정 설명 방법
실행할 명령의 sh 파일 만들기.
  • 쉘 파일을 작성한다. 우측 예시 참고.
  • 쉘 파일을 작성하고 난 후 해당 명령을 하나씩 실행해보자. 에러가 뜨지 않게끔 수정.
  • chmod +x /projects/for_format/for_systemd.sh 형태로 실행권한을 부여하는 편이 좋다.
#!/bin/bash
# 도커 컨테이너 시작.
/usr/bin/docker start -d smwiki2405
docker exec smwiki2405 systemctl start apache2


# pywiki 실행설정.
docker exec samwiki systemctl start apache2
docker exec samwiki systemctl start elasticsearch.service
docker exec samwiki systemctl start mysql

# sc_project 실행설정.
docker exec sc_project /project/maintain/start.sh
service 파일 제작. /etc/systemd/system/ 하위에 .service 파일을 만든다.
  • sudo nano /etc/systemd/system/서비스명.service적절한 조건을 넣어주고 ExecStart에서 실행할 쉘파일의 위치를 지정한다.

옵션은 굉장히 다양하게 있으니 다른 문서 참고.

[Unit]
Description=Docker Containers
Requires=docker.service  # 도커 서비스가 시작된 이후에 진행.
After=docker.service

[Service]
Restart=always
ExecStart=/bin/bash -c '/projects/for_format/for_systemd.sh'
ExecStop=/usr/bin/docker stop -t 2 smwiki2405

[Install]
WantedBy=multi-user.target
데몬 반영.
  • sudosystemctl daemon-reload
  • sudo systemctl enable 서비스명.service
  • sudo systemctl start 서비스명.service

start로 확인까지 해보자.

이후 재부팅 하면 실행될 것이다.