파이썬으로 작성된 init.d 스크립트


10

질문에 유래에 와서 작성에 대한 질문 init.d파이썬 스크립트를. 한 의견자는 이러한 스크립트가 Python이 아닌 쉘로 프로그래밍되어야한다고 지적했다. 쓰고 init.d파이썬 스크립트를 :

  1. 나쁜. 나쁜. 나쁜. 절대 이러지 마
  2. 권장되지 않습니다.
  3. 알았어
  4. 레거시 교리.
  5. 완전 괜찮아

악몽 시나리오 나이 규칙이 일부 시스템 관리자의 피에 기록되어 있는지 아는 것이 좋습니다.

답변:


9

# 2라고 말하지만 # 1과 매우 비슷합니다. "나쁜. 나쁜. 나쁜. 절대 안 해." Linux init 스크립트에 대한 표준 은 LSB 에 있으며, 절대로 나오지 않고 "이것은 본 쉘 스크립트"라고 말하지만 몇 가지 가정이 있습니다. 하나는 #으로 시작하는 줄은 주석이며 잘 작동합니다. 더 문제는 init 스크립트가 /lib/lsb/init-functions"현재 환경에서 (쉘 특수 내장 명령 도트 참조)" 의 명령을 실행해야한다는 요구 사항입니다 .

그러나 더 중요한 것은, 만약 당신이 여기서 정말로 복잡한 것을하고 있다면, 당신은 그것을 잘못하고있는 것입니다. 초기화 스크립트는 매우 간단하고 실용적이어야합니다. 그것들은 프로그램이 아니라 고전적인 의미의 스크립트 여야합니다. 파이썬에서 아름답고 엔지니어링 된 것을 만드는 것보다 모든 sysadmin이 한 번에 쉽게 볼 수있는 간단한 쉘 스크립트를 만드는 것이 좋습니다.

명심해야 할 또 다른 사항은 systemdLinux에서 모든 시스템 초기화의 미래 일 수도 있고 아닐 수도 있습니다. 시스템화 된 상태에서 초기화는 스크립트가 아닌 간단한 구성 파일로 수행됩니다. 모든 시작은 여러 표준 디자인 패턴에 맞으며 실제로 하나만 선택해야한다는 아이디어입니다. 만약 프로그램이 초기화를 위해 복잡한 것을 사용한다면, 그것은 init 스크립트 자체를 벗어나야합니다.


1
나는이 대답을 할 것입니다. 요점은 파이썬이 필요하지 않고 표준이 아니기 때문에 디버깅 불확실성과 오류 지점을 추가로 만들 수 있다는 것입니다. 원래의 SO 질문과 관련하여 그러한 스크립트가 데몬을 시작할 수 있지만 실제 데몬이 아니어야한다는 것을 수집합니다.
mjhm

내가 기억한다면 모든 배포판이 LSB를 따르는 것은 아닙니다. 데비안을보십시오.
Massimo

10

init.d 스크립트가 실행될 때 파이썬 인터프리터를 사용할 수 있다는 것을 알고 있다면 문제가 없습니다. 이것은 나에게 당신이 다중 사용자 (또는 "그래픽 콘솔") 실행 수준에서 비교적 늦게 수행되고있는 것을보고 있음을 나타냅니다.

그러나 ... 이것은 특정 버전의 Python 인터프리터가 부팅 순서에 필수적 일 수 있으며 업그레이드시 확인해야 할 사항 중 하나임을 의미합니다.

나는 이것이 "3. OK,주의 사항"이라고 말하는 것을 의미한다고 생각합니다.


4
+1. 정확히 내가 쓰고 있었던 것. 여기서 유일한 "문제"는 LSB를 준수하는지 확인하고 (예 : 필요한 기능 제공) 필요한 파이썬 인터프리터가 런타임에 사용 가능하고 깨지지 않는지 확인하는 것입니다.
Sam Halicke

3
사용자가 별도의 파티션에 / usr을 갖도록 선택한 경우 런타임시 사용이 복잡 할 수 있습니다. 파이썬은 일반적으로 / usr에 설치되므로 / usr을 마운트 한 후에 스크립트를 실행하는 것이 중요합니다.
Zoredache

@ 조르 데슈-Ayup. 일반적으로 "다중 사용자"RC 시퀀스가 ​​늦었을 때 "일어났다"는 것을 알고 있습니다.
Vatine

2

나는 "3. 확인,주의"와 동의하지만 다른 이유로. Solaris에 대한 나의 경험은 일부 내부 프로그램에 대해 Perl의 OS 사본을 가지고 있다는 것입니다. 쉘 스크립트는 Perl을 시작하기위한 쉘에 지나지 않습니다. 시작 스크립트를 sh로 작성 했습니까? 아니요, 그러나 관리자의 유지 관리 성이 향상되었습니다. 그리고 init 스크립트는 daemon --startor 와 같은 것을 더 복잡하게 만들지 않았습니다 daemon --stop. 이 작업을 수행 한 경우 일반 사용자는 권한이없는 모드에서 도구를 시작할 수 있습니다 (프로그램의 맥락에서 의미가있는 경우). 그리고 그들은 모든 종류의 복잡한 설정을 할 필요가 없습니다.

최신 Linux 배포판 (여전히을 사용하는 배포판)에도 init.d데몬을 쉽게 관리 할 수 ​​있도록 사전 구축 된 많은 기능 모음이 있습니다. 그래픽 부팅 프로세스는 시작 스크립트 중 하나에서 오류가 발생하지 않는 한 이러한 기능을 일상적으로 활용하여 예쁜 로고를 유지합니다. 파이썬 코드 (또는 다른 언어)는 이러한 체계에서 잘 작동하지 않을 수 있습니다.

미학이나 유지 관리에 신경 쓰지 않으면 원하는대로 init 스크립트를 작성할 수 있습니다. 제대로 잘라서 붙여 넣을 수없는 많은 관리자가 명령 줄 인수를 완전히 무시하고 데몬을 시작하는 것을 보았습니다. 종료, 상태 또는 재시작이 없습니다. 미성숙했지만 코드는 여전히 실행되었습니다.


1

나는 # 1-2 사이에 말한다. LSB는 이런 식으로 지시합니다. Sys-Admin (비 개발 역할)에서 작업 요구 사항은 파이썬, PHP 또는 perl의 개발자 수준 (또는 가벼운 이해)이 아니라 sh / bash 지식을 지시합니다. 그것은 시스템 초기화 스크립트가 아니라 LAMP 스택을위한 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.