配置crontab通过screen开机自启FiveM服务器未生效问题咨询
配置错误原因
你当前的配置存在3个核心问题,导致screen会话无法正常启动:
- screen命令缺少必要启动参数:直接调用
screen会尝试创建前台交互会话,crontab执行时没有关联的交互终端,进程会直接退出,也没有指定自动分离、会话命名的参数。 - FiveM启动参数位置错误:
+set开头的配置参数是FXServer的启动参数,需要放在run.sh路径之后,你当前写在run.sh前的参数会被传给screen程序,screen无法识别这类参数,直接启动失败。 - crontab默认环境变量不完整:@reboot任务执行时不会加载用户shell的PATH配置,直接写命令名可能出现找不到可执行文件的问题。
- 关于会话分离的疑问:crontab中不需要手动执行分离操作,只要给screen传入后台创建会话的参数即可,三条@reboot任务是独立并行执行的,不存在先后阻塞的问题。
正确配置方法
- 先查询所需命令的绝对路径,执行以下命令记录返回结果:
# 查询screen绝对路径,通常返回/usr/bin/screen which screen # 查询bash绝对路径,通常返回/bin/bash which bash # 查询run.sh的实际绝对路径,替换为你服务器的存放目录 realpath /你的FiveM服务根目录/run.sh
- 执行
crontab -e编辑定时任务,删除原有错误配置,替换为以下内容,注意把占位的路径替换为你上一步查到的实际路径:
@reboot sleep 15 && /usr/bin/screen -dmS FWRP_Server1 /bin/bash /[实际run.sh绝对路径]/run.sh +set serverProfile FWRP_Server1 @reboot sleep 15 && /usr/bin/screen -dmS FWRP_Training /bin/bash /[实际run.sh绝对路径]/run.sh +set serverProfile FWRP_Training +set txAdminPort 40121 @reboot sleep 15 && /usr/bin/screen -dmS FWRP_FivePD /bin/bash /[实际run.sh绝对路径]/run.sh +set serverProfile FWRP_FivePD +set txAdminPort 40122
参数说明
sleep 15:开机后等待15秒再启动服务,给系统留足时间完成磁盘挂载、网络初始化,避免服务启动时依赖资源未就绪报错。screen -dmS:三个参数组合作用是直接在后台创建已分离的screen会话,不需要手动执行detach操作,其中-S后指定的是会话别名,后续需要进入服务器控制台时,直接执行screen -r 别名即可,比如screen -r FWRP_Server1。- 所有
+set开头的FiveM配置参数全部放在run.sh之后,和你手动启动时的参数写法完全一致,这部分参数会被正确传给FXServer进程。 - 所有命令均使用绝对路径,规避crontab环境变量不全导致的找不到命令问题。
配置验证
配置完成后不需要重启服务器测试,可直接在shell中执行去掉@reboot sleep 15 && 部分的单条启动命令,比如:
/usr/bin/screen -dmS FWRP_Server1 /bin/bash /[实际run.sh绝对路径]/run.sh +set serverProfile FWRP_Server1
执行完成后运行screen -ls,如果能看到对应名称的screen会话存在,且会话状态为Detached,就说明启动命令写法正确,开机后会自动正常启动。
内容的提问来源于stack exchange,提问作者ConductorWon
相关产品推荐
相关产品推荐

