web-dev-qa-db-ja.com

rc.localはスクリプトを実行しません

これは私のrc.localです

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

cd /root/server/srv/
./start_srv &

exit 0

実行するとき

    cd /root/server/srv/
    ./start_srv &

自分でターミナルを介して、それは正常に起動し、すべてが動作しますが、私はrc.localを介してそれをしようとすると起動しません。

私はrc.localがSudoなどを必要としないことを知っています。ターミナルから自分でrc.localを実行しようとすると、「Ca n't CD to ...」というエラーが表示されます。

何が間違っていますか?

ls -ld/root:drwx------ 4 root root 4096

ls -ld/root/server:drwxr-xr-x 3 root root 4096

ls -ld/root/server/srv/start_srv:-rwxr-x--x 1 500 500 468420

ls -ld/root/server/srv:drwxrwxrwx 2 500 500 4096

3
user1880779

/etc/rc.localスクリプトを確認するには、次のコマンドを使用する必要があります。

  Sudo service rc.local start

システムinitrc.localスクリプトを開始すると、rootとして実行されますが、スクリプトを確認する場合は、 rootSudoコマンド経由。

Can't CD to /root/server/srv/のようなエラーが発生した理由です。

起動プロセス中にスクリプトが機能しない場合は、環境が制限されていることを考慮してください。そのため、スクリプトの必要に応じて不足している変数を定義する必要があります。

ここ は例です。

エラー:/bin/sh: 0: Illegal option -DOSファイル形式によるものです。

修正するには、 dos2unix ユーティリティをインストールし、rc.localファイルを変換する必要があります。

  Sudo dos2unix /etc/rc.local
3
Lety