具体流程
在/usr/lib/systemd/system目录下新建一个 service-name.service的文件以apache的httpd.service的unit为例解释 [Unit] #定义描述 Description=The Apache HTTP Server #指定了在systemd在执行完那些target之后再启动该服务 After=network.target remote-fs.target nss-lookup.target [Service] #定义Service 的运行type,一般是forking,就是后台运行 Type=notify Environment=LANG=C #以下定义systemctl start |stop |reload *.service 的每个执行方法,具体命令#需要写绝对路径 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND ExecReload=/usr/sbin/httpd $OPTIONS -k graceful # Send SIGWINCH for graceful stop KillSignal=SIGWINCH KillMode=mixed #创建私有的内存临时空间 PrivateTmp=true [Install] WantedBy=multi-user.target以下是我自己写的一个java项目,需要他开机自运行的service,systemd会帮我执行我写脚本,shell如下,仅供参考
#!/bin/bash CMD=$1 case $CMD in -start) nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log & ;; -stop) port=$(sudo netstat -tnlp | grep ':9099' |awk '{print $nf}' |awk -f'/' '{print $1}') sudo kill $port ;; -restart) port=$(sudo netstat -tnlp | grep ':9099' |awk '{print $nf}' |awk -f'/' '{print $1}') sudo kill $port nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log & ;; *) echo "Usage: shMediaManager.sh -start | -stop | -restart .Or use systemctl start | stop | restart MediaManager.service " ;; esac编辑.service文件,在Exec*下执行脚本,来启动关闭重启服务
[UNIT] Description=Media wanager Service After=network.target [Service] Type=forking **ExecStart=/home/mobileoa/apps/shMediaManager.sh -start ExecReload=/home/mobileoa/apps/shMediaManager.sh -restart ExecStop=/home/mobileoa/apps/shMediaManager.sh -stop** PrivateTmp=True [Install] WantedBy=multi-user.target设置开机自起systemctl enable MediaManager.service会创建一个连接
相关资源:敏捷开发V1.0.pptx