linux下使用systemctl设置开机自动运行程序

ops/2024/10/18 0:20:04/

本文介绍在Linux下,使用systemctl设置开机自动运行程序,实现创建一个systemd服务单元文件,并启用该服务的方法。

1、创建.service文件

/etc/systemd/system/目录下创建一个以.service结尾的文件,例如myapp.service:

sudo touch /etc/systemd/system/myapp.service

2、编写服务

sudo vim /etc/systemd/system/myapp.service

写入以下内容:

[Unit]
Description=My custom startup program
After=network.target[Service]
Type=simple
ExecStart=/path/to/your/program[Install]
WantedBy=multi-user.target

其中,将/path/to/your/program替换为你想要运行的程序的完整路径。

3、重新加载systemd管理器配置

sudo systemctl daemon-reload

4、启用服务

sudo systemctl enable myapp.service

至此,重启后。设置的程序就会自动运行了。

5、配置程序日志存储方式

将.service 文件的StandardOutput 和 StandardError 设置为 journal 或 inherit(如果系统支持)。

[Service]Type=simpleExecStart=/path/to/your/programStandardOutput=journalStandardError=journal

直接从控制台获取输出,可以使用 journalctl 命令来查看服务的日志:

journalctl -u myapp.service

6、关于systemctl命令

systemctl enable myapp.service  #开启开机自启动
systemctl disable myapp.service #停止开机自启动 
systemctl start myapp.service   #启动 myapp 服务 
systemctl stop myapp.service    #停止 myapp服务 
systemctl restart myapp.service #重启 myapp服务 
systemctl status myapp.service  #查看服务当前状态
systemctl list-units --type=service  #查看所有已启动的服务 
systemctl list-unit-files |grep myapp #查看是否正确启动
sudo systemctl daemon-reload #刷新配置system目录

7、.service文件格式简介

  • [Unit]

    • Description:对该服务的描述;
    • Documention:说明文档;
    • Before:指定本服务需要在哪些服务之前启动;
    • After:指定本服务在哪些服务之后启动;
    • Wants:弱依赖于某个service,即使被依赖服务启动失败或停止,本服务仍然运行;
    • Requires:强依赖于某个service,如果被依赖服务启动失败或停止,本服务也会停止。
  • [Service]

    • EnvironmentFile:服务的参数文件,形成$OPTIONS;
    • ExecStart: 服务启动命令
    • ExecReload: 服务重启命令
    • ExecStop: 服务停止命令
    • Type:服务启动类型。默认simple表示ExecStart为主进程,notify类似于simple,启动结束后会发出通知信号。另外还有forking,oneshot,dbus,idle等类型;
    • KillMode:服务停止类型,默认control-group停止时杀死所有子进程,process只杀主进程,none只停止服务,不杀进程;
    • Restart:服务重启类型,默认no不重启,on-success正常退出时重启,on-failure非正常退出时重启,还有always,on-abnormal,on-abort等;
    • RestartSec:间隔多久重启服务。
  • [Install]

    • WantedBy:服务所在的服务组。

8、参考

使用systemctl start xxx启动自己的程序|开机启动|守护进程。


http://www.ppmy.cn/ops/126330.html

相关文章

文本生成视频技术:艺术与科学的交汇点

在人工智能技术的飞速发展下,文本生成视频(Text-to-Video)技术已经成为现实。这项技术能够根据文本描述生成相应的视频内容,极大地拓展了内容创作的边界。本文将从三个主要方面对文本生成视频技术进行深入探讨:技术能达…

请确保已在git上配置你的user.name和user.email

问题:使用vscode在远程服务器上暂存修改报错: 原因:未在远程服务器上配置该项目对应的git的username和useremail 解决方法: 在vscode中新建一个终端 命名: git config --global user.email "youexample.com&qu…

python爬虫实战案例——从移动端接口抓取微博评论,采用cookie登陆,数据存入excel表格,超详细(15)

文章目录 1、任务目标2、网页分析3、代码编写3.1 代码分析3.2 完整代码1、任务目标 1、目标网站:微博文章(https://m.weibo.cn/detail/4813628149072458),这是微博某一篇博文,用于本文测试 2、要求:爬取该博文下,所有一级评论和二级评论,以及每条评论的作者,最后保存至E…

Spring AI Java程序员的AI之Spring AI(一)

SpringAI 基础使用 前言Spring AIChatClientImageClientOpenAiAudioTranscriptionClientEmbeddingClient 总结 前言 Spring AI,听着名字就感觉很好使用,快速上手,虽然功能没有太完善,但是社区活跃度很高,可以看看源码…

PG 17 增量备份功能介绍

背景 PG 17 新增了增量备份功能,可以通过 pg_basebackup --incrementalPATH_TO_MANIFEST 命令进行增量备份。 官方文档:https://www.postgresql.org/docs/current/app-pgbasebackup.html 在先前版本,其实我们也可以利用 WAL 进行增量备份&…

mysql-数据库的操作

目录 认识数据库的基本操作 1、创建数据库 (1)校验集、编码集 (2)指定字符集和校验集创建数据库 2、展示所建立的数据库: 3、查看自己当前数据库: 4、修改数据库 5、删除数据库 6、库的备份与恢复…

java HashMap源码剖析

HashMap 是 Java 集合框架中的一个重要类,它基于哈希表实现,提供了快速的插入、删除和查找操作。 以下是一些关键点: 序列化:HashMap 类实现了 Serializable 接口,这意味着它可以被序列化和反序列化。 初始容量和负载…

日志分析是什么?如何进行日志分析?

日志分析是对诸如计算机系统、网络设备、应用程序等产生的日志文件进行收集、处理、分析和解读的一个过程。这些日志文件记录了系统和应用在运行过程中的各种事件、状态变化、错误信息等详细数据。 通过对这些日志数据的分析,可以深入了解系统的运行情况、发现潜在…