我正在尝试为linux服务创建一个守护进程 .

实际上,我可以从我的主目录启动服务,如下所示:

cd /home/admin/myservice/build && ./myservice file.dat

请注意,我需要将file.dat添加为“参数”,否则服务无法启动 .

嗯,这就是我做的 . 首先,我创建了一个简单的脚本来启动 /usr/bin 中的服务 . 文件名是myservice.sh:

#!/bin/sh
cd /home/admin/myservice/build && ./myservice file.dat

然后,我给了这个脚本的exec权限:

chmod +x /usr/bin/myservice.sh

然后,我在 /etc/init.d 中创建了一个名为myservice的新脚本 . 我用了骨架:

sudo -s
cp /etc/init.d/skeleton /etc/init.d/myservice

内容是:

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Myservice Daemon"
NAME=myservice
DAEMON=/usr/bin/myservice.sh
DAEMON_ARGS="--options args"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

然后,我给了脚本的exec权限:

chmod +x /etc/init.d/myservice

我运行它来激活守护进程:

update-rc.d myservice defaults

现在我可以像这样启动守护进程:

/etc/init.d/myservice start --quiet --background

但它像以前一样工作: - 它不是在后台启动的(我不能使用相同的shell会话) - 每次我关闭shell它都会破坏 - 以及如何让它在系统启动时运行?

我错过了什么 ?

EDIT: just added "&" at end of line:

cd /home/admin/myservice/build && ./myservice file.dat &

现在它按预期工作 . 我可以重启机器,服务运行!