【Linux】使用systemd设置开机自启动命令

这篇具有很好参考价值的文章主要介绍了【Linux】使用systemd设置开机自启动命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 使用使用systemd实现开机自动运行命令

systemd是Linux系统中现代化的初始化系统,可以使用它来实现开机自动运行命令。在systemd中,可以通过创建一个service文件,把要执行的命令放在其中,然后将其添加到systemd的自启动项中。

具体操作步骤如下:

1.1 新建一个.service文件

首先在终端中使用sudo权限创建一个.service文件,用于存储service配置:

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

1.2 编写.service文件

在打开的文件中添加以下内容(此处演示的开机自启命令是需要sudo权限的),注意将其中的ExecStart替换为需要开机自启动的具体命令,ExecStart后面加上sudo。

[Unit]
Description=My Service
After=network.target

[Service]
Type=simple
ExecStart=sudo /path/to/my/command
User=root

[Install]
WantedBy=multi-user.target

【Linux】使用systemd设置开机自启动命令

1.2.1 [Unit]

[Unit]是systemd服务文件的一个部分,用于定义服务的基本信息。

  • Description字段包含了一个简短的描述,用于描述服务的名称,方便用户在查找时快速了解服务的作用。

  • After=network.target表示此服务会在网络服务启动后启动。

    • network.target是指网络目标单元,是Systemd中预定义的一个特殊单元,用于表示网络服务的启动状态。几乎所有的网络服务,例如DHCP、DNS解析等,在启动时都依赖于网络服务的可用性。因此,将After=network.target添加到服务的unit文件中,可以确保该服务在网络服务就绪后再启动,从而避免出现启动时的依赖性错误。

1.2.2 [Service]

[Service]是systemd服务文件中的另一个部分,用于定义服务的具体行为。

  • Type字段是服务运行时的类型,simple表示它是一个后台进程,通常用于只有一个进程的服务。
  • ExecStart字段包含了要运行的命令,多个命令可以用换行符(\n)隔开。
  • User字段指定了以哪个用户的身份运行这个服务,这里选择root用户。

1.2.3 [Install]

[Install]定义了systemd服务的安装信息。

  • WantedBy字段指定了服务将要执行的“target”(一种操作系统运行级别),这里指定的“multi-user.target”是Linux系统默认的、包含多个用户的运行级别,相当于传统的“init 3”运行级别。这意味着服务将在系统启动时自动运行。

1.3 启动服务并设置自启动

保存并退出上述.service文件,下面的命令可以启动服务并将其添加到系统自启动项中:

sudo systemctl start myservice
sudo systemctl enable myservice

执行完该命令后,可以使用systemctl命令来查看该服务的状态:

sudo systemctl status myservice.service

启动服务后,它将在系统启动时自动启动。也可以在任何时候使用以下命令停止服务并从自启动项中删除:

sudo systemctl stop myservice
sudo systemctl disable myservice

2 编写Systemd服务文件的要点

2.1 Systemd服务文件的位置

Systemd服务文件通常存放在/etc/systemd/system目录下。该目录包含了各种类型的服务文件,如系统服务、用户服务、网络等等。

2.2 Systemd服务文件的格式

Systemd服务文件通常是以.service结尾的文本文件。服务文件中的各项设置使用键值对的形式指定,每一行都是以key=value的形式组成。

2.3 Systemd服务文件的基本结构

Systemd服务文件通常包含了以下配置项:

  • [Unit]:服务的全局信息和依赖性声明,如服务名称、描述等。

  • [Service]:指定服务的具体配置,如服务执行的命令、工作目录等。

  • [Install]:指定服务的安装方式,如服务的启动级别等。

2.3.1 [Unit]字段的配置

  • Description:对服务的简短描述。

  • Before:定义服务在其他服务之前启动。

  • After:定义服务在其他服务之后启动。

  • Requires:定义服务启动需要哪些其他服务已启动,否则无法启动。

  • PartOf:定义该服务是其他服务的一部分,如果其他服务停止,该服务也会停止。

  • Wants:定义服务启动时可同时启动哪些其他服务。

  • Condition...:定义服务启动的条件,如ConditionPathExists表示某个路径存在时才启动该服务。

2.3.2 [Service]字段的配置

  • Type:服务类型,可以是simple、forking、ondemand、notify等。

  • ExecStart:服务启动命令,可以是单个命令、脚本文件、或者多个命令组成的脚本。

  • ExecStop:停止服务的命令。

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

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

  • PrivateTmp:将服务的/tmp目录挂载到私有的命名空间中,以增强安全性。

  • Restart:定义服务异常退出时如何重启。

  • WorkingDirectory:定义服务工作目录。

  • Environment:定义服务的环境变量等。

  • ProtectSystem:防止服务对系统文件进行修改。

  • NoNewPrivileges: 防止服务通过setuid或setgid等提升权限。

2.3.3 [Install]字段的配置

  • WantedBy:定义在哪些系统运行级别下启用此服务。

  • RequiredBy:启动其他系统服务时必需启动此服务。

2.4 示例 .service 文件

[Unit]
Description=MyService
After=network.target
  
