Loading... # ETS2 建立自启动系统服务 ## 一、创建 脚本 文件 编辑并创建服务文件: ```sh sudo vim /home/steam/ets2_sv/bin/linux_x64/server.sh ``` 添加一下内容: ```ini #!/bin/sh # 服务器目录(使用绝对路径,防止软链接问题) SERVER_HOME="/home/steam/ets2_sv/bin/linux_x64" # Steam 运行库目录 STEAM_PATH="/home/steam/ets2_sv/linux64" # 设置 `LD_LIBRARY_PATH` export LD_LIBRARY_PATH="$STEAM_PATH:$SERVER_HOME:$LD_LIBRARY_PATH" # 欧卡文档目录(可选) export XDG_DATA_HOME="/home/steam/ets2_doc" # PID 文件的绝对路径 PID_FILE="$SERVER_HOME/logs/server.pid" # 日志文件 SERVER_LOG="$SERVER_HOME/logs/server.log" # 启动参数 SERVER_OPTIONS="-nosingle -server server_packages.sii -server_cfg server_config.sii" case "$1" in start) echo "🚀 正在启动 ETS2 服务器..." mkdir -p "$SERVER_HOME/logs" # 确保旧的 `awk` 进程被清理,避免日志进程残留 AWK_PID=$(pgrep -f "awk.*server.log") if [ -n "$AWK_PID" ]; then echo "🛑 发现旧的日志进程 (PID: $AWK_PID),正在清理..." kill -9 $AWK_PID fi # 启动服务器,并使用 `awk` 处理日志(不影响 PID 记录) setsid "$SERVER_HOME/eurotrucks2_server" $SERVER_OPTIONS 2>&1 | awk '{print strftime("%Y-%m-%d %H:%M:%S"), "-", $0}' >> "$SERVER_LOG" & # 等待 `eurotrucks2_server` 启动 sleep 2 # 获取 `eurotrucks2_server` 的真实 PID SERVER_PID=$(pgrep -f "eurotrucks2_server") echo $SERVER_PID > "$PID_FILE" echo "✅ ETS2 服务器已启动,PID: $SERVER_PID" ;; stop) if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") echo "🛑 正在停止 ETS2 服务器 (PID: $PID)..." # 先尝试正常终止服务器 kill $PID sleep 2 # 如果进程仍然存活,则强制终止 if ps -p $PID > /dev/null 2>&1; then echo "⚠ 进程 $PID 仍然存活,尝试强制终止..." kill -9 $PID fi # 终止可能存在的 `awk` 进程 AWK_PID=$(pgrep -f "awk.*server.log") if [ -n "$AWK_PID" ]; then echo "🛑 发现日志处理进程 (PID: $AWK_PID),正在清理..." kill -9 $AWK_PID fi # 清理 PID 文件 rm -f "$PID_FILE" echo "✅ ETS2 服务器已完全停止。" else echo "⚠ ETS2 服务器未运行。" fi ;; restart) echo "🔄 正在重启 ETS2 服务器..." $0 stop sleep 3 $0 start ;; status) if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if ps -p $PID > /dev/null 2>&1; then echo "✅ ETS2 服务器正在运行,PID: $PID" else echo "⚠ ETS2 服务器的 PID 文件存在,但进程未运行!" rm -f "$PID_FILE" # 清理无效的 PID 文件 fi else echo "⚠ ETS2 服务器未运行。" fi ;; *) echo "🚀 ETS2 服务器管理命令" echo "🔹 用法: ets2_sv {start|stop|restart|status}" echo " start - 启动 ETS2 服务器" echo " stop - 停止 ETS2 服务器" echo " restart - 重启 ETS2 服务器" echo " status - 查看 ETS2 服务器状态" exit 1 ;; esac ``` ## 二、创建软连接 ```ini ln -s /home/steam/ets2_sv/bin/linux_x64/server.sh /usr/local/bin/ets2_sv ``` 权限: ```ini sudo chmod +x /home/steam/ets2_sv/bin/linux_x64/server.sh sudo chmod +x /usr/local/bin/ets2_sv ``` ## 三、权限问题 入股出现权限问题执行: ```ini sudo chmod +x sudo chown -R steam:steam /home/steam/ets2_sv/bin/linux_x64/ sudo chmod -R 775 /home/steam/ets2_sv/bin/linux_x64/ sudo chown -R steam:steam /home/steam/ets2_sv/bin/linux_x64/logs sudo chmod -R 775 /home/steam/ets2_sv/bin/linux_x64/logs sudo chown -R steam:steam /home/steam/ets2_doc/Euro\ Truck\ Simulator\ 2/ sudo chmod -R 775 /home/steam/ets2_doc/Euro\ Truck\ Simulator\ 2/ ``` 最后修改:2025 年 04 月 09 日 © 允许规范转载 打赏 赞赏作者 赞 1 咱们谁跟谁,用不着~