为VPS重装AlpineLinux并使用OpenRC平替Systemd 发表于 2025-05-27 更新于 2025-05-28
河南
技术集 运维 网络 为VPS重装AlpineLinux并使用OpenRC平替Systemd FoxHui 2025-05-27 2025-05-28 重装系统 使用reinstall脚本为VPS重装系统,脚本来自github.com/bin456789/reinstall ,需要先下载脚本
1 2 3 4 5 6 7 8 9 10 11 # 国内服务器 curl -O https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.sh # 国外服务器 curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh # 给予脚本运行权限 chmod +x reinstall.sh # 运行脚本 ./reinstall.sh alpine
此时脚本会让你输入重装后的Root用户密码,自己设置即可,然后脚本执行完手动执行reboot
重启,等待5分钟(时间长短与机房网络与配置有关),这个脚本非常好用,他会自己选择机房网络环境最近的镜像源,不需要操心网络环境问题
进程管理 需求描述 由于AlpineLinux的轻量化,纯净系统也只有100M,里面没有我们熟悉的systemd
我的需求是:
所以需要另辟蹊径,这个方法依赖tmux,请使用apk add tmux
进行安装,这个脚本你可以当作一个像之前systemd一样的service配置文件,请把他重命名成你喜欢的,如:yunzai,文件不需要有后缀名,放入/etc/init.d/
目录中,然后使用chmod +x /etc/init.d/yunzai
给予脚本运行权限
配置脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 # !/sbin/openrc-run description="YunzaiBot" # 进程描述 TMUX_BIN="/usr/bin/tmux" # 非必要不需要修改 SESSION_NAME="" # 进程名字 APP_DIR="/root/yunzai" # 工作目录 APP_COMMAND="node app" # 启动指令 CHECK_INTERVAL=5 # 秒,检测间隔 CHECK_LOOP_PID_FILE="/run/${SESSION_NAME}.checkloop.pid" depend() { need net } start() { ebegin "Starting ${SESSION_NAME} (tmux session: ${SESSION_NAME})" if ! ${TMUX_BIN} has-session -t "${SESSION_NAME}" 2>/dev/null; then local cmd_to_run="cd ${APP_DIR} && ${APP_COMMAND}" ${TMUX_BIN} new-session -d -s "${SESSION_NAME}" "${cmd_to_run}" fi if ${TMUX_BIN} has-session -t "${SESSION_NAME}" 2>/dev/null; then eend 0 "${SESSION_NAME} started successfully in tmux session '${SESSION_NAME}'." else eend 1 "Failed to start ${SESSION_NAME} tmux session '${SESSION_NAME}'." return 1 fi # 启动后台检测进程 if [ ! -f "${CHECK_LOOP_PID_FILE}" ] || ! kill -0 "$(cat ${CHECK_LOOP_PID_FILE})" 2>/dev/null; then check_loop & echo $! > "${CHECK_LOOP_PID_FILE}" einfo "Started background monitor for ${SESSION_NAME}." fi } stop() { ebegin "Stopping ${SESSION_NAME} (tmux session: ${SESSION_NAME})" if ${TMUX_BIN} has-session -t "${SESSION_NAME}" 2>/dev/null; then ${TMUX_BIN} kill-session -t "${SESSION_NAME}" fi # 停止后台检测进程 if [ -f "${CHECK_LOOP_PID_FILE}" ]; then kill "$(cat ${CHECK_LOOP_PID_FILE})" 2>/dev/null rm -f "${CHECK_LOOP_PID_FILE}" einfo "Stopped background monitor for ${SESSION_NAME}." fi eend 0 } status() { if ${TMUX_BIN} has-session -t "${SESSION_NAME}" 2>/dev/null; then einfo "${SESSION_NAME} (tmux session '${SESSION_NAME}') is running." return 0 else einfo "${SESSION_NAME} (tmux session '${SESSION_NAME}') is not running." return 1 fi } # 后台监控函数:如果 tmux 会话挂了,就重启 check_loop() { while true; do if ! ${TMUX_BIN} has-session -t "${SESSION_NAME}" 2>/dev/null; then einfo "${SESSION_NAME} tmux session disappeared. Restarting..." start fi sleep ${CHECK_INTERVAL} done } command_user="root" # 运行用户
管理指令 请将yunzai更换为自己的文件名,运行后会自动在tmux中创建分离会话,你可以通过tmux ls
来获取当前运行的会话,并且通过tmux a -t yunzai
来打开会话,会话名和脚本设置的进程命一致
1 2 3 4 5 6 7 8 9 10 # 启动进程 rc-service yunzai start # 停止进程 rc-service yunzai stop # 重启进程 rc-service yunzai restart # 将进程添加至开机自启 rc-update add yunzai # 将进程从开启自启中删除 rc-update del yunzai
Tmux相关 指令 你需要有使用tmux的基础,如退出,分离会话,恢复会话这些基础指令
1 2 3 4 # 恢复会话 tmux a -t 会话名 # 创建会话(此脚本不需要这个,只需要了解即可) tmux new-session -t 会话名
快捷键
快捷键
作用
Ctrl + D
关闭会话
Ctrl + B + D
分离会话(挂后台)
Ctrl + B 后输入`:set -g mouse on`可以使用鼠标上下滚动会话内容