<p>除了gg.kaspersky方法外,还可以将脚本转换为“服务”,以便可以使用以下方法启动或停止脚本:</p>
<pre><code>$ sudo service myserver start
* Starting system myserver.py Daemon [ OK ]
$ sudo service myserver status
* /path/to/myserver.py is running
$ sudo service myserver stop
* Stopping system myserver.py Daemon [ OK ]
</code></pre>
<p>并将其定义为启动服务,使用:</p>
<pre><code>$ sudo update-rc.d myserver defaults
</code></pre>
<p>为此,必须创建此文件并将其保存在/etc/in it.d/中。</p>
<pre><code>#!/bin/sh -e
DAEMON="/path/to/myserver.py"
DAEMONUSER="myuser"
DAEMON_NAME="myserver.py"
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
d_start () {
log_daemon_msg "Starting system $DAEMON_NAME Daemon"
start-stop-daemon --background --name $DAEMON_NAME --start --user $DAEMONUSER --exec $DAEMON
log_end_msg $?
}
d_stop () {
log_daemon_msg "Stopping system $DAEMON_NAME Daemon"
start-stop-daemon --name $DAEMON_NAME --stop --retry 5 --name $DAEMON_NAME
log_end_msg $?
}
case "$1" in
start|stop)
d_${1}
;;
restart|reload|force-reload)
d_stop
d_start
;;
force-stop)
d_stop
killall -q $DAEMON_NAME || true
sleep 2
killall -q -9 $DAEMON_NAME || true
;;
status)
status_of_proc "$DAEMON_NAME" "$DAEMON" "system-wide $DAEMON_NAME" && exit 0 || exit $?
;;
*)
echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|force-stop|restart|reload|force-reload|status}"
exit 1
;;
esac
exit 0
</code></pre>
<p>在这个例子中,我假设你有一个类似“shebang”的东西!/usr/bin/python位于python文件的开头,这样就可以直接执行它。</p>
<p>最后但并非最不重要的一点是,不要忘记授予python服务器和服务脚本的执行权限:</p>
<pre><code>$ sudo chmod 755 /etc/init.d/myserver
$ sudo chmod 755 /path/to/mserver.py
</code></pre>
<p>这是<a href="http://doc.ubuntu-fr.org/tutoriel/comment_transformer_un_programme_en_service" rel="nofollow noreferrer">page</a>我最初在这里学的(法语)。</p>
<p>干杯。</p>