init, service 와 systemctl 의 차이

5499 단어 linux
레 퍼 런 스http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
1. 서 비 스 는 스 크 립 트 명령 입 니 다. 서 비 스 를 분석 하면 / etc / init. d 디 렉 터 리 에서 관련 프로그램 을 실행 하 는 것 을 알 수 있 습 니 다.서비스 와 chkconfig 를 결합 하여 사용 합 니 다.서비스 프로필 저장 디 렉 터 리 / etc / init. d /
예컨대
#   sshd  
service sshd start
#   sshd      
chkconfig sshd start

2. systemd centos 7 버 전에 서 systemd 를 사 용 했 습 니 다. systemd 는 service 를 동시에 호 환 합 니 다. 대응 하 는 명령 은 systemctl Systemd 는 Linux 시스템 의 최신 초기 화 시스템 (init) 입 니 다. 주요 한 디자인 목 표 는 sysvint 의 고유 한 단점 을 극복 하고 시스템 의 시작 속 도 를 향상 시 키 는 것 입 니 다. systemd 를 사용 하 는 목적 은 빠 른 시작 속 도 를 얻 는 것 입 니 다.시스템 시작 시간 을 줄 이기 위해 서 systemd 의 목 표 는 가능 한 한 적은 프로 세 스 를 시작 하 는 것 입 니 다. 가능 한 한 많은 프로 세 스 를 동시에 시작 하면 시스템 프로 세 스 의 pid 를 볼 수 있 습 니 다. initd 의 pid 는 0 입 니 다. systemd 를 지원 하 는 시스템 의 systemd 프로 세 스 pid 는 1 입 니 다.
systemd 는 서로 다른 자원 을 Unit 이 라 고 부 릅 니 다. 모든 Unit 에는 하나의 프로필 이 있 습 니 다. Systemd 에 게 이 Unit 저장 디 렉 터 리 를 어떻게 시작 하 는 지 알려 줍 니 다. / etc / systemd / system 과 / usr / lib / systemd / system
선후 의존 관계 가 있 는 작업 systemctl 융합 service 와 chkconfig 기능 systemctl 의 사용 예 를 들 어
#     
systemctl start sshd.service
#       
systemctl enable sshd.service
#             ln -s /usr/lib/systemd/system/sshd.service /etc/systemd/system/multi-user.target.wants/sshd.service

