rc.localで起動時にshスクリプトを実行できません。

rc.localで起動時にshスクリプトを実行できません。

これは私の/etc/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.

sh /home/ubuntu/Desktop/camset.sh
exit 0

/etcにCDを挿入して/home/ubuntu/Desktop/camset.shを実行すると、スクリプトが正しく実行されます。このスクリプトはv4l2-ctlのみを使用してカメラフィルタを設定します。スクリプトが実行されているときにカメラがまだ接続/設定されていない可能性がありますか?また、chmodを使用してスクリプトを実行可能にしました。

アップデート:これは私の新しい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.

/usr/bin/screen -dmS autostart bash -c '/home/ubuntu/Desktop/camset.sh'
deflog on
logfile /tmp/screenlog_$USER_.%H.%n.%Y%m%d-%0c:%s.%t.log
exit 0

tmp/ディレクトリにある唯一のファイルは次のとおりです。config-err-sHJlFD unity_support_test.0

答え1

いくつかの理由があり、私たちはあなたのスクリプトが何をしているのかわかりません。私がしなければならないことは、何が起こっているのかを理解するためにロギングを追加することだけです。

例をご覧ください。rc.localのログファイルはどこにありますか?

(私が好む)もう一つの方法は、以下を使用することです。画面コマンド独自の端末セッションでプロセスを開始します。

前提条件:

apt-get install screen

その後、local.rcファイルにこのような内容を追加できます。

/usr/bin/screen -dmS autostart bash -c '/home/ubuntu/Desktop/camset.sh'

画面コンソールログを保持するには、次のように/root/.screenrcファイルも作成します。

deflog on
logfile /tmp/screenlog_$USER_.%H.%n.%Y%m%d-%0c:%s.%t.log

再起動後にログファイルを確認できます(この例では/ tmpに保存されています)。

PS:スクリプトが返されない場合は、スクリプトの後にアンパサンド(&)を追加する必要があります。これにより、コンピュータが起動しなくなる可能性があります。

rc.local は root として実行されます。

関連情報