我正在尝试为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
然后,我在名为myservice的 /etc/init.d 中创建了一个新脚本。我使用了骨架:
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会话) - 每次我关闭它都会破坏它 - 以及如何让它在系统启动时运行?
我错过了什么?
编辑:刚添加“&”在行尾:
cd /home/admin/myservice/build && ./myservice file.dat &
现在它按预期工作。 我可以重新启动机器并运行服务!