전재 하 다http://www.ibm.com/developerworks/cn/linux/1407_liuming_init 3 / Systemd 의 사용 은 기술자 의 다양한 역할 에 대해 systemd 의 사용 을 간단하게 소개 합 니 다.본 고 는 시스템 d 의 사용 에 대해 대략적인 이 해 를 가지 도록 간단 한 설명 만 할 계획 입 니 다.구체 적 인 세부 내용 이 너무 많아 서 한 편의 단문 에 다 쓸 수 없고 본인 도 그렇게 강 한 능력 이 없다.시스템 d 의 문 서 를 독자 스스로 찾 아 봐 야 합 니 다.시스템 소프트웨어 개발 자 개발 자 는 시스템 d 의 더 많은 세부 사항 을 알 아야 한다.예 를 들 어 귀하 가 새로운 시스템 서 비 스 를 개발 하려 면 이 서비스 가 systemd 에 의 해 어떻게 관리 되 는 지 알 아야 합 니 다.이것 은 다음 과 같은 요점 을 주의해 야 합 니 다. 배경 서비스 프로 세 스 코드 는 두 번 의 파생 을 실행 하지 않 아 도 배경 요정 프로 세 스 를 실현 할 수 있 습 니 다. 서비스 자체 의 주 순환 만 실현 하면 됩 니 다.setsid () 를 호출 하지 마 십시오. systemd 처리 에 맡 기 면 pid 파일 을 유지 할 필요 가 없습니다.Systemd 는 로그 기능 을 제공 합 니 다. 서비스 프로 세 스 는 stderr 로 출력 하면 됩 니 다. syslog 를 사용 하지 않 아 도 됩 니 다.신호 SIGTERM 을 처리 하 는 유일한 정확 한 역할 은 현재 서 비 스 를 중단 하고 다른 일 을 하지 않 는 것 이다.SIGHUP 신 호 는 서 비 스 를 재 개 하 는 역할 을 합 니 다.소켓 이 필요 한 서 비 스 는 소켓 을 만 들 지 말고 systemd 가 소켓 에 들 어 갈 수 있 도록 해 야 합 니 다.sd 사용notify () 함수 가 systemd 서비스 자신의 상태 변 화 를 알 립 니 다.일반적으로 서비스 초기 화가 끝나 고 서비스 준비 상태 에 들 어 갈 때 호출 할 수 있 습 니 다.유닛 파일 의 작성 은 개발 자 에 게 작업량 이 가장 많은 부분 은 설정 단위 파일 을 작성 하고 필요 한 단원 을 정의 하 는 것 입 니 다.예 를 들 어 개발 자 는 httpd 와 같은 새로운 서비스 프로그램 을 개 발 했 습 니 다. 이 서 비 스 를 systemd 에서 관리 할 수 있 도록 설정 단위 파일 을 만들어 야 합 니 다. UpStart 와 같은 작업 프로필 입 니 다.이 파일 에서 서비스 가 시 작 된 명령 행 문법 과 다른 서비스 와 의 의존 관계 등 을 정의 합 니 다.그 밖 에 저 희 는 Systemd 의 기능 이 다양 하고 서 비 스 를 관리 할 뿐만 아니 라 마 운 트 지점 도 관리 하고 정시 작업 을 정의 할 수 있다 는 것 을 알 게 되 었 습 니 다.이 작업 들 은 모두 상응하는 설정 단원 파일 을 편집 하여 완성 한 것 이다.나 는 여기에서 몇 개의 설정 단원 파일 의 예 를 제시한다.다음은 SSH 서비스의 설정 단위 파일 입 니 다. 서비스 설정 단위 파일 은. service 를 파일 이름 접미사 로 합 니 다. \ #cat / etc / system / system / sshd. service [Unit] Description = OpenSSH server daemon [Service] Environment File = / etc / sysconfig / sshd ExecStartPre = / usr / sbin / sshd - keygen ExecStart = / usrsbin / sshd – D $OPTIONS ExecReload = / bin / kill – HUP $MAINPID KillMode = process Restart = on - failure RestartSec = 42s [Install] WantedBy = multi - user. target 파일 은 세 소절 로 나 뉜 다.첫 번 째 는 [Unit] 부분 입 니 다. 여기 에는 설명 정보 만 있 습 니 다.두 번 째 부분 은 Service 정의 입 니 다. 그 중에서 ExecStartPre 는 서 비 스 를 시작 하기 전에 실행 해 야 할 명령 을 정의 합 니 다.ExecStart 는 서 비 스 를 시작 하 는 구체 적 인 명령 행 문법 을 정의 합 니 다.세 번 째 부분 은 [Install] 입 니 다. WangtedBy 는 이 서비스 가 다 중 사용자 모드 에서 필요 하 다 고 밝 혔 습 니 다.그럼 multi - user. target 을 살 펴 보 겠 습 니 다. \ # cat multi - user. target [Unit] 설명 = Multi - User System Documentation = man. systemd. special (7) Requires = basic. target Conflicts = rescu. service rescue. target After = basic. target rescue. service rescue. target AllowIsolate = yes [Install]Alias = default. target 첫 번 째 부분 에서 Requires 정 의 는 multi - user. target 이 시 작 될 때 basic. target 도 시작 해 야 한 다 는 것 을 나타 낸다.또한 basic. target 이 멈 출 때 multi - user. target 도 멈 춰 야 합 니 다.basic. target 파일 을 계속 보면 sysinit. target 등 다른 단원 을 지정 하여 시작 해 야 합 니 다.마찬가지 로 sysinit. target 도 다른 단원 을 포함 합 니 다.이러한 계층 링크 구 조 를 사용 하면 최종 적 으로 다 중 사용자 모드 를 지원 해 야 하 는 모든 구성 요소 서비스 가 초기 화 되 어 시 작 됩 니 다.[Install] 소절 에 Alias 정의 가 있 습 니 다. 즉, 이 단원 의 별명 을 정의 합 니 다. 시스템 ctl 을 실행 할 때 이 별명 을 사용 하여 이 단원 을 참조 할 수 있 습 니 다.여기 별명 은 default. target 입 니 다. multi - user. target 보다 간단 합 니 다...또한 / etc / systemd / system 디 렉 터 리 에서 *. wants 와 같은 디 렉 터 리 를 볼 수 있 습 니 다. 이 디 렉 터 리 에 놓 인 프로필 은 [Unit] 소절 에 있 는 wants 키워드 와 같 습 니 다. 즉, 이 단원 이 시 작 될 때 이 단원 을 시작 해 야 합 니 다.예 를 들 어 자신 이 쓴 foo. service 파일 을 multi - user. target. wants 디 렉 터 리 에 간단하게 넣 으 면 매번 기본 으로 시 작 됩 니 다.마지막 으로 sys - kernel - debug. out 파일 을 살 펴 보 겠 습 니 다. 이 파일 은 파일 마 운 트 지점 을 정의 합 니 다.
\ # cat sys - kernel - debug. mount [Unit] Description = Debug File System DefaultDependencies = no Condition PathExists = / sys / kernel / debug Before = sysinit. target [Mount] What = debugfs Where = / sys / kernel / debug Type = debugfs 이 설정 단원 파일 은 마 운 트 지점 을 정의 합 니 다.마 운 트 프로필 에는 [Mount] 설정 소절 이 있 습 니 다. 그 안에 What, Where, Type 세 개의 데이터 항목 이 설정 되 어 있 습 니 다.마 운 트 명령 에 필요 한 것 입 니 다. 예 를 들 어 마 운 트 명령 은 다음 과 같 습 니 다. mount – t debugfs / sys / kernel / debug debugfs 설정 단원 파일 의 작성 은 많은 학습 이 필요 합 니 다. systemd 에 첨부 된 man 등 문 서 를 참고 하여 깊이 공부 해 야 합 니 다.위의 몇 가지 작은 예 를 통 해 설정 단위 파일 의 역할 과 일반적인 쓰기 방법 을 알 고 싶 습 니 다.
제 요약: systemd 기능 이 더욱 강 합 니 다. 일부 Liux 발행 판 은 시스템 이 init 와 service 를 시작 하 는 새로운 시스템 도 구 를 대체 하 는 동시에 init 에 대한 호환성 을 잃 지 않 았 습 니 다.

좋은 웹페이지 즐겨찾기