首先是创建shell守护进程:(shouhu.sh) 

#!/bin/bash

test(){
        while true
        do
                ls ./  >> 123.txt
                sleep 5
                    
        done

}


case $1 in
start)
        path="/root/shouhu.pid"
        if [ -f $path ]; then
                pid=`cat /root/shouhu.pid`
                echo "进程$pid正在运行..."
        else
                test & 
                echo $! > /root/shouhu.pid
                echo "运行进程$!..." 
        fi
        ;;
stop)
        pid=`cat /root/shouhu.pid`
        kill -9 $pid
        echo "结束进程$pid..."
        rm -rf /root/shouhu.pid
        ;;
restart)
        path="/root/shouhu.pid"
        if [ -f "$path" ];then
                pid=`cat /root/shouhu.pid`
                kill -9 $pid
                echo "结束进程$pid..."
                rm -rf /root/shouhu.pid

                test &
                echo $! > /root/shouhu.pid
                echo "运行进程$!..."
        else
                echo "进程没运行..."
                test &
                echo $! > /root/shouhu.pid
                echo "运行进程$!..."
        fi 
        ;;
status)
        path="/root/shouhu.pid"
        if [ -f $path ];then
                pid=`cat /root/shouhu.pid`
                echo "进程$pid正在运行..."
        else
                echo "进程没运行..."
        fi
        ;;
*)
        echo "Usage:{start|stop|restart|status}"
        ;;

esac

然后把shouhu.sh 设置为系统服务:

#~]vi /usr/lib/systemd/system/shouhu.service
[Unit]  
Description=shouhu 
After=network.target  
   
[Service]  
Type=forking  
PIDFile=/root/shouhu.pid  
ExecStart=/root/shouhu.sh  start
ExecReload=/root/shouhu.sh  restart
ExecStop=/root/shouhu.sh  stop
PrivateTmp=true  
   
[Install]  
WantedBy=multi-user.target

CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]

[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于设置启动先后顺序;

[Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错;

[Install]部分是服务安装的相关设置,可设置为多用户的。


保存好编写的文件,然后设置开机启动:

 ~]# systemctl enable shouhu