Linux创建系统服务于后台运行

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

前言

众所周知,身为一名程序员,我们往往会写非常非常多的程序。而这些程序中有一部分往往会有一部分需要运行非常长的时间才能结束或者需要持续不断地运行。但是,如果按照正常情况使用shell新建会话,连接linux系统,并运行程序的话。一旦我们关闭会话,程序也会相应地停止。虽然可以用&或者nohup命令让程序在后台运行,但是这两种命令局限性较大。这种时候,就需要一种方法能够让我们能够在后台运行程序并能够随时查看其日志和运行状态等。那就是将程序搞成linux的服务。

Linux系统下时时刻刻都有许多服务在运行,保障各类功能的正常运行,比如nginx mysql 等等。有了这些服务,就能随时随刻使用systemctl命令查看它们的相关状态。但是,but,这些服务往往是在我们安装相应软件的时候自动安装的。那么,要如何将我们自己的程序封装成linux的服务呢?

操作步骤

编写service配置文件

在任一目录下编写service配置文件service_name.service

# service_name.service
[Unit]
Description=<service description>

[Service]
ExecStart=<cmd_to_start_program>

[Install] 
WantedBy=multi-user.target
复制代码

上述配置为制作一个service服务的最简配置文件,接下来对一些参数进行说明

  • Unit.Description:对服务的说明,任意字符串即可
  • Service.ExecStart:服务启动时要执行的命令
  • Install.WantedBy:一般情况下配置为multi-user.target即可

注意,ExecStart参数中,若有涉及到程序的执行,需给出程序的绝对路径

将配置文件移动至service文件专用目录下

mv service_name.service /lib/systemd/system

启动服务

systemctl start service_name.service

命令执行成功后,即可使用systemctl status service_name.service命令查看服务是否启动成功

其他一些命令

开机自启动

systemctl enable service_name.service

停止服务

systemctl stop service_name.service

重启服务

systemctl restart service_name.service

查看服务状态

systemctl status service_name.service

结语

本文只是介绍了将程序封装成linux服务的最简单的方法,配置文件只给出了最简单的参数。然而根据service配置文件的不同,还能将服务进行各种个性化配置,如指定服务停止和重启的命令,指定日志的输出方式等等。有兴趣的同学可以自行去查阅更多关于service文件的配置参数。

猜你喜欢

转载自juejin.im/post/7015145023075254279