これは私の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
/etc/rc.local
スクリプトを確認するには、次のコマンドを使用する必要があります。
Sudo service rc.local start
システムinit
がrc.local
スクリプトを開始すると、rootとして実行されますが、スクリプトを確認する場合は、 rootSudo
コマンド経由。
Can't CD to /root/server/srv/
のようなエラーが発生した理由です。
起動プロセス中にスクリプトが機能しない場合は、環境が制限されていることを考慮してください。そのため、スクリプトの必要に応じて不足している変数を定義する必要があります。
ここ は例です。
エラー:/bin/sh: 0: Illegal option -
はDOS
ファイル形式によるものです。
修正するには、 dos2unix ユーティリティをインストールし、rc.localファイルを変換する必要があります。
Sudo dos2unix /etc/rc.local