【Ubantu 18.04】配置sh脚本开机启动

2023-09-19 16:50:26

一、services服务脚本编写

1、进入服务管理目录,创建service文件
sudo nano /etc/systemd/system/ads.service
例如文件名为:ads.service,文件内容如下:
[Unit]
Description=Ads Service
After=network.target


[Service]
Type=simple
ExecStart=/home/jp/ads/EC-plat.sh
StandardOutput=file:/home/jp/ads/log/output.log
StandardError=file:/home/jp/ads/error/log/output.log
WorkingDirectory=/home/jp/ads
User=jp
Environment=APP_HOME=/home/jp/ads
Environment=CLASSPATH=$APP_HOME:$CLASSPATH
Environment=JAVA_HOME=/home/jp/ads/jdk17


[Install]
WantedBy=multi-user.target

以下是文件各部分的解释:

  1. [Unit] 部分:

    • Description=ads service:描述了服务的简要说明。
    • After=network.target:指定了服务应该在 network.target 启动之后启动,确保网络可用。
  2. [Service] 部分:

    • Type=simple:指定了服务的类型为 simple,表示这是一个基本的、非守护进程式的服务。
    • ExecStart=/home/jp/ads/EC-plat服务启动.sh:指定了服务启动时要执行的脚本的路径,这是你的Java服务脚本。
    • Restart=always:指定了服务在终止后应该自动重新启动,以确保服务持续运行。
    • User=jp:指定了服务应该以 jp 用户的身份运行。
  3. [Install] 部分:

    • WantedBy=multi-user.target:指定了服务应该由 multi-user.target 启动,这是多用户模式的目标。
2、保存并关闭文件。
3、重新加载systemd管理器配置:
sudo systemctl daemon-reload
4、启用自启动服务:
sudo systemctl enable ads
注意:使用你在第 ads.service文件 的服务名称。
5、启动服务:
sudo systemctl start ads
6、Java程序启动脚本将在系统启动时自动运行。你可以使用以下命令来检查服务状态:
sudo systemctl status ads
7、确保服务正在运行,并且没有错误。如果需要停止服务,可以使用以下命令:
sudo systemctl stop ads
8、如果需要重新启动服务,可以使用以下命令:
sudo systemctl restart ads

二、服务启动失败解决方案:

        1、脚本路径是否正确:确保 /home/jp/ads/EC-plat服务启动.sh路径指向有效的脚本文件。你可以使用 ls命令检查文件是否存在,以及使用 chmod命令确保脚本有执行权限。
        2、脚本中的命令是否正确:打开脚本文件,并确保其中的命令和路径都正确。检查是否有任何可能导致问题的错误。
        3、依赖项是否满足:如果脚本依赖于其他文件或程序,请确保这些依赖项已经安装并可用。
        4、查看错误日志:如果脚本在执行过程中产生错误信息,可以查看相关的错误日志来获取更多详细信息。你可以使用 journalctl命令查看系统日志,例如:
journalctl -u ads.service
        这将列出与 ads.service相关的系统日志,包括服务启动过程中的任何错误信息。
一旦你找到了问题的根本原因并解决了它,你就可以尝试重新启动该服务:
sudo systemctl restart ads.service

三、服务日志清理

        journalctl -u ads.service 命令用于查看特定服务的日志。这些日志通常会保留在系统中,以便你随时查看它们,以便故障排除和问题解决。日志不会自动清理,因此它们会随着时间积累。
你可以选择性地清理日志,以释放磁盘空间或保持日志文件的大小在可管理的范围内。清理日志的方法取决于你的需求和系统设置。
以下是一些清理日志的方法:
1、清理指定服务的所有日志(保持日志文件大小1M以内)
sudo journalctl -u ads --vacuum-files=1M
2、按时间清理
   你可以使用 journalctl--vacuum-time选项来清理特定时间范围内的日志。例如,要清理一周前的日志,可以运行:
sudo journalctl --vacuum-time=7d
2、按大小清理:你可以使用 --vacuum-size选项来指定要保留的日志文件的最大大小。例如,要保持日志文件总大小不超过100MB,可以运行:
sudo journalctl --vacuum-size=100M
3、保持特定数量的日志文件:你可以使用 --vacuum-files选项来指定要保留的日志文件的最大数量。例如,要保留最近的10个日志文件,可以运行:
sudo journalctl --vacuum-files=10
        请根据你的需求选择合适的清理策略。请注意,清理日志可能会导致你失去一些旧的日志记录,因此在清理之前确保你不再需要它们来进行故障排除或监控。
更多推荐

Spring高手之路10——解锁Spring组件扫描的新视角

