Ubuntu Karmicで動作しています。起動時に次の(更新された)スクリプトを実行する必要があります。
#!/bin/sh
# /etc/init.d/scripts
# Description: Starts Python scripts
# ————————————————–
#
### BEGIN INIT INFO
# Provides: Scripts
# Required-Start: $network $local_fs $syslog
# Required-Stop: $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start Python scripts to provide mapping services
### END INIT INFO
case $1 in
start)
# echo -n ¨Starting Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
stop)
# echo -n ¨Stoping Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
restart)
# echo -n ¨Retarting Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
*)
# echo ¨Usage: scripts {start|stop|restart}¨
exit 1
esac
/etc/init.dに入れて登録しました。
sudo update-rc.d scripts defaults
しかし、起動時に何も起こりません。ログを見ようとしましたが、何も見つかりませんでした。スクリプトと liteserv.py の両方が実行可能としてマークされます。
私が実行したときのPer Andy Smithの応答は次のとおりです。
/etc/init.d/scripts start
プログラムが正しく実行されています(誤った引用符を修正した後)。
ただし、起動時にまだプログラムは実行されません。
答え1
奇妙だがStack Exchangeが何をしているのか、それ以外の問題は""
。
どのエディタを使用しても、標準の引用符文字(Unicode U + 0022)をスタイル付きの開閉引用符(U + 201CおよびU + 201D)に置き換えることができます。 sh
本当に気に入らない。これらの様式化された引用符を「一般引用符」に置き換えると、コードは正常に動作します(呼び出す.pyファイルがないという小さな例外を除く)。
答え2
にコンテンツを追加できます/etc/rc.local
。
それ以外の場合は、スクリプトを挿入して/etc/init.d/
実行chmod +x
できますupdate-rc.d FOO defaults
。
答え3
あなたのスクリプトはランレベル3と5で始まり、ランレベル1と2(終了と再起動の0と6も含む)で停止し、ランレベル4ではまったくわからないことを示します。 Ubuntuはデフォルトでランレベル2で起動します(Upstartの場合も同じだと思います)。したがって、他のデフォルトの実行レベルを設定しないと、スクリプトは実行されません。スクリプトヘッダーで以下を使用します。
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
答え4
加えて:
exec > /tmp/debug-my-script.txt 2>&1
スクリプトファイルの先頭で、少なくともPythonプログラムからのエラーメッセージ(postgresの認証エラー)をキャプチャできました。したがって、スクリプトは起動時に(多くのコミュニティを入力した後)実行されます。実行時に失敗します(これは別の問題です)。