アプリケーションを自動的に実行するには?

アプリケーションを自動的に実行するには?

ユーザーがログインしているときに自分のアプリケーションを実行しようとしています。だから私は次のスクリプトを追加しました~/.bash_profile

# for Buluttdepo
/usr/bin/myapp > /dev/null 2>&1 &
export MYAPP_HOME=/opt/myapp

正常に実行されますが、スクリプトを追加する必要がありますか.bash_profile

それ以外の場合は、/etc/profileスクリプトファイルを/etc/profile.d/myapp_run.sh。しかし、rootとして実行したくありません。私はどんなユーザーでも実行する必要があります。

だからRPMパッケージを作成しています。 RPMパッケージインストーラが実行されているときにスクリプトを追加したいと思います。 RPMパッケージはrootとしてインストールされるため、.bash_profileどちらに追加するのかわからないので、/etc/profileorに追加するだけです/etc/profile.d/

  • どのファイルに追加する必要がありますか?
    • ファイルが次の場合に~/bash_profileスクリプトを追加する方法bash_profileすべてのユーザー通過するrootrpm
    • ファイルがある場合、/etc/profileユーザーはどのように実行できますかmyapp
    • より簡単な方法を提案できますか?

答え1

cronやりたいことが解決しそうです。

crontabの一般的な形式は次のとおりです。各列は分、時間、日、月、曜日を表します。

30 * * * * /home/user/updates.sh

Cronはまた、@weekly例えばを@daily含むいくつかの事前定義された項目もサポートします@reboot

crontabスクリプトを実行したいユーザーとしてログインしたり、他のユーザーの場合は、crontab -erootとしてログインして編集することができます。crontab -u username -ecrontab

エディタを開いた状態で、次を追加します。

@reboot /usr/bin/myapp > /dev/null 2>&1

次にマシンが再起動すると、マシンを/usr/bin/myapp挿入したcrontabのユーザーがマシンを起動します。

答え2

パッケージインストールスクリプトがホームディレクトリのファイルを扱うことは絶対に許可されていません。ユーザーの設定が壊れる可能性が高く、動作する場合も動作しない可能性があります(ユーザーがログインシェルとしてzshまたはtcshを使用している場合はどうなりますか?)。パッケージがリリースされたときにホームディレクトリが近くにあった場合にのみ機能します。 。インストールする。

ユーザーがログインするたびにアプリケーションが実行されるのは非常に奇妙です。アプリケーションを実行するかどうかを選択するのは各ユーザーの役割です。

ユーザーがログイン時にコードを実行する必要がある場合は、修正が/etc/profile最善の選択です。ディストリビューションにディレクトリがある場合は、変更する/etc/profile.d代わりにファイルをドラッグアンドドロップします/etc/profile。これを修正する必要がある場合は、/etc/profileシステム管理者のカスタマイズが壊れないように注意してください。一般的にすべきことは、profile環境変数を設定することだけです。

「私はこれを行うと、私のアプリケーションはrootとして実行されます」と主張します。これは無効です:/etc/profileログインしたユーザーによって実行されました。

つまり、おそらくやるべきことは、ユーザーに「私のアプリケーションを実行するには、コマンドを実行するか、メニューmyappから自分のアプリケーションを選択またはクリックしてください」と言うことです。それがすべてです。 GUIユーザーのためのメニュー項目を提供してください。環境変数を操作したくない場合は、必要な環境変数を設定する呼び出しスクリプトを提供してください。

関連情報