简述

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 用于输出启动服务失败的详细信息输出,例如加载动态库失败等错误信息输出