Debian/Ubuntu开机启动之systemd快速上手


一直以来都习惯了使用/etc/rc.local解决在linux下开机启动的问题。但是新版本的Debian/Ubuntu都默认取消了rc.local的功能。犹豫习惯原因,每次新的系统中我都会手动启用rc.local,但这并不是长久之计。虽然rc.local用起来简单,但是主流发行版已经专项systemd,作为终端用户我们也只能接受现状朝前看了。
使用systemd必然要先编写一个服务文件,基本的结构如下:
[Unit] 段: 启动顺序与依赖关系
[Service] 段: 启动行为,如何启动,启动类型
[Install] 段: 定义如何安装这个配置文件,即怎样做到开机启动
先祭出systemd服务文件的一个基本结构:
[Unit]
Description=demo
After=syslog.target


[Service]
ExecStart=/path/to/exec_file/myshell.sh
SuccessExitStatus=143


[Install]
WantedBy=multi-user.target
字段介绍:
Description: 服务描述
After: 该服务启动在什么之后
ExecStart: 服务需要执行的脚本,这里制定自己的可执行文件或脚本
WantedBy: 表示该服务所在的 Target,示例中是在多用户模式下启动,Systemd 有默认的启动 Target是multi-user.target
拿着上面的框架可以在自己应用程序所在目录创建一个demo.service。在目录/etc/systemd/system中创建一个软连接指向我们的demo.service。
随后执行下面的命令设置自启动服务:
重载服务列表:
systemctl daemon-reload
设置服务自启动:
systemctl enable demo.service
此时直到重启我们创建的服务不会启动,可以手动启动服务器
systemctl start demo
下面是服务的相关用法:
systemctl disable xxx #关闭某个服务自启动
systemctl start xxx #手动启动某个服务
systemctl restart xxx #重启某个服务
systemctl stop xxx #停止某个服务
systemctl status xxx #查看某个服务的运行状态
journalctl -fu xxx #查看程序的输出
以上便是systemd的基本用法。

Archives