在init.d中后台执行Python脚本

4 投票
2 回答
5198 浏览
提问于 2025-04-15 17:39

为了和我的iPhone互动,我写了一个Python脚本,通过一个叫做“socket”的东西发送和接收数据。这个脚本必须在emule之后启动才能正常工作。

我想到了这样的做法:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/amuled
WEB=/usr/local/bin/amuleweb
NAME=amuled
DESC=amuled
RUNAMULE=no
USER=piros
# ADDED FOR iPhone
SOCKET= /home/piros/amule_scripts/aMuleSocket/aMuleSocket.py
#

然后

case "$1" in
start)
  echo -n "Starting $DESC: "
   su $USER -c "$DAEMON -f"
   while ! netstat -l -n -p -t | grep -q amuled ; do sleep 1 ; done
   su $USER -c "$WEB --quiet & "
   ##iPhone
   su $USER -c "$SOCKET & "
   ##
echo "$NAME."
;;

现在最大的问题是,虽然我用了&符号,但这个程序就是不想在后台运行 :( 有什么好主意吗??

谢谢!

2 个回答

2

试着用 nohup process.py & 来启动这个程序。

5

su 这个过程放到后台,而不是它的子进程。举个例子:

su $USER -c "$WEB --quiet" &

注意,&符号是在引号外面的。

撰写回答