모든 *nix 기반 시스템에서 시작 시 jar 실행

모든 *nix 기반 시스템에서 시작 시 jar 실행

모든 Linux 배포판에서 시작 시 실행해야 하는 jar 파일이 있습니다. 내 이전 질문여기, X 서버에 대한 일반적인 이해를 제공했습니다. 부팅을 수행할 수 없기 때문에 .desktop 파일을 /etc/xdg/autostart. 다른 배포판에 대해 약간 조사해 본 결과 없는 것 같지만 /etc/xdg/autostart모든 /xdg-autostartLinux 배포판에서 jar 파일을 실행해야 합니다. crontab을 시도했지만 @reboot우분투 14.04에서는 작동하지 않습니다. 또 다른 문제는 jar를 제거할 때 시작에 배치된 파일을 삭제해야 한다는 것입니다. rc.local을 편집하면 편집 내용을 되돌릴 수 없습니다. Linux에서 부팅하는 일반적인 방법이 있습니까?

답변1

불행하게도 나는 당신이 원하는 것을 정확히 달성할 수 있는 단일하고 일반적인 접근 방식이 있다고 믿지 않습니다. 모든 nix에는 초기화 시스템이 있으며 다양한 초기화 시스템(SysV, Upstart, systemd 등)이 있습니다. 이제 systemd는일부SysV 데몬 실행이 지원되므로 SysV 스크립트를 작성하여 두 시스템 모두에서 작동하도록 할 수 있지만 Upstart 및 기타 시스템에서 어떻게 작동할지 모르겠습니다. 목표 달성에 도움이 될 수 있는 두 가지 조치 과정이 있다고 생각합니다.

  1. 각 주요 초기화 시스템에 대한 서비스를 작성합니다(많은 배포판이 systemd로 전환되고 있으므로 좋은 시작이 될 수 있습니다).

  2. 시작 시 실행을 포기하고 나중에 실행해 보세요.

예를 들어, init 시스템은 여전히 ​​상당히 조각화되어 있지만 쉘 로그인은 거의 보편적입니다. $HOME/.shellrc아직 실행되고 있지 않은 경우 실행하는 각 jar에 몇 줄을 추가할 수 있습니다. 그렇게 하면 작업량이 줄어들고 보다 일반적으로 적용 가능해집니다.

분명한 장점 1은 사용자가 아무것도 보기 전에 jar를 실행한다는 것입니다. 그러나 2이는 자동 로그인을 설정하여 완화할 수 있습니다(보안상 좋은 생각은 아니지만).

이것이 GUI jar인 경우 상당한 추가 문제가 발생하게 될 것입니다. jar를 실행할 수 있도록 X 또는 Wayland를 시작하면 결정한 솔루션에 최소한 몇 줄이 추가됩니다.

답변2

모든 GNU/Linux 배포판은 다양한 초기화 시스템을 사용하기 때문에 시스템 서비스를 생성하는 보편적인 방법은 없습니다. 옛날 옛적에 그들은 모두 거의 같은 것을 사용했습니다.SysV 스타일 초기화(더 많은 BSD 스타일 시스템을 사용하는 일부 시스템을 제외하고) 릴리스 간에 수정이 거의 필요하지 않은 범용 초기화 스크립트를 작성할 수 있습니다.

현재 SysV는 Debian 및 RHEL/CentOS와 같은 많은 배포판에서 여전히 사용되고 있습니다. 그러나 최신 초기화 시스템 -체계(페도라, 아치 등) 및갑자기 나타나다(Ubuntu) 1 에는 SysV 스타일 init 스크립트에 대한 역방향 지원 메커니즘이 포함되어 있으므로 대부분의 시스템에서 사용할 수 있는 가장 쉬운 방법을 찾고 있다면 이것이 바로 그것입니다.

"linux"는 "Windows 8" 또는 "OSX" 운영 체제라는 의미의 운영 체제가 아니라는 점을 명심하십시오. 리눅스여러 플랫폼(예: Android)에서 사용되는 운영 체제 커널입니다. 구어체로 "GNU/Linux"는 위에서 설명한 운영 체제 배포판 모음을 의미합니다.아니요모두 같은. Windows와 OSX를 통합하려는 진지한 의도나 욕구가 없는 것처럼 이들을 통합하려는 진지한 의도나 욕구도 없습니다. 예를 들어 "OSX와 Windows에서 부팅 시 jar 파일을 어떻게 실행합니까?"라고 물을 수 있습니다. 운이 좋지 않으면 각각 개별적으로 포장해야 합니다. 실제로 Linux 세계에서 소프트웨어가 일반적으로 배포되는 방식은 다음과 같습니다.별도의 패키지각 릴리스마다.

1하지만우분투(및 데비안)는systemd로 마이그레이션이는 신생 기업이 사라질 가능성이 높으며 대부분의 주요 배포판이 공통 초기화 시스템을 갖게 될 것임을 의미합니다.

관련 정보