2017-09-25 7 views
1

私はLinuxアプリケーションを作っています。このアプリケーションは、クライアントのファイルとフォルダをクラウドと同期させます。 ホームディレクトリには、クラウドのすべてのファイルが同期されるフォルダがあります。私は、アプリケーションが起動の後にで開始され、自動的にバックグラウンドで動作するように、アプリケーションがであることを望みます。 どうすればいいですか?Linuxで起動時にアプリケーションを実行します。

+0

どのユーザーのバックグラウンドで開始されましたか? –

+0

アプリケーションをインストールするユーザーの場合。 –

+0

通常のユーザーはアプリケーションをインストールできません。通常のユーザがグラフィカルなインストーラを実行することができたとしても、ほとんどの場合、バックグラウンドでスーパーユーザとして仕事をしており、どのユーザがGUIを起動したのかはわかりません。 –

答えて

2

システムがある場合は、hereのようにサービスを作成できます。

それ以外の場合は、initを使用する必要があります。

0

本質的にシングルユーザーシステムの場合は、init/systemdを使用して、非特権ユーザーとしてバックグラウンドプロセスを開始することができます。しかし、それはこれらの技術の通常の使用ではありません。

マルチユーザーのグラフィカルシステムでは、ユーザーのデスクトップセッションの開始時に、ユーザー関連のバックグラウンドプロセスを開始する必要があります。これが(通常)そのような操作のための適切なタイミングであるだけでなく、複数のユーザーをサポートすることができます。

Linuxで利用できるさまざまなグラフィカルデスクトップはすべて、ログイン時にユーザーアプリケーションを実行する方法が少し異なります。すべてのデスクトップで動作する方法を見つけることはおそらく不可能です。完全なカバレッジを得るには、おそらく、使用中のデスクトップを検出し、そのデスクトップに適した方法を使用するものを実装する必要があります。

ただし、多くのデスクトップは$HOME/.config/autostart/の使用を尊重しています。そのディレクトリ内のファイルは拡張子.desktopを持ち、アプリケーションランチャと同じ形式である必要があります。例:

[Desktop Entry] 
Name=MyThingie 
GenericName=foo 
Comment=foo 
Exec=/path/to/my/executable 
Terminal=false 
Type=Application 
Icon=foo 
Categories=Network;FileTransfer; 
StartupNotify=false 
関連する問題