一、systemctl是Systemd 的主命令,可用于管理系统。
列出所有已经加载的systemd units
systemctl systemctl | grep docker.service
列出所有service
systemctl list-units --type=service systemctl --type=service
列出所有active状态(运行或退出)的服务
systemctl list-units --type=service --state=active
列出所有正在运行的服务
systemctl list-units --type=service --state=running
列出所有正在运行或failed状态的服务
systemctl list-units --type service --state running,failed
列出所有enabled状态的服务
systemctl list-unit-files --state=enabled systemctl list-unit-files ##enabled和disabled
查看内部命令
# enable -a enable . enable : enable [ enable alias enable bg enable bind enable break enable builtin enable caller enable cd enable command enable compgen enable complete enable compopt enable continue enable declare enable dirs enable disown enable echo enable enable enable eval enable exec enable exit enable export enable false enable fc enable fg enable getopts enable hash enable help enable history enable jobs enable kill enable let enable local enable logout enable mapfile enable popd enable printf enable pushd enable pwd enable read enable readarray enable readonly enable return enable set enable shift enable shopt enable source enable suspend enable test enable times enable trap enable true enable type enable typeset enable ulimit enable umask enable unalias enable unset enable wait
二、systemd
systemd是目前centos系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本身进行更多的管理。所以从CentOS 7开始也由systemd取代了init作为默认的系统进程管理工具。
systemd所管理的所有系统资源都称作Unit,通过systemd命令集可以方便的对这些Unit进行管理。比如systemctl、hostnamectl、timedatectl、localctl等命令,这些命令虽然改写了init时代用户的命令使用习惯(不再使用chkconfig、service等命令),但确实也提供了很大的便捷性。
systemd配置文件
-
每一个Unit都需要有一个配置文件用于告知systemd对于服务的管理方式
-
配置文件存放于/usr/lib/systemd/system/,设置开机启动后会在/etc/systemd/system目录建立软链接文件
-
每个Unit的配置文件配置默认后缀名为.service
-
在/usr/lib/systemd/system/目录中分为system和user两个目录,一般将开机不登陆就能运行的程序存在系统服务里,也就是/usr/lib/systemd/system
-
配置文件使用方括号分成了多个部分,并且区分大小写

部署jar程序 实现systemd管理控制
java -jar decode.jar -Dconfig=/usr/local/abc/application.properties
代码
vim demo.sh #!/bin/bash # source /etc/profile jarName="abc-web.jar" workDir="/usr/local/abc" start(){ cd ${workDir} && java -jar ${jarName} --spring.profiles.active=prod --server.port=9630 >uams.log 2>&1 & } stop(){ ps -ef | grep -qP "(?<=-jar)s+${jarName}" && kill $(ps -ef | grep -P "(?<=-jar)s+${jarName}" | awk '{print $2}') } case $1 in start) start ;; stop) stop ;; restart) stop start ;; esac
编写systemd配置文件
vim /usr/lib/systemd/system/abc.service [Unit] Description=uams server Wants=network-online.target After=network.target [Service] Type=forking WorkingDirectory=/usr/local/abc/ ExecStart=/bin/bash uams.sh start ExecStop=/bin/bash uams.sh stop ExecReload=/bin/bash uams.sh restart Restart=on-failure [Install] WantedBy=multi-user.target