すべての* nixベースのシステムで起動時にjarを実行する

すべての* nixベースのシステムで起動時にjarを実行する

すべてのLinuxディストリビューションで起動時に実行する必要があるjarファイルがあります。私の前の質問ここ、Xサーバーの一般的な理解を提供しました。起動できないため、.desktop ファイルを/etc/xdg/autostart。他のディストリビューションについて少し調べた結果はないようですが、/etc/xdg/autostartすべての/xdg-autostartLinuxディストリビューションでjarファイルを実行する必要があります。 crontabを試しましたが、@rebootUbuntu 14.04では動作しません。もう1つの問題は、jarを削除するときに最初に配置されたファイルを削除する必要があることです。 rc.localを編集すると、編集内容を元に戻すことはできません。 Linuxで起動する一般的な方法はありますか?

答え1

残念ながら、私はあなたが望むことを正確に達成することができる単一で一般的なアプローチがあるとは信じていません。すべてのnixには初期化システムがあり、さまざまな初期化システム(SysV、Upstart、systemdなど)があります。今systemdは一部SysVデーモンの実行がサポートされているため、SysVスクリプトを作成して両方のシステムで動作させることができますが、Upstartや他のシステムでどのように機能するかわかりません。目標を達成するのに役立つ2つの対策プロセスがあると思います。

  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」オペレーティングシステムという意味のオペレーティングシステムではないことに注意してください。 Linux複数のプラットフォーム(Androidなど)で使用されるオペレーティングシステムカーネル。語句として「GNU/Linux」とは、上記のオペレーティングシステムのディストリビューションの集まりを意味します。いいえすべて同じ。 WindowsとOSXを統合するための真剣な意図や欲求がないように、これらを統合するための真剣な意図や欲求もありません。たとえば、「OSXとWindowsで起動時にjarファイルをどのように実行しますか?」と尋ねることができます。運が悪い場合は、それぞれ個別に梱包する必要があります。実際、Linuxの世界でソフトウェアが一般的に配布される方法は次のとおりです。別個のパッケージ各リリースで。

1しかし、Ubuntu(およびDebian)はsystemdへの移行これは、スタートアップ企業が消える可能性が高く、ほとんどの主要なディストリビューションが共通の初期化システムを持つことを意味します。

関連情報