Ubuntu编写开机启动脚本

本文详述了服务器故障处理策略,重点介绍通过主备或分布式架构实现高可用的方法。深入探讨了服务脚本编写,包括启动、停止及重启脚本的实现,并指导如何将服务设置为开机自启动,确保服务器恢复后的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 概述

  • 服务器一般不可能百分之百不会挂,于是一般采用主备或者分布式来达到高可用。

  • 挂掉的机器有很多处理策略,常用的就是重新启动,但是为了保证重启之后服务器能够恢复可用状态,需要配置开机启动脚本。

2 编写启动脚本

  • 服务脚本:假设服务名字为test
#!/bin/bash
### BEGIN INIT INFO
# Provides:          littleevil
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: test service
# Description:       test service daemon
### END INIT INFO

# 文件服务器 运营平台 商户平台
files=(file opt merchant)
# 目录
deploy=/home/littleevil/deploy/

start() {
    echo "starting test service..." 
    for var in ${files[@]};
    do
        # 进入目录并运行服务器启动脚本
        cd $deploy$var
        sh start.sh
    done
}


stop() {
    echo "stopping test service..."
    for var in ${files[@]};
    do
        # 进入目录并运行服务器停止脚本
        cd $deploy$var
        sh stop.sh
    done
}

restart() {
    stop
    start
}

# 这里没有重写status
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
esac
  • 服务器启动脚本:这里演示文件服务器的启动脚本
#!/bin/sh

echo "you will start server"
echo "please waiting ...."

ps -ef|grep file.jar|grep -v grep|awk {'print $2'}|while read line
do
  kill -9 $line
done

rm -rf log.out

# JVM调优参数未写 需要根据实际情况进行调整
nohup nice java -server -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:./gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./oom.dump -jar file.jar >log.out&
  • 服务器停止脚本
#!/bin/sh

echo "you will stop server"
echo "please waiting ...."

ps -ef|grep file.jar|grep -v grep|awk {'print $2'}|while read line
do
  sudo -S kill -9 $line
done

rm -rf log.out

3 设置脚本开机自启动

  • 复制文件夹中的test服务脚本至linux系统的/etc/init.d目录下
  • 进入/etc/init.d目录执行sudo update-rc.d test defaults 95
  • 执行sudo sysv-rc-conf查看服务是否添加
  • 执行 sudo service test start/stop/restart/status或者sudo systemctl start/stop/restart/status test.service测试服务是否添加成功 (需要重启服务器)
  • 执行 sudo sysv-rc-conf --level 2345 delightd on
  • 最后通过sudo reboot测试服务开启是否可以自启动

转载于:https://www.cnblogs.com/linzhanfly/p/9915481.html

### 设置Ubuntu开机启动脚本 对于希望在Ubuntu系统启动时自动运行特定程序或脚本的情况,有多种方法可供选择。一种常见的方式是通过创建Systemd服务单元文件来实现这一目标[^1]。 #### 创建Systemd服务单元文件 为了使自定义脚本能够在每次重启后自动执行,可以按照如下方式操作: - 首先,在`/etc/systemd/system/`目录下新建一个`.service`结尾的服务配置文件,比如命名为`my-startup-script.service`。 ```bash sudo nano /etc/systemd/system/my-startup-script.service ``` - 接着向该文件内写入必要的字段描述以及指定要执行的具体命令路径。下面是一个简单的例子: ```ini [Unit] Description=My Startup Script Service After=network.target [Service] Type=simple User=nobody ExecStart=/path/to/startup/script.sh Restart=on-failure [Install] WantedBy=multi-user.target ``` 此处需要注意的是,应当替换`/path/to/startup/script.sh`为实际存在的可执行脚本的位置,并确保此位置下的脚本具有足够的权限被执行。 - 完成编辑保存退出之后,还需要通知systemctl重新加载配置并启用新添加的服务以便于下次引导时生效: ```bash sudo systemctl daemon-reload sudo systemctl enable my-startup-script.service ``` 最后一步就是立即测试这个新的服务是否能够正常工作了: ```bash sudo systemctl start my-startup-script.service ``` 如果一切顺利的话,则意味着每当计算机启动完成进入多用户模式(`multi-user.target`)以后就会触发上述设定好的动作。 另外值得注意的一点是在编写shell脚本的时候记得赋予其+x属性使其成为可执行文件: ```bash chmod +x /path/to/startup/script.sh ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值