web-dev-qa-db-ja.com

init.dスクリプトは実行されません

ウェブサーバーを起動する/etc/init.dスクリプトがあります。実行可能にして追加しました(update-rc.d webserver defaults)。コマンドラインからスクリプトを実行すると、正常に動作します(./webserver)。

しかし、システムを再起動した後、ウェブサーバーが実行されていません。

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

cd ~/projects/webserver
./.build/debug/webserver &
exit 0

ユーザーディレクトリに問題はありますか(ルートとしてログインしていますか)?

3
eclipse

必要なチルダ展開のタイプは、シェルの現在のユーザーを参照して実行されます。たとえば、ルートとしてログインすると、~/rootになります。ログインする前にスクリプトを実行すると、~を目的のディレクトリに展開できません。

スクリプト内のファイルへのフルパスを使用します。

将来の参考のために、 here は、スクリプトでチルダ展開を使用する便利な例です

5
Zanna

さて、スクリプトに問題があります。スクリプトを記述するときは、tilde(〜)の代わりに絶対パスを使用してください。それがスクリプトを使用不能にした犯人である可能性があります。 dirを変更する場合は、〜/ projectsの代わりに/ home/scripts/projects /のようなフルパスを指定します。これにより、さらに大きな違いが生じます。

Sudo su
chmod a+x /etc/init.d/webserver
update-rc.d webserver defaults

2)再起動時にcronジョブを追加します。

Sudo su
crontab -e
@reboot /home/path/to/script.sh

3)最後の行exitの前にコマンドをrc.localファイルに追加します。

Sudo su
nano /etc/rc.local
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
cd /absolute/path/projects/webserver
./.build/debug/webserver &
3
SAGAR Nair