【发布时间】:2016-01-24 11:28:29
【问题描述】:
我正在使用带有 Raspbian 的树莓派,我尝试这样做:
我在etc/init.d中创建了一个文件myservice.sh
...
DIR=/var/www/MDH/python
DAEMON=$DIR/myserv.py
DAEMON_NAME=myserv
DAEMON_USER=pi
PIDFILE=/var/run/$DAEMON_NAME.pid
...
do_start () {
echo "Starting system do_start $DAEMON_NAME daemon"
start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON -- $DAEMON_OPTS
echo "Started $DAEMON"
}
do_stop () {
...
ccase "$1" in
start|stop)
do_${1}
;;
restart|reload|force-reload)
do_stop
do_start
;;
status)
status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?
;;
*)
echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}"
exit 1
;;
esac
exit 0
当我运行sudo service /etc/init.d/myservice.sh start 时,提示正常:
Starting system do_start myserv daemon
. ok
Started /var/www/MDH/python/myserv.py
但是如果我执行 sudo service /etc/init.d/myservice.sh status 我的脚本没有运行:
[FAIL] /var/www/MDH/python/myserv.py is not running ... failed!
如果我尝试使用 python /var/www/MDH/python/myserv.py 运行 python 脚本并且它工作正常。
实现日志或更好地调试脚本的任何想法。
【问题讨论】:
-
对不起我的第一个问题我的标题错误“...无法运行 python 文件”
-
您可以编辑原始问题以澄清它,而不是使用 cmets。此外,
service只是运行相应的脚本,您可以运行/etc/init.d/foo start而不是service foo start,这样可以进一步减少重现问题所需的代码。也就是说,到目前为止,您没有提供足够的信息,请参阅发布指南。 -
我最近开始使用linux,但我不太了解......这就是我写任何想法以更好地调试脚本并发布更详细信息的原因。谢谢你的提示
service foo start -
@UlrichEckhardt 的建议很好。另外...
$PIDFILE是如何定义的?通常 pid 文件应该是 /var/run/*service*.pid 检查定义,如果/当它正常时,查看 /var/run 以查看文件是否存在并且它包含正在运行的服务的 pid . -
是的,PIDFILE 是我在主帖中定义的,在
/var/run/myserv.pid中有一个数字:18895 并在每次服务启动时更改广告。
标签: python linux raspberry-pi daemon