サーバーはsystemdなしでDebian 7 Wheezyを実行しています。
彼のホームディレクトリにPerlbrewがインストールされているDebianユーザーがいます。ユーザーがMojoliciousアプリケーションを実行しています。アプリケーションが正しく機能するには、Perlbrew bashrcファイルをロードする必要があります。現在、ユーザーはログインしてhypnotoad app
デーモンを起動するアプリケーションを実行します。私はアプリケーションとそれに関連するすべてをユーザーのホームディレクトリに分離しようとしていますが、Perlシステムを混乱させたくありません。しかし、アプリケーションをサービスとして実行し、起動時に起動するなどのことをしたいのですが、ユーザーとしてサービスを実行するときにPerlbrew bashrcからリソースを取得する方法がわかりません。
簡単に言えば、私の質問はタイトルにまとめられていますが、基本的にbashrcファイルからサービスのソースコードを取得する方法を知りたいです。
答え1
試してみましたsu <user> -l -c <cmd>
か?
これらのrc
スクリプトはrootユーザー(id = 0)として実行されるため、rootとしてシステムで定義されているすべてのユーザーの権限でプロセスを作成できます。
たとえば、
su root -l -c "ls /tmp"
どこ:
- -c: コマンドを実行します。
- -l:指定されたユーザーとしてログインします。
答え2
もちろん、システムの起動時にrootとして実行されるスクリプトとしてユーザーの.bashrcをインポートしないでください。 2つの提案:
サービスを開始するスクリプトを作成します(mystart.shと仮定します)。このスクリプトは.bashrcをインポートしてからアプリケーションを起動できます。
#!/usr/bin/bash
. .bashrc
hypnotoad app
起動時にスクリプトを実行するには、ユーザーのcrontabを使用することをお勧めします。ユーザーが配置できるようにします。
@reboot mystart.sh
彼らのcrontabから。これはユーザーとして実行され、後で無効にするか置き換えるかどうかはユーザー次第です。