2017-06-18 21 views
1

rc.localで参照されているシェルスクリプトを実行しています。ファイルはgit-versionedであり、各ユーザーのそれぞれのホームディレクトリに変更する必要があります。絶対パスは正常に動作しますが、それらはマシンごとに異なります。 $ HOMEまたは〜/がまだ定義されていない場合、起動時にrc.localのメインユーザディレクトリにどのように変更できますか?

これは、作業スクリプトです:

CD /ホーム/ユーザー名/ rightDIR

PHPはlocalhostと-S:8000

このスクリプトは、サーバーを起動しますが、中に移動することができません

cd $ HOME/rightDIR

PHPの-S localhostを:一つだけのユーザーが自分のホームフォルダにrightDIRを持っている場合

+0

「メインユーザー」は誰ですか? '$ HOME'が設定され、'〜 'は' $ HOME'の現在の値を使用しますが、 'root'は' rc.local'を実行するユーザであるため、両方ともルートユーザのホームディレクトリを参照します。 – chepner

+0

マシンが起動したら(つまり自分自身)、ログインするユーザーを意味するので、HOMEが異なるrootでスクリプトを実行しても、どのようにしてユーザーディレクトリに移動できますか? (各システムには1人のユーザーしかいません) – TheRed

+0

もう一度、どのユーザーですか?マシンは複数のユーザーを持つことができ、 'none。* 'は' rc.local'が実行された時点でログインします。 'root'以外に、他の著名ユーザーの概念はありません。スタートアッププロシージャに関係する特定の非ルートユーザーがいる場合は、それが誰であるかを明示する必要があります。スタートアップが完了すると、マシンは誰にログインするのか推測できません。 – chepner

答えて

1

cd /home/*/rightDIR && php -S localhost:8000 & 8000は、(そうでない場合は最初の試合は勝った)動作するはずです。

&&はコマンドを一緒に連結します。 cdコマンドが失敗した場合、コマンドは起動しません。

起動ハングとにかく、nohupを追加することを検討した場合、シェルはrc.localを

にこの行の後に来る任意のコマンドを継続して実行できるように、最後に&は、バックグラウンドでシェルジョブとしてコマンドを開始代わりにシェルからコマンドを切り離すために、phpの左に置いてください。

+0

非常にスマートな回避策で、私の場合は:ターゲットフォルダは一度だけ存在し、うまくいきます! – TheRed

+0

喜んで助けてください:) このようなフォルダが2つ以上ある場合は、すべての/ home/*/rightDIRをループして内容を確認したり、それぞれのWebサーバーを起動することもできます。 – Jay

関連する問題