[Service]
Type=simple
ExecStart=/usr/bin/myservice
WorkingDirectory=/var/myservice
User=myservice
Group=myservice
Restart=always
RestartSec=30
StartLimitInterval=400
StartLimitBurst=3
  
[Install]
WantedBy=multi-user.target

这个示例中定义了一个名为"MyService"的服务,服务启动时执行/usr/bin/myservice命令,执行工作目录为/var/myservice,运行用户为myservice。如果服务异常退出,则每30秒尝试重新启动,最多尝试3次。最后,服务将在多用户运行级别下启用。文章来源地址https://www.toymoban.com/news/detail-475116.html

到了这里,关于【Linux】使用systemd设置开机自启动命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Amazon Linux上使用ec2-user来设置开机自启动的shell脚本

    要在Amazon Linux上使用ec2-user来设置开机自启动的shell脚本,可以按照以下步骤操作:   1. 确保您拥有要设置自启动的shell脚本。假设脚本的路径是`/home/ec2-user/myscript.sh`。   2. 使用以下命令打开`/etc/rc.d/rc.local`文件:    ```shell    sudo nano /etc/rc.d/rc.local    ```   3. 在文件末尾添

    2024年02月15日
    浏览(48)
  • linux 设置开机启动

    解决问题思路 1.首先写一个可执行脚本 2.将该脚本注册成服务 3.使用system enable命令让他开机自启 内容如下: 将写好的服务配置复制到system路径下 添加引用 测试一下可不可以 systemctl start 自己气的服务名.service systemctl enable 自己起的服务名 我是因为改这个没权限root都不行,

    2024年02月11日
    浏览(25)
  • 服务器设置tomcat开机自启动(cmd命令行语句)

    1 找到tomcat安装目录,进入bin/文件夹下面,在此打开windows 命令行窗口。 2 输入 将tomcat注册成为windows服务,其中tomcatXXX为服务名。 3查看刚刚注册的服务 “我的电脑”-》右键管理 发现刚刚的服务是手动的,并不是自动的,而且无法通过界面修改启动方式。 4 命令行修改启动

    2024年02月13日
    浏览(39)
  • Nginx Linux设置开机自启动

    使用如下命令 vi /lib/systemd/system/nginx.service 创建并编辑文件 将以下代码黏贴至此文件中 重新加载服务的配置文件 systemctl daemon-reload 设置开机启动 systemctl enable nginx.service 启动nginx服务 systemctl start nginx 查看服务状态 systemctl status nginx 7. 完成

    2024年02月16日
    浏览(29)
  • Linux elasticsearch设置为开机自启动服务

    说明: (1)“su es”为切换用户名,“es”为系统新建的用户名 (2)“/usr/local/elasticsearch-6.2.3”为el安装目录 具体el安装流程:请点击这里

    2024年02月13日
    浏览(23)
  • linux开机启动输入法且设置英文状态

    debian,gnome桌面。fcitx5框架,四叶草输入法。 首先把fcitx5加到开机启动项,方法很多,gnome的插件“优化”里面可以添加开机启动项。 这样开机就能启动输入法,而不用再手动输入shell命令fcitx5了。 但是启动时是中文的状态,对于习惯敲命令的人来说不够习惯,还要开个窗口

    2024年02月16日
    浏览(32)
  • linux下通过systemd配置开机自启

    1.创建对应服务的启动脚本,放在/etc/systemd/system,名字为服务名.service 2.赋予权限 chmod 777 自启脚本绝对路径 3.重新加载systemd配置 systemctl daemon-reload 4.使用以下命令启用Kafka服务,使其在系统启动时自动运行: systemctl enable kafka 5.使用以下命令启动Kafka服务: systemctl start kafka

    2024年02月10日
    浏览(31)
  • 14 | linux设置开机自启动的三种方法

    vim /etc/rc.local reboot下服务器,看该服务,还在不在 注意:在/etc/rc.d/init.d下是shell脚本或者可执行二进制文件 可执行权限 chmod +x filename 重启服务reboot,查看该服务是否还在 制作service服务并设置开机自启动 以nginx为例 安装路径:/usr/local/nginx 在/etc/systemd/system/路径下创建nginx.s

    2024年02月16日
    浏览(30)
  • linux centos中把jar包设置为开机自启动

    创建service文件 CentOS系统中,  /usr/lib/systemd/system  和  /etc/systemd/system  目录均可用于存放Systemd服务单元文件,但它们的用途稍有不同: /usr/lib/systemd/system  目录: 存放的是系统安装的软件包提供的服务单元文件。 该目录下的服务单元文件属于系统级别的服务,由软件包的

    2024年02月15日
    浏览(44)
  • 如何将Linux上的cpolar内网穿透设置成 - > 开机自启动

    前言 我们将cpolar安装到了Ubuntu系统上,并通过web-UI界面对cpolar的功能有了初步了解。当然cpolar除了web-UI界面操作,也能通过Ubuntu系统的命令行进行操作。不过这种操作方式相对抽象,因此对电脑操作有一定基础要求,同时因为没有输入cpolar账号,因此需要输入相应账号的to

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包