文章目录1.组件扫描路径2.按注解过滤组件(包含)3.按注解过滤组件(排除)4.通过正则表达式过滤组件5.Assignable类型过滤组件6.自定义组件过滤器7.组件扫描的其他特性7.1组合使用组件扫描8.组件扫描的组件名称生成8.1Spring是如何生成默认bean名称的(源码分析)8.2生成默认bean名称的特殊情

一文巩固Spring MVC的Bean加载机制

目录一、什么是SpringMVC的Bean二、SpringMVC的Bean加载机制三、SpringMVC如何动态装载Bean一、什么是SpringMVC的Bean在SpringMVC中,Bean指的是在SpringIoC容器中创建和管理的对象。这些对象可以是普通的Java类,也可以是服务层组件、数据访问对象(DAO)或

手动实现 Spring 底层机制【初始化 IOC容器+依赖注入+BeanPostProcessor 机制+AOP】之实现任务阶段 5- bean 后置处理器

😀前言手动实现Spring底层机制【初始化IOC容器+依赖注入+BeanPostProcessor机制+AOP】的第五篇具体实现了任务阶段5-bean后置处理器🏠个人主页:尘觉主页🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉在csdn获奖荣誉:🏆csdn城市之星2名⁣⁣⁣

kafka rabbitmq 详细对比

Kafka&rabbitmqkafkaProducer:消息生产者,将消息push到Kafka集群中的Broker。Consumer:消息消费者,从Kafka集群中pull消息,消费消息。ConsumerGroup:组团消费,每个Consumer都属于一个ConsumerGroup。消费者组在逻辑上是同一个订阅者。消费

JavaScript学习记录 | DOM事件流 事件冒泡-事件捕获-事件委托

目录DOM事件流常见面试题事件冒泡与事件捕获事件冒泡使用场景事件捕获使用场景事件冒泡和事件捕获区别事件委托-利用事件冒泡机制事件委托应用场景支持事件委托的事件事件委托的优缺点DOM事件流DOM事件流的三个阶段:捕获阶段->目标阶段->冒泡阶段常见面试题事件冒泡和委托是什么?有什么使用场景?事件委托的优点和缺点JS事件绑

线性代数基础-矩阵

八、矩阵的基础概念1.矩阵我们忘掉之前行列式的一切,列一种全新的数表,虽然长得很像,但是大不相同,首先一个区别就是矩阵不能展开成一个值,这里不讨论矩阵的空间意义{a11x1+a12x2+a13x3+...+a1nxn=b1a21x1+a22x2+a23x3+...+a2nxn=b2...an1x1+an2x2+an3x

SQL sever中相关查询

目录一、简单查询二、条件查询三、别名查询四、分组查询五、排序查询六、去重查询七、分页查询八、模糊查询九、表连接查询十、子查询十一、嵌套查询一、简单查询简单查询是最基本的查询类型,用于从数据库中选择特定列或所有列的数据。1.选择所有列的数据:SELECT*FROM表名;将返回指定表中的所有行和列。2.选择特定列的数据:S

酌情参考——chatGPT给的一些语义框架的学术思路,语义和图谱结合似乎是个不错的方向

语义和图谱结合似乎是个不错的方向我在分析教师讲课的文本,以知识元和语义框架建模的话怎么分析合适ChatGPT分析教师讲课的文本并建立知识元和语义框架的模型可以帮助你理解教师的教学内容以及课程结构。以下是一些步骤和方法,可帮助你进行这种分析:数据收集:收集教师讲课的文本或音频记录,这些记录可以是课堂讲座、教材、学生笔记或

什么是IoT数字孪生?

数字孪生是资产或系统的实时虚拟模型,它使用来自连接的物联网传感器的数据来创建数字表示。数字孪生允许您从任何地方实时监控设备、资产或流程。数字孪生用于多种目的,例如分析性能、监控问题或在实施之前运行测试。从物联网数字孪生中获得的见解使用户能够快速做出反应,以提高运营效率、生产质量、客户满意度等。基于NSDT场景编辑器搭建

docker总结

Docker实用篇0.学习目标1.初识Docker1.1.什么是Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题1.1.1.应用部署的环境问题大型项目组件较多

CLR via C#(三)垃圾回收

一、资源生命周期每个程序运行都需要各种资源,如文件、内存缓冲区、数据库等。要使用这些资源,就必须为代表资源的类型分配内存。访问一个资源所需的步骤如下:调用IL指令newobj,为代表资源的类型分配内存(在C#中一般用new操作符完成)初始化内存,设置资源的初始状态并使资源可用访问类型成员来使用资源摧毁资源状态以进行清理

热文推荐