ユーザーがログインしているときに自分のアプリケーションを実行しようとしています。だから私は次のスクリプトを追加しました~/.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/profile
orに追加するだけです/etc/profile.d/
。
- どのファイルに追加する必要がありますか?
- ファイルが次の場合に
~/bash_profile
スクリプトを追加する方法bash_profile
すべてのユーザー通過するroot
?rpm
- ファイルがある場合、
/etc/profile
ユーザーはどのように実行できますかmyapp
? - より簡単な方法を提案できますか?
- ファイルが次の場合に
答え1
cron
やりたいことが解決しそうです。
crontabの一般的な形式は次のとおりです。各列は分、時間、日、月、曜日を表します。
30 * * * * /home/user/updates.sh
Cronはまた、@weekly
例えばを@daily
含むいくつかの事前定義された項目もサポートします@reboot
。
crontab
スクリプトを実行したいユーザーとしてログインしたり、他のユーザーの場合は、crontab -e
rootとしてログインして編集することができます。crontab -u username -e
crontab
エディタを開いた状態で、次を追加します。
@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ユーザーのためのメニュー項目を提供してください。環境変数を操作したくない場合は、必要な環境変数を設定する呼び出しスクリプトを提供してください。