systmd守护进程
-
修改守护进程
-
守护进程名字pihealthd
-
服务名字pihealthd.master
-
将ptintf修改成DBG
sed -i s/printf/GBD
注意sprint也会被修改
守护进程里有加两行代码以防失败
int pid = fork();
if (pid > 0) exit(0);
需要三个文件:
首先在lib/systemd/system创建一个服务文件pihealthd_master.service
不要找错文件夹
文件内容:
[Unit]
Description=pihealth.master-1.0
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/bin/pihealth/pihealthd.master.start
ExecStot=/usr/bin/pihealth/pihealthd.client.stop
[Install]
WantedBy=multi-user.target
在usr/bin下创建一个文件pihealth
然后就是创建两个pihealthd.master.start 和 pihealthd.master.stop
start的头文件不能加前缀任何注释。 stop可以加但是最好不要加
注意有个cd操作是不可以扩展的
pihealthd.master.start
#!/bin/bash
if [[ ! -e /etc/pihealth.pid ]]; then
touch /etc/pihealth.pid
fi
pre_pid=`cat /etc/pihealth.pid`
if test -n $pre_pid ;then
ps -ef |grep -w ${pre_pid} |grep pihealth > /dev/null
if [[ $? == 0 ]]; then
echo "Pihealth has already started."
exit 0
else
echo "Pihealth is starting."
cd /home/Project/Socket_Pro/Master/
./pihealth.master
echo "Pihealth.master started."
fi
else
echo "Pihealth.master is starting."
cd /home/Project/Socket_Pro/Master/
./pihealth.master
echo "Pihealthd.master started."
fi
pid=`ps -ef | awk '{if ($8 == "pihealth") print $2}'`
echo $pid > /etc/pihealth.pid
pihealthd.master.stop
#!/bin/bash
pid=`ps -ef |awk '{if ($8 == "pihealth") print $2}'`
kill -9 $pid
echo "Stopped."