目录
[1.nginx redis开机启动](#1.nginx redis开机启动)
在 Linux 环境下部署应用后,让服务(如 Nginx、Redis、Nacos)随系统启动自动运行是一项基础且重要的运维操作。虽然 systemd 是现代 Linux 推荐的标准服务管理方式,但 crontab 的 @reboot 功能因其配置简单、易于理解,在某些场景下(特别是个人开发或小型项目)也是一种高效的选择。
本文将介绍如何利用 crontab 来实现常见服务的开机自启。
1.nginx redis开机启动
Nginx 和 Redis 的启动脚本通常较为轻量,不依赖复杂的外部环境变量(如 JAVA_HOME),因此可以直接通过 crontab 配置。
1.编辑crontab
-
crontab -e: 用于编辑当前用户的定时任务列表。crontab -e
2.添加启动脚本
@reboot: 这个特殊的时间表达式表示每当系统启动时,执行一次指定的命令。
redis
@reboot cd /data/soft/redis9999/bin && ./redis-server redis.conf > /dev/null 2>&1 &
nginx
@reboot sleep 5 && /usr/local/nginx/sbin/nginx > /usr/local/nginx/logs/nginx_cron_start.log 2>&1
2.nacos开机启动
nacos相对麻烦点,因为需要jdk环境,但是crontab默认不会去读取/etc/profile里面的JAVA_HOME,因此我们可以先建一个nacos的启动脚本,在里面配置环境变量
1.新建启动脚本
vim start_nacos_with_env.sh
2.添加内容
#!/bin/bash
# 设置Java环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_361
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 验证Java环境
echo "JAVA_HOME: $JAVA_HOME" >> /data/soft/nacos/logs/startup_cron.log
echo "PATH: $PATH" >> /data/soft/nacos/logs/startup_cron.log
java -version >> /data/soft/nacos/logs/startup_cron.log 2>&1
# 等待系统就绪
sleep 10
# 启动Nacos
cd /data/soft/nacos/bin
nohup ./startup.sh -m standalone >> /data/soft/nacos/logs/startup_cron.log 2>&1 &
为 Nacos 创建一个独立的启动脚本,在脚本内部设置所需的环境变量。
3.设置脚本权限
sudo chmod +x start_nacos_with_env.sh
4.配置crontab
@reboot nohup /usr/sh/start_nacos_with_env.sh > /dev/null 2>&1 &
3.验证
1.重启
reboot
2.检查服务状态
系统重启后,登录并检查服务进程是否运行:
ps -ef | grep -E "(nginx|redis|nacos)"
3.查看日志
如果服务未能正常启动,检查相应的日志文件:
- Nacos:
tail -f /data/soft/nacos/logs/startup_cron.log - Nginx:
tail -f /usr/local/nginx/logs/nginx_cron_start.log - Redis: 检查
redis.conf中logfile指定的路径。