笔记:Linux设置开机启动项

环境:

linux,x86

编写启动脚本startup.sh

实际开发中可能要启动的服务比较多,我们单独写一个脚本startup.sh,后续改动只需要修改此脚本文件。

#! /bin/bash

# ------------------------ 基础服务 ------------------------
# nginx,由于我的nginx是用root用户安装的,安全起见就用root用户运行
echo "准备启动nginx..."
NGINX_PID=`ps -ef|grep nginx|grep master|grep -v grep|awk '{print $2}'`
if [ ! $NGINX_PID ];then
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    echo "nginx启动成功"
else
    echo "nginx早已运行"
fi

# ------------------------ 业务服务 ------------------------
# 使用 su 命令切换到普通用户执行其他脚本
# 为了保证以下脚本都能执行,添加set +e/-e以忽略脚本报错
set +e
su - ec2-user -s /bin/bash /home/ec2-user/dbcleaner/start.sh
set -e

set +e
su - ec2-user -s /bin/bash /home/ec2-user/stcloud-admin/start.sh
set -e

# 也能写在一起
# set +e
# su - ec2-user -s /bin/bash /home/ec2-user/dbcleaner/start.sh
# su - ec2-user -s /bin/bash /home/ec2-user/stcloud-admin/start.sh
# set -e

使用命令chmod +x startup.sh设置为可执行文件

新建systemd服务

/etc/systemd/system/目录下新建systemd服务文件,名称可任意,以my-startup.service为例,内容如下:

[Unit]
Description=用户自定义的开机自启动服务

[Service]
# oneshot:执行一次就行
Type=ones-hot
# 可不写,默认就是root
User=root
# process:仅关闭主进程,不关闭生成的子进程
KillMode=process
Restart=no
PrivateTmp=true
# 配置service启动超时时间
TimeoutStartSec=10s

# 使用脚本启动 注意需要绝对路径
ExecStart=/home/ec2-user/startup.sh

[Install]
# 服务安装的用户模式 就是指想要使用这个服务的目录是多用户
WantedBy=multi-user.target

使用命令sudo chmod 755 my-startup.service设置为可执行文件,再使用命令sudo systemctl daemon-reload重载配置,再使用命令systemctl list-units --type=service列出所有service,查看到my-startup.service就可以进行下面的步骤。

启动服务并设置自启动

# 启动服务
sudo systemctl start my-startup.service
# 设置开机启动
sudo systemctl enable my-startup.service

查看该服务的状态:

systemctl status my-startup.service

或者使用命令systemctl is-enabled my-startup查看服务是否开机启动:

[ec2-user@ip-172-26-7-0 ~]$ systemctl is-enabled my-startup
enabled
[ec2-user@ip-172-26-7-0 ~]$ 

补充:停止服务并从自启动项中删除

# 停止服务
sudo systemctl stop my-startup.service
# 撤销开机自启动
sudo systemctl disable my-startup.service

备注

systemd服务文件详解可参考:linux systemd service 服务文件简介

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容