简述
systemctl 是 systemd 的主要命令行工具,用于控制系统服务(如启动、停止、重启、查看状态等)。systemd 是 Linux 系统初始化系统和服务管理器的替代品,它已经成为许多现代 Linux 发行版的默认选择,如 Ubuntu、Debian、Fedora、CentOS 7 及以上版本等。
构建服务
vi /etc/systemd/system/mssd.service
[Unit]
Description=mediaserver
After=network.target
[Service]
Type=simple
ExecStart=/opt/cvos/medias/mssd start
ExecStop=/opt/cvos/medias/mssd stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
执行进程守护脚本
start()
{
cd /opt/cvos/medias/
./guard_mss.sh start
}
stop()
{
cd /opt/cvos/medias/
ps -ef |grep guard_mss.sh |awk '{print $2}'|xargs kill -9 > /dev/null
./guard_mss.sh stop
}
restart()
{
cd /opt/cvos/medias
./guard_mss.sh restart
}
备注: nohup ./guard_mss.sh start > /dev/null 2>&1 &这种执行方法将无法启动程序,说明nohup和输出都会影响到systemctl指令运行
systemctl daemon-reload
当您在 /etc/systemd/system/ 或 /lib/systemd/system/ 目录下添加、删除或修改了服务单元文件后,您需要执行 systemctl daemon-reload 命令,以便 systemd 守护进程能够重新加载这些文件,并更新其内部的服务单元数据库。
启动服务
systemctl start [服务名]: 启动指定服务。
停止服务
systemctl stop [服务名]: 停止指定服务。
重启服务
systemctl restart [服务名]: 重启指定服务。
设置服务开机自启
systemctl enable [服务名]: 设置指定服务在系统启动时自动运行。
验证
systemctl list-unit-files --type=service --state=enabled
禁止服务开机自启
systemctl disable [服务名]: 禁止指定服务在系统启动时自动运行
服务启动失败排查
journalctl -xe 用于输出启动服务失败的详细信息输出,例如加载动态库失败等错误信息输出