完整文章请参考https://www.jianshu.com/p/79059b06a121或者google

  • 配置文件目录

    • systemctl脚本目录:/usr/lib/systemd/
    • 系统服务目录:/usr/lib/systemd/system/
    • 用户服务目录:/usr/lib/systemd/user/

    在/usr/lib/systemd/system目录下新建service-name.service文件:

  1. [UNIT]
  2. #服务描述
  3. Description=Media wanager Service
  4. #指定了在systemd在执行完那些target之后再启动该服务
  5. After=network.target
  6. [Service]
  7. #定义Service的运行类型,一般是forking(后台运行)
  8. Type=forking
  9. #定义systemctl start|stop|reload *.service 的执行方法(具体命令需要写绝对路径)
  10. #注:ExecStartPre为启动前执行的命令
  11. ExecStartPre=/usr/bin/test "x${NETWORKMANAGER}" = xyes
  12. ExecStart=/home/mobileoa/apps/shMediaManager.sh -start
  13. ExecReload=
  14. ExecStop=/home/mobileoa/apps/shMediaManager.sh -stop
  15. #创建私有的内存临时空间
  16. PrivateTmp=True
  17. [Install]
  18. #多用户
  19. WantedBy=multi-user.target

新建好service文件后,要执行命令 重载系统服务:systemctl daemon-reload

设置开机启动:systemctl enable *.service
启动服务:systemctl start *.service
停止服务:systemctl stop *.service
重启服务:systemctl reload *.service

示例集

注意:需要以754的权限保存在目录/usr/lib/systemd/system/

开机启动: systemctl enable nginx.service

heart-beat.service(自定义服务)

  1. [Unit]
  2. Description=heart-beat
  3. After=network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/home/admin/dashboard-heart-beat/start.sh
  7. ExecReload=
  8. ExecStop=/home/admin/dashboard-heart-beat/stop.sh
  9. [Install]
  10. WantedBy=multi-user.target

tomcat.service

  1. [Unit]
  2. Description=tomcat
  3. After=network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/tomcat/bin/startup.sh
  7. ExecReload=
  8. ExecStop=/usr/local/tomcat/bin/shutdown.sh
  9. [Install]
  10. WantedBy=multi-user.target

nginx.service

  1. [Unit]
  2. Description=nginx - high performance web server
  3. After=network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  7. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  8. ExecStop=/usr/local/nginx/sbin/nginx -s stop
  9. [Install]
  10. WantedBy=multi-user.target
  11. --------------------------或者---------------
  12. [Unit]
  13. Description=The nginx HTTP and reverse proxy server
  14. After=network.target remote-fs.target nss-lookup.target
  15. [Service]
  16. Type=forking
  17. PIDFile=/run/nginx.pid
  18. # Nginx will fail to start if /run/nginx.pid already exists but has the wrong
  19. # SELinux context. This might happen when running `nginx -t` from the cmdline.
  20. # https://bugzilla.redhat.com/show_bug.cgi?id=1268621
  21. ExecStartPre=/usr/bin/rm -f /run/nginx.pid
  22. ExecStartPre=/usr/sbin/nginx -t
  23. ExecStart=/usr/sbin/nginx
  24. ExecReload=/bin/kill -s HUP $MAINPID
  25. KillSignal=SIGQUIT
  26. TimeoutStopSec=5
  27. KillMode=process
  28. PrivateTmp=true
  29. [Install]
  30. WantedBy=multi-user.target

mysql.service

  1. [Unit]
  2. Description=mysql
  3. After=network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/mysql/support-files/mysql.server start
  7. #ExecReload=/usr/local/mysql/support-files/mysql.server restart
  8. #ExecStop=/usr/local/mysql/support-files/mysql.server stop
  9. #PrivateTmp=true
  10. [Install]
  11. WantedBy=multi-user.target

php-fpm.service

  1. [Unit]
  2. Description=php
  3. After=network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/php/sbin/php-fpm
  7. [Install]
  8. WantedBy=multi-user.target

redis.service

  1. [Unit]
  2. Description=Redis
  3. After=network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/bin/redis-server /etc/redis.conf
  7. ExecStop=kill -INT `cat /tmp/redis.pid`
  8. User=www
  9. Group=www
  10. [Install]
  11. WantedBy=multi-user.target

supervisord.service

  1. [Unit]
  2. Description=Process Monitoring and Control Daemon
  3. After=rc-local.service
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
  7. SysVStartPriority=99
  8. [Install]
  9. WantedBy=multi-user.target