登录 立即注册

首页 > 绿虎论坛 > 电脑 > Linux/Unix (发帖)

标题: [精]Linux创建systemd启动项实现开机自启动

作者: @Ta

时间: 2021-11-17发布,2021-11-17修改

点击: 20781

以下所有操作都需要root权限,请使用sudo -i

创建如下文件:

/etc/systemd/system/myservice.service

内容:

[Unit]
Description=my service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/path-to/myservice.sh

[Install]
WantedBy=multi-user.target

/path-to/myservice.sh是要运行的程序,它需要一直保持运行,不会退出。如果/path-to/myservice.sh退出,systemd会以1秒一次的频率不断重启/path-to/myservice.sh

如果你的/path-to/myservice.sh在运行完成后会退出,不需要自动重启,请把Restart=always改成Restart=no


After=network.target表示联网后才会启动这个服务。如果你需要联网前启动,可以删掉。


然后启动:

systemctl start myservice

设为开机自启动:

systemctl enable myservice

查看运行状态:

systemctl status myservice

查看日志:

journalctl -u myservice

修改myservice.service后,刷新systemd守护进程使修改生效:

systemctl daemon-reload

停止服务:

systemctl stop myservice

取消开机自启动:

systemctl disable myservice

删除服务:

rm /etc/systemd/system/myservice.service

[隐藏样式|查看源码]


『回复列表(13|隐藏机器人聊天)』

1.

WorkingDirectory 也比较重要
红米K30 Pro(变焦版)

(/@Ta/2021-11-17 11:49//)

2.

@Curtion,我的思路是ExecStart=/path-to/myservice.sh指向一个脚本,你可以自己在脚本里cd到正确的WorkingDirectory,加上正确的参数启动真正的程序。
使用exec ./xxx启动程序没有额外开销,不会残留bash进程。

(/@Ta/2021-11-17 12:20//)

3.

老虎竟然在更新教程贴
~~~

(/@Ta/2021-11-17 12:20//)

4. 收藏了
(/@Ta/2021-11-19 15:08//)

6.

@加勒比海带,期待老虎解答!
小米8(白)

(/@Ta/2021-11-19 22:29//)

7. 同问
一直都是使用 sudo su -
另外三个我也不知道。
(/@Ta/2021-11-19 23:30//)

8.

@加勒比海带@艾木友尔尔巴@希望自己长胖胖

  1. 输入谁的密码:
    • su输入的是root用户的密码,sudo输入的是当前用户的密码。
    • 如果当前用户已经是root,执行su不需要输入密码。这就是sudo su只需要输入一次密码的原因,它首先通过sudo切换到root用户,然后以root用户身份执行su,于是不需要再输入root用户的密码。
  2. 工作目录切换:
    • 不带参数的su不会切换工作目录,也就是说,执行后依然停留在当前目录。
    • su -lsudo -i会把工作目录切换到root用户的家目录,相当于在切换到root用户之后执行了cd $HOME
  3. 加载配置文件:
    • 不带参数的su不会加载root用户的配置文件(比如~/.profile~/.bashrc等)。其他命令则会加载。
  4. 缩写:
    • su -su -l的缩写,两者功能相同。
  5. 状态保持:
    • 同一个终端执行sudo一次后,5分钟内不需要输入密码。
    • su没有状态保持功能,每次都需要重新输入密码。

所以:

  • sudo su -sudo su -lsudo -i完全相同。
  • sudo su和上述三个命令的区别是:
    1. 它不会切换工作目录,切换到root后依然停留在当前目录。
    2. 它不加载root用户的配置文件(比如~/.profile~/.bashrc等)。
  • 如果不加sudo,直接使用su,就需要输入root用户的密码,必须知道root用户的密码才能成功。

  • sudo -isudo su -sudo su -lsu -su -l:进入 login shell。
  • sudo susu:进入 non-login shell。
(/@Ta/2021-11-19 23:57//)

9.
强强强。老虎真的强 小米8(白)
(/@Ta/2021-11-20 15:14//)

10. 原来老虎也在写日记
(/@Ta/2021-11-22 15:41//)

11. 假设一个程序名叫hu60,
哪个是对的?
1.
/etc/systemd/system/hu60service.service
2.
/etc/systemd/system/hu60.service


Description=hu60 service

ExecStart=/path-to/hu60service.sh



(/@Ta/2021-12-12 18:33//)

12.

@chrome,嗯。文件.service前面的是在systemctl中使用的服务名称。

(/@Ta/2021-12-12 16:19//)

13.

好文,顶一个 这应该加个精华@老虎会游泳

(/@Ta/2021-12-12 23:26//)

14.

@NowTime,加了。

(/@Ta/2021-12-13 00:10//)

回复需要登录

12月13日 03:37 星期五

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1