systemd介绍systemd是目前Linux系统上主要的系统守护进程管理工具。一方面,init对进程进行串行管理,容易出现阻塞。另一方面,init只是执行启动脚本,并不能对服务本身进行更多的管理。所以从CentOS7开始,systemd已经取代init成为默认的系统进程管理工具。systemd管理的所有系统资源都称为Units,这些Units可以通过systemd命令集轻松管理。例如systemctl、hostnamectl、timedatectl、localctl等命令。虽然这些命令改写了init时代用户的命令使用习惯(不再使用chkconfig、service等命令),但确实提供了极大的便利。systemd特点:1.最新系统全部由systemd管理(RedHat7、CentOS7、Ubuntu15...)2.CentOS7支持并行启动服务,显着提高开机启动效率3.CentOS7关机只关闭运行服务,而CentOS6,都关闭一次。4、CentOS7服务的启停不再由脚本管理,即/etc/init.d下没有脚本。5、CentOS7使用systemd解决了原有模式的缺陷,如原有服务不会关闭程序生成的子进程。systemd语法systemctl[command][unit](配置的应用名称)command可选start:启动指定单元systemctlstartnginxstop:关闭指定单元systemctlstopnginxrestart:重启指定单元systemctlrestartnginxreload:重新加载指定单元systemctlreloadnginxenable:系统启动时自动启动指定单元,前提是配置文件中有相关配置systemctlenablenginxdisable:开机时不自动运行指定单元systemctldisablenginxstatus:查看当前运行的指定单元unitStatussystemctlstatusnginxsystemd配置文件说明:每个Unit都需要有一个配置文件来告知systemd该服务的管理方式。配置文件存放在/usr/lib/systemd/system/。在/system目录下创建一个软链接文件。每个Unit的配置文件都配置了默认后缀名.service。/usr/lib/systemd/system/目录分为两个目录:system和user。一般无需登录即可运行。程序存在于系统服务中,即/usr/lib/systemd/system配置文件用方括号分为多个部分,区分大小写yum-yinstallgccgcc-c++openssl-develpcre-develgd-develiproutenet-toolstelnetwgetcurlwgethttp://nginx.org/download/nginx-1.15.5.tar.gztarzxfnginx-1.15.5。tar.gz&&cdnginx-1.15.5./configure--prefix=/usr/local/nginx--with-http_ssl_module--with-http_stub_status_modulemake-j4&&makeinstall一般方式启动nginx/usr/local/nginx/sbin/nginx#start/usr/local/nginx/sbin/nginx-sreload#重启/usr/local/nginx/sbin/nginx-squit#关闭nginxsystemd管理控制启动方式vim/usr/lib/systemd/system/nginx.service[Unit]Description=nginxAfter=network.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx-sreloadExecStop=/usr/local/nginx/sbin/nginx-squitPrivateTmp=true[Install]WantedBy=多用户.目标参数详解systemctlrestartnginxsystemctlenablenginxsystemctlstopnginx实现systemd管理控制nginx服务实战如图2二进制安装tomcat实现systemd管理控制安装java环境,我已经把安装包打包到我的服务器上了,大家可以也去官网下载wget120.78.77.38/file/jdk-8u231-linux-x64.rpmwget120.78.77.38/file/apache-tomcat-9.0.27.tar.gzrpm-ivhjdk-8u231-linux-x64。rpm#rpm直接安装jdk配置环境变量vim/etc/profileexportJAVA_HOME=/usr/java/jdk1.8.0_231-amd64exportJRE_HOME=${JAVA_HOME}/jreexportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexportJAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/binexportPATH=${JAVA_HOME}/bin:$PATHsource/etc/profilejava-version#检测安装tomcattar的环境-xfapache-tomcat-9.0.27mvapache-tomcat-9.0.27/usr/local/tomcatstarttomcatsh/usr/local/tomcat/bin/startup.sh#startsh/usr/local/tomcat/bin/shutdown.sh#关闭systemd管理控制,启动vim/usr/lib/systemd/system/tomcat.service[Unit]Description=tomcatserverWants=network-online.targetAfter=network.target[Service]Type=forkingEnvironment="JAVA_HOME=/usr/java/jdk1.8.0_231-amd64"Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"ExecStart=/usr/local/tomcat/bin/startup.shExecStop=/usr/local/tomcat/bin/shutdown.shRestart=on-failure[Install]WantedBy=multi-user.targetsystemctlrestarttomcat#startsystemctlenabletomcat#configureself-startsystemctlstoptomcat#停止服务ystemctlstatustomcat#Detectstatus以上两个实战的nginx和tomcat程序都有自己的启动和停止脚本。如果启动程序没有自己的脚本,则需要编写类似的启动和停止脚本。实战三、部署jar程序实现systemd管理控制在实际项目中,会存在一些需要启动的jar程序。如果手动启动,需要输入一系列的命令才能停止,需要kill进程才能停止。举个实际启动的例子很麻烦。切换到jar目录java-jardecode.jar-Dconfig=/usr/local/abc/application.properties编写启动脚本vimdemo.sh#!/bin/bash#source/etc/profilejarName="abc-web.jar"jar"workDir="/usr/local/abc"start(){cd${workDir}&&java-jar${jarName}--spring.profiles.active=prod--server.port=9630>uams.log2>&1&}stop(){ps-ef|grep-qP"(?<=-jar)s+${jarName}"&&kill$(ps-ef|grep-P"(?<=-jar)s+${jarName}"|awk'{print$2}')}case$1instart)startstart;;停止)停止;;restart)antstopamonustartserverwork;;esac写入systemd配置文件vim/usr/lib/systemdW/system/abc.targetAfter=network.target[Service]Type=forkingWorkingDirectory=/usr/local/abc/ExecStart=/bin/bashuams.shstartExecStop=/bin/bashuams.shstopExecReload=/bin/bashuams.shrestartRestart=on-failure[Install]WantedBy=multi-user.target启动abc服务systemctlrestartabc#Startsystemctlenableabc#Configureself-startsystemctlstopabc#停止服务systemctlstatusabc#检测状态来源:https://blog.csdn.net/weixin_...
