私はこれにずっと苦労していて、さらに別のスタートアップスクリプトの質問をすることができました。
比較的単純な起動スクリプトがあります。
### BEGIN INIT INFO
# Provides: startVNC
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Start VNC server at boot time
# Description: Test
### END INIT INFO
#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""
/usr/bin/vncserver -geometry 1280x1024 -depth 24
明らかに、本当に重要なのは最後の行だけです。スクリプトは実行可能です。
ls -l startVNC
収量:
-rwxr-xr-x 1 root root 406 2011-12-07 15:45 startVNC
my_user
vncserverが起動し、デスクトップからGUIを表示できるように、ssh経由でログインしたときに実行すると。それで私はそれを起動時に実行させるために5つのことを試みました:
/etc/init.d/
にコピーし、update-rc.d -f startVNC defaults
を呼び出します(defaults
の後に99
を付けて、vncserver
が依存するすべてのものがすでに実行されていることを確認します)。生成されたすべてのシンボリックリンクが/etc/rcX.d/
フォルダーにあることを確認しました。しかし、再起動や起動では機能しませんでした/etc/rc.local
の前にexit 0
に追加するcrontab -e
に@reboot /home/my_user/scripts/startVNC
として追加/etc/init.d/rcS
に追加するしかし、それらのどれも機能しませんでした。これ以上何を確認できますか。スクリプトにエラーがありますか?プロセスの所有者は、プロセスが機能するためにmy_user
である必要があると思いますが、デバッグする方法がわかりません。
手がかりをいただければ幸いです。
su
[YourUserName]-c /usr/bin/vncserver
を使用して、ルートではなくユーザーとしてvncserverを実行できます。
別のポイント:スクリプトでは、VNCサーバーの起動と停止に違いはありません。通常、initスクリプトは、さまざまなケースを使用してサービスを開始/停止します。
case "$1" in
start)
# code to start the application
;;
stop)
# code to stop the application
;;
restart)
$0 stop
$0 start
;;
esac
ここ は、initスクリプトを使用してvncサーバーを起動する方法の詳細な例です。
はい、分かりました。問題は次のとおりです。
su [my_user] -c
を使用する必要がありますオプションには引用符を使用する必要があります。
su my_user -c "/ usr/bin/vncserver -geometry 1280x1024 -depth 16"
また、. /lib/lsb/init-functions
とexit 0
を追加しました。これらが必要かどうかはわかりませんが、害はありません。 tohuwawohuによって提供された手の込んだ例からそれらをコピーしただけです。
だから私は結局:
### BEGIN INIT INFO
# Provides: startVNC
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Start VNC server at boot time
# Description: A sophisticated script to do the job.
### END INIT INFO
#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""
. /lib/lsb/init-functions
su my_user -c "/usr/bin/vncserver -geometry 1280x1024 -depth 16"
exit 0
これは問題なく動作します。もちろん、上記で引用した 手の込んだスクリプト を使用する方がさらに良いかもしれません。次の方法で起動するスクリプトを追加しました。
Sudo update-rc.d -f startVNC start 99 2 3 4 5 .
シャットダウン時に何かを実行する理由が見当たらないためです(ロギング以外に、私は行っていません)。
Shebang(#!で始まる行)が私の元の質問の下でここに置き忘れられていることについてのコメントも参照してください。ただし、これは機能するため、テストされていないコードをここに含めたくありませんでした。使用したい場合は、おそらく変更する必要があります。