1. 开启服务
sudo systemctl start [服务名称]
2. 关闭服务
sudo systemctl stop [服务名称]
3. 禁止开机自启动
禁止服务开机自启动
sudo systemctl disable [服务名称]
4. 允许开机自启动
允许服务开机自启动
sudo systemctl enable [服务名称]
5. 编写一个开机自启动的脚本示例
要创建一个开机自启动的脚本,你需要:
编写脚本文件,例如
/usr/local/bin/my-startup-script.sh
。使脚本可执行:
chmod +x /usr/local/bin/my-startup-script.sh
。创建一个 systemd 服务文件,例如
/usr/lib/systemd/system/my-startup-service.service
,内容如下:
[Unit]
Description=My custom startup script
[Service]
Type=simple
ExecStart=/usr/local/bin/my-startup-script.sh
[Install]
WantedBy=multi-user.target
重新加载 systemd,使新的服务文件生效:
sudo systemctl daemon-reload
启用服务,使其开机自启动:
sudo systemctl enable my-startup-service
现在,你的脚本将在系统启动时自动执行。
通过掌握 systemctl
的基本使用,你可以轻松管理服务,定制系统的启动行为。
具体示例
编写Nginx开机自启动的脚本示例
新建配置
vim /usr/lib/systemd/system/nginx.service
写入配置
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/home/work/nginx/sbin/nginx
ExecReload=/home/work/nginx/sbin/nginx -s reload
ExecStop=/home/work/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
这是一个 systemd
单元文件(nginx.service
),用于管理 nginx
服务。它包含了三部分:[Unit]
、[Service]
和 [Install]
,下面是各部分的作用:
[Unit]
Description=nginx: 描述服务的名称或功能,这里是
nginx
。After=network.target: 指定此服务应该在
network.target
之后启动,意味着网络服务已经启动,网络相关的操作可以正常进行。network.target
是 systemd 中的一个目标,它表示网络服务已准备好。
[Service]
Type=forking: 指定服务类型为
forking
,表示nginx
在启动时会派生一个子进程(通常是主进程会退出,而新的子进程继续运行)。这告诉systemd
如何跟踪服务的启动过程。ExecStart=/home/work/nginx/sbin/nginx: 指定启动
nginx
服务时执行的命令,这里是启动/home/work/nginx/sbin/nginx
。ExecReload=/home/work/nginx/sbin/nginx -s reload: 指定重新加载
nginx
配置时执行的命令,这里是发送reload
信号给nginx
,使其重新加载配置文件而无需完全重启。ExecStop=/home/work/local/nginx/sbin/nginx -s quit: 指定停止
nginx
服务时执行的命令,这里是发送quit
信号给nginx
,使其优雅地停止服务。PrivateTmp=true: 设置为
true
表示该服务会使用私有的临时目录(/tmp
),而不会共享系统全局的临时目录。这样可以增强服务的安全性,避免服务之间的数据冲突或安全问题。
[Install]
WantedBy=multi-user.target: 指定该服务应该在
multi-user.target
(多用户运行级别)时自动启动。multi-user.target
是 systemd 中的一个目标,表示系统已进入多用户模式,相当于传统的 runlevel 3(文本模式下的多用户环境)。
总结
这个 systemd
单元文件定义了如何启动、重新加载和停止 nginx
服务。它指定了 nginx
进程的位置、如何优雅地停止以及在启动时所依赖的系统状态。通过这个配置,systemd
可以管理 nginx
服务的生命周期,在系统启动时自动启动 nginx
,并在需要时重新加载或停止它。
使配置生效
sudo systemctl daemon-reload
sudo systemctl enable nginx