이것은 운영 체제 감지와 더 관련이있을 수 있지만 특히 시스템에서 현재 사용중인 init 시스템이 필요합니다.
Fedora 15와 Ubuntu는 이제 systemd를 사용하고, Ubuntu는 Upstart (15.04까지 오랜 시간 기본값)를 사용했지만 다른 시스템은 System V의 변형을 사용합니다.
크로스 플랫폼 데몬으로 작성중인 응용 프로그램이 있습니다. init 스크립트는 configure에 전달 될 수있는 매개 변수를 기반으로 동적으로 생성됩니다.
내가하고 싶은 것은 그들이 사용하는 특정 init 시스템에 대한 스크립트 만 생성하는 것입니다. 이런 식으로 설치 스크립트를 루트없이 매개 변수없이 합리적으로 실행할 수 있으며 데몬을 자동으로 "설치"할 수 있습니다.
이것이 내가 생각해 낸 것입니다.
- / bin에서 systemd, upstart 등 검색
- / proc / 1 / comm을 systemd, upstart 등과 비교하십시오.
- 사용자에게 물어보세요
이 작업을 수행하는 가장 좋은 교차 / 플랫폼 방법은 무엇입니까?
관련의 종류는, 내가 * nix에서 스크립트의 대부분에있을 배쉬에 따라 달라질 수 있습니다하거나 유통 / OS 종속인가?
대상 플랫폼 :
- 맥 OS
- 리눅스 (모든 배포판)
- BSD (모든 버전)
- Solaris, Minix 및 기타 * nix
ps -p 1 -o command
(현재 경로를 인쇄합니다 init
). 아치 리눅스와 페도라 (IIRC)에서는 systemd
바이너리에 대한 심볼릭 링크입니다 (아마 모든 systemd
시스템에서 동일 ). 에 upstart
, init --help
사용 정보를 인쇄하고 내 상자 upstart
에 이메일을 보낼 사람이 언급되어 있습니다. FreeBSD (sysV)에서는 에러를 반환합니다. 다른 시스템에서도 비슷한 단서가있을 수 있지만이 질문을 한 후 모든 플랫폼에 대해 해당 단서를 작성하고 각각에 대해 별도의 패키지를 작성하기로 결정했습니다.
sudo lsof -a -p 1 -d txt
더 정확한 결과를 줄 수 있다는 것을 배웠습니다 . ps
임의의 이름을 인쇄 lsof
할 수 있지만 실제 실행 경로는 얻을 수 있습니다. (내 질문 unix.stackexchange.com/questions/102453/… 참조 )