Linux笔记
Systemd
以下只是我常用的一部分,具体可以查看实战教程
- Wants字段: 假如你的web程序用到了redis,就可以写上Wants=redis.service,systemd会在redis没有启动的时候帮你启动一次,但Wants只管依赖不管顺序,如果需要在redis启动后再启动web应用,需要加上After=redis.service。因为Wants代表弱依赖,所以当redis启动失败时,web应用仍然会启动。强依赖使用Requires字段,当redis启动失败,web应用也会失败。
- Type字段: 如果是持续启动的服务,比如一个http服务器,就使用simple,服务启动他会立刻标记状态为active,进程结束就会标记为inactive。如果是一次性命令,使用oneshot,需要配合RemainAfterExit=yes,否则它的状态始终是inactive。当服务启动后,它会等进程结束才会标记为active,这样一些需要在它之后启动的服务(After=服务A),就可以等它执行完再启动。当使用stop命令停止时,会标记为inactive。
- RemainAfterExit字段: 设置为yes时,即使进程退出,systemd仍然认为它在运行(active状态),默认为no
- Restart字段: 如果服务端崩溃或意外退出,Systemd 会自动将其重启。always 表示无论何种原因退出都重启;on-failure 表示只有非正常退出(错误码不为 0)时才重启。
- RestartSec字段: 例如 RestartSec=5,崩溃后等待5秒再执行重启操作,防止死循环无限瞬间重启。
- User字段: 设置为root代表以root用户身份执行命令,假如你的命令需要访问目录/root,那就需要设置为root
- WorkingDirectory字段: 指定服务运行的“当前工作目录”。相当于在执行启动命令前,先 cd 到这个目录。
- WantedBy字段: 使用
systemctl enable命令启动这个服务时,假如你设置的是multi-user.target,它会在/etc/systemd/system/multi-user.target.wants/目录下创建一个指向这个服务的软链接,systemd会在开机启动multi-user.target时顺便启动这个文件夹下的服务。- multi-user.target:(最常用)多用户命令行模式。
- graphical.target:图形用户界面模式。如果你的服务依赖于桌面环境(比如某个 GUI 托盘程序),应该设置为这个。
- default.target:系统的默认目标(通常是指向上述两者之一的软链接)。
- bluetooth.target:当系统检测到蓝牙适配器可用时激活。适合蓝牙相关的守护进程。
- printer.target:当连接了打印机时激活。
- smartcard.target:当检测到智能卡读卡器时激活。
- sound.target:声卡设备就绪时激活。
- 例子:
[Unit]
Description=Caddy Simple File Server
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/caddy file-server --listen :39004 --root /root/资源 --browse
[Install]
WantedBy=multi-user.target
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 魅力橙香
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果