linux的.service服务开机自启动后为啥会自动停止

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux的.service服务开机自启动后为啥会自动停止相关的知识,希望对你有一定的参考价值。

1.看下home下会不会有内存溢出什么的文件导致的服务假停现象,

2.查看进程是否监听,linux如何查询端口是否使用

各种思路。。接口访问不了,但是呢jar包的进程还是存在的ps -ef|grep XX.jar

是有的啊?

http://xx.xx.xx/api/接口名称 报404

服务假停,可能是内存过大,日志超出限制,有个home的目录,我们看下这个目录下有啥内存溢出或者相关的文件可以跟踪,继续排查中。。难定位但是有挑战呢。

jar服务允许,关闭xshell,不能访问,处理nohup

1,通常情况,客户端通过xshell访问centos,进行jar包发布后(命令:java -jar xxx.jar),如果关闭,或者断开xshell后,就不能访问jar包服务了;

2、如何处理呢?

3、使用如下命令:nohup java -jar xxx.jar >指定路径文件.txt &

执行该命令后,可能会出现如下错误:

nohup: ignoring input and redirecting stderr to stdout

4、如下执行命令即可:

nohup java -jar xxx.jar  >指定路径文件.txt  2>&1 &
 再次执行,问题解决。

5、如果更改jar后,要

ps -aux | grep java找到进程,然后kill杀死进程后,再nohup java -jar xxx.jar  >指定路径文件.txt  2>&1 &
参考技术A linux基础操作:主要介绍了服务管理,查询,启用,停止和开机自启设置

1.service [服务管理,启用,停用,查询状态,仅临时生效,重启后恢复原来状态]

例子1:service sshd stop 表示停止sshd服务。例子2:service sshd start 表示启动sshd服务。例子3:service sshd restart 表示重启sshd服务。例子4:service sshd reload 表示重新加载sshd服务的配置信息并立即生效[即刷新配置信息]。例子5:service sshd status 表示查询sshd的工作状态。
2.systemctl [服务管理,启用,停用,查询状态,仅适用于CentOS 7以上版本,仅临时生效,重启后恢复原来状态]

例子1:systemctl stop sshd 表示停止sshd服务例子2:systemctl start sshd 表示启用sshd服务例子3:systemctl restart 表示重启sshd服务。例子4:systemctl reload sshd 表示重载sshd服务的配置信息。例子5:systemctl status sshd 表示查询sshd服务工作状态。
3.查看服务方式

例子1:setup -> 系统服务 表示运行图形配置工具查看服务,可以查看服务,网络设置和其他设置等等。例子2:ls -l /etc/init.d/ 表示使用ls -l 查看目录里的所有服务名。
4.chkconfig [指定运行级别状态下的服务运行状态,如:自启,停止等。]

例子1:chkconfig --list 表示查看所有服务在各个运行级别下的状态。例子2:chkconfig --list | grep sshd 或 chkconfig sshd --list 表示查看sshd服务在各个运行级别下的状态。例子3:chkconfig --level 5 sshd on 表示指定sshd服务在运行级别5图形模式的状态下开机启动服务。例子4:chkconfig --level 2 sshd off 表示指定sshd服务在运行级别2多用户无网络模式状态下开机停止服务。例子5:chkconfig iptables off 表示指定iptables防火墙在所有的运行级别下都是关闭状态。例子6:chkconfig iptables on 表示指定iptables防火墙在所有的运行级别下都是开启状态。

Linux 使用systemd service 实现开机自启动

目标

使用systemd实现开机启动某项服务

参考
How To Use Systemctl to Manage Systemd Services and Units | DigitalOcean

systemctl常用命令

启动或停止服务

systemctl start demo-start.service
systemctl stop demo-start.service

开启/关闭 开机自启动服务

systemctl enable demo-start.service
systemctl disable demo-start.service

 重新加载服务

systemctl daemon-reload

 查看服务状态

systemctl status demo-start.service

查看现有的service

ll /usr/lib/systemd/system/***.service
cd /etc/systemd/system/multi-user.target.wants/

注意: 使用systemctl 开机自启动的服务不能包含相对路径。 如java web项目的配置文件, log 文件等, 都需要指定绝对路径, 不能使用相对路径

例子:使用Linux系统开机自启动/home/demo目录下的服务 demo-web.war

/home/demo 目录下有如下文件

  • demo-web.war
  • application.properties
  • start.sh
  • demo-start.services

start.sh

#! /bin/sh
nohup java -jar -Dspring.config.location=/home/demo/application.properties /home/demo/demo-web.war & echo $! > /home/demo/piddemo.file

demo-start.service

[Unit]
Description=start demo web

[Service]
Type=forking
ExecStart=/bin/bash /home/demo/start.sh

[Install]
WantedBy=multi-user.target

使用systemd实现开机自启动demo-web.war

sudo cp /home/demo/demo-start.service /etc/systemd/system
sudo systemctl enable demo-start.service
sudo systemctl daemon-reload

测试:重启Linux服务器,查看demo-web.war服务是否启动

以上是关于linux的.service服务开机自启动后为啥会自动停止的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7 将QT应用作为开机自启动(Linux系统)

Linux 使用systemd service 实现开机自启动

Linux 使用systemd service 实现开机自启动

Linux 使用systemd service 实现开机自启动

Linux:开机自启动配置(将应用发布为服务)

Fedora设置开机自启动脚本rc-local.service服务