多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## systemctl启动脚本的编写 >[success]手动编写脚本,一般会在源码包安装时使用。 >[info] CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下,脚本要有754的权限 > 每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install] ## 脚本的内容格式 ~~~ [Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式 PIDFile为存放PID的文件路径 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:启动、重启、停止命令全部要求使用绝对路径 [Install]服务安装的相关设置,可设置为多用户 ~~~ ### 附录: ~~~ Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。 Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。 Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。 Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。 Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。 ~~~ ### 编写一个httpd 的启动脚本 #### 1. 创建httpd.service 脚本文件 ~~~ vim /usr/lib/systemd/system/httpd.service ~~~ #### 2. 编写脚本内容 ~~~ [Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target [Service] Type=notify ExecStart=/usr/local/apache/bin/apachectl start -c /usr/local/apache/conf/httpd.conf ExecReload=/usr/local/apache/bin/apachectl restart ExecStop=/usr/local/apache/bin/apachectl stop [Install] WantedBy=multi-user.target ~~~ ## 编写mysql的启动脚本 #### 1. 创建mysqld.service 脚本文件 ~~~ vim /usr/lib/systemd/system/mysqld.service ~~~ #### 2. 编写脚本内容 ~~~ [Unit] Description=mysql After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/mysql/support-files/mysql.server start #ExecReload=/usr/local/mysql/support-files/mysql.server restart #ExecStop=/usr/local/mysql/support-files/mysql.server stop #PrivateTmp=true [Install] WantedBy=multi-user.target ~~~ ## 编写nginx的启动脚本 #### 1. 创建nginx.service 脚本文件 ~~~ vim /usr/lib/systemd/system/nginx.service ~~~ #### 2. 编写脚本内容 ~~~ [Unit] Description=nginx - high performance web server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop [Install] WantedBy=multi-user.target ~~~ ## 编写php-fpm的启动脚本 #### 1. 创建php-fpm.service 脚本文件 ~~~ vim /usr/lib/systemd/system/nginx.service ~~~ #### 2. 编写脚本内容 ~~~ [Unit] Description=php After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/php/sbin/php-fpm [Install] WantedBy=multi-user.target ~~~