Linux Systemd服务创建与配置

server/2024/11/14 6:28:41/
在/etc/systemd/system/目录创建并配置服务:
  1. 创建一个新的systemd服务单元文件,以描述你的服务配置。

    sudo vi /etc/systemd/system/my-service.service
  2. 在打开的文件中,添加以下内容来定义你的服务配置:

    [Unit]
    Description=mqnamesrv
    After=network.target
    ​
    [Service]
    ExecStart=/app/rocketmq/rocketmq-all-4.7.1-bin-release/bin/mqnamesrv
    WorkingDirectory=/app/rocketmq/rocketmq-all-4.7.1-bin-release/
    User=username
    Group=groupname
    Restart=always
    ​
    [Install]
    WantedBy=multi-user.target
    • Description:服务的描述信息。

    • After:指定服务应该在哪些依赖项之后启动。

    • ExecStart:指定要运行的后台命令的路径。

    • WorkingDirectory:指定命令的工作目录。

    • User:指定服务运行的用户。

    • Group:指定服务运行的用户组。

    • Restart:指定服务在意外停止后是否自动重启。

    • WantedBy:指定服务应该被启用的目标。

    请替换上述内容中的路径、用户名和组名为你实际的配置。

  3. 保存并关闭文件。

  4. 重新加载systemd配置,使新的服务生效:

    sudo systemctl daemon-reload
  5. 启动服务:

    sudo systemctl start my-service

    可以使用 sudo systemctl status my-service 命令来检查服务的状态和日志输出,确保它正常运行。

  6. 如果你希望服务在系统启动时自动启动,执行以下命令:

    sudo systemctl enable my-service

    这样服务将会在系统启动时自动启动。

    现在,你的后台运行命令已经配置为自启动服务。你可以使用systemd命令来管理和控制该服务,例如启动、停止、重启和查看状态等。

在其它目录创建服务Unit文件并配置

也可以在其它目录创建Unit服务配置文件,比如在/opt/

创建文件ka.service,那么文件完整路径即是/opt/ka.service

然后在/etc/systemd/system/目录中,使用ln -s ka.service /opt/ka.service创建链接,然后enable ka.service即开机自启动

cd /etc/systemd/system/
sudo ln -s ka.service /opt/ka.service
sudo systemctl enable ka.service

后来想到,试一下不在/etc/systemd/system/做符号链接,直接在/opt/创建ka.service文件后,直接systemctl enable ka.service:

root@tin:~# cd /opt/
root@tin:/opt# systemctl enable ka.service
Failed to enable unit: Unit file ka.service does not exist.
root@tin:/opt# systemctl enable /opt/ka.service
Created symlink /etc/systemd/system/ka.service → /opt/ka.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ka.service → /opt/ka.service.
​

看到,这时使用systemctl enable ka.service 是不行的,会说不存在,即使当前目录下有这个文件,估计没有加目录前缀,系统默认就是去/etc/systemd/system目录里去找的。加上绝对路径,再进行enable,结果可以了,而且这种方式,系统自动给你在/etc/systemd/system/目录创建了符号链接,倒是省去了我们自己创建符号链接的操作。

查看服务是否已经enable(开机自启):

systemctl is-enabled your-service-name

timer定义小贴士

定时器timer的定义中,如果没有显示的定义 unit 字段,默认是和 timer 同名 service 单元。

查看已经生效的timer
systemctl list-timers
timer生效

定义好timer,并enable timer(systemctl enable ka.timer)后,如果机器没有重启,则需要执行以下命令让timer生效(刷新,并至少使用start执行一次,才会间隔一段时间去执行):

systemctl daemon-reload
systemctl start ka.timer

如果机器要重启,或者是定义在容器Dockerfile,反正就是后面会再开机,则直接

systemctl enable ka.timer

执行过enable即可,无须再执行start。


http://www.ppmy.cn/server/25540.html

相关文章

linux常用非基础命令/操作

本篇用于总结蒟蒻博主在使用linux系统的过程中会经常用到但老实记不住的一些非基础命令和操作,方便遗忘时查阅 一,关闭指定端口的进程以释放端口 每个端口都有一个守护进程,kill掉这个守护进程就可以释放端口 ①使用命令【netstat -anp | gre…

【数据结构与算法】:手搓顺序表(Python篇)

文章目录 一、顺序表的概念二、顺序表的实现1. 顺序表的创建1.1 扩容1.2 整体建立顺序表 2. 顺序表的基本运算算法2.1 顺序表的添加(尾插)2.2 指定位置插入2.3 指定位置删除2.4 顺序表的查找2.5 顺序表元素的索引访问2.6 顺序表元素的修改2.7 顺序表长度…

云安全和传统安全之间有什么区别?

云安全也可以被称为云计算安全,是用来保护云中的应用、基础设施以及数据的任意攻击、流程或策略的都被称为云安全,云安全适用于私有云、公有云和混合云等多种云环境,能够在企业、驾驭、金融和政务等多种场景中快速发展。 那云安全和传统安全两…

黄金成为对抗通胀的潮流,分享合适黄金的商业模式——消费免单

黄金成为对抗通胀的潮流,分享合适黄金的商业模式——消费免单 文丨微三云营销总监胡佳东,点击上方“关注”,为你分享市场商业模式电商干货。 - 引言:全国市场日益饱和市场正式进入“存量竞争时代”,在信息透明透明和…

html表格导出为word文档,导出的部分表格内无法填写文字

导出技术实现:fileSaver.jshtml-docx-js 1.npm安装 npm install --save html-docx-js npm install --save file-saver 2.页面引入 import htmlDocx from html-docx-js/dist/html-docx; import saveAs from file-saver;components: {htmlDocx,saverFile, }, 3.页…

UE_反射系统(虚幻编译系统)

UE_反射系统(虚幻编译系统) UCLASS、UFUNCTION、UPROPERTY UCLASS 宏的有效关键字 https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/GameplayArchitecture/Classes/Specifiers/ When declaring classes, Class Specifiers can be added to the declar…

【全开源】餐饮点餐系统小程序源码独立部署/上线/维护/更新_博纳软云

餐饮点餐系统小程序源码 基于ThinkPHPFastAdminUniApp开发的餐饮点餐系统,主要应用于餐饮,例如早餐、面馆、快餐、零食小吃等快捷扫码点餐需求,标准版本仅支持先付款后就餐模式,高级版本支持先付后就餐和先就餐后付费两种模式 餐…

Java 网络编程之TCP(三):基于NIO实现服务端,BIO实现客户端

前面的文章,我们讲述了BIO的概念,以及编程模型,由于BIO中服务器端的一些阻塞的点,导致服务端对于每一个客户端连接,都要开辟一个线程来处理,导致资源浪费,效率低。 为此,Linux 内核…