たとえば、シナモンメニューからワンクリックで手動でインストールされたElasticSearchインスタンスを起動したいとします。
私ができることは、/opt/elasticsearch-1.6.2/bin/elasticsearch &
アプリがバックグラウンドで起動されることです。だから、メニュー項目を追加して同じ動作を達成したいと思います。しかし、バックグラウンドモードでは起動できず、フォアグラウンドのみが機能しているようです。
動作します(ただし、fgのみ)。
$ cat ~/.local/share/applications/elasticsearch-1.6.2.desktop
[Desktop Entry]
Version=1.6.2
Type=Application
Name=ElasticSearch
Icon=/opt/elasticsearch-1.6.2/bin/elasticsearch-icon.png
Exec="/opt/elasticsearch-1.6.2/bin/elasticsearch"
Comment=ElasticSearch 1.6.2
Categories=Development;Server;
Terminal=true
StartupWMClass=elasticsearch
動作しません(&
最後にExecで設定してみてください)。
Exec="/opt/elasticsearch-1.6.2/bin/elasticsearch &"
私は何を逃したことがありませんか?
答え1
次のことを試すこともできます。
x-terminal-emulator -e /opt/elasticsearch-1.6.2/bin/elasticsearch &
これは通常、-e(xterm、ROXterm、XFCE4-terminal)をサポートするデフォルト端末(互換性がある場合は優先端末を指定できます)を使用する必要があります。それはalsamixerで動作します。
答え2
これが最も適切な答えかどうかわかりません。しかし、これはついに私にとって効果的でした。
次の方法でElasticSearchを起動するシェルスクリプトを作成します。
nohup
#!/usr/bin/env sh # -*- coding: utf-8 -*- nohup /opt/elasticsearch-1.6.2/bin/elasticsearch 2> /dev/null &
シェルスクリプトを/usr/local/bin(オプション)に移動して実行可能にします。
chmod +x elasticsearch && mv elasticsearch /usr/local/bin/
シェルスクリプトを呼び出すようにデスクトップポータルを構成する
[Desktop Entry] Version=1.6.2 Type=Application Name=ElasticSearch Icon=/opt/elasticsearch-1.6.2/bin/elasticsearch-icon.png Exec=elasticsearch Comment=ElasticSearch 1.6.2 Categories=Development;Server; Terminal=false StartupWMClass=elasticsearch
このアプローチにはnohup
追加のリソースが必要ですが、シェルスクリプトでアウトソーシングする方がより一般的なソリューションであり、他のアプリケーションにも適しているという利点があります。