Skip to content
懒人吧
Go back

无 sudo 权限下的进程自启方案:crontab @reboot 实战

编辑页面

无 sudo 权限下的进程自启方案:crontab @reboot 实战

背景

在 Linux 服务器上,部署了一个本地大模型推理服务(llama-server),需要一个开机自启的方案。但问题来了——没有 sudo 权限

常见自启方案对比

方案需要 sudo适用场景
systemd 服务✅ 是有 root 权限的标准方案
/etc/rc.local✅ 是传统方案
crontab @reboot❌ 否无 root 用户首选
~/.bashrc / ~/.profile❌ 否交互式登录才触发
supervisor 用户模式❌ 否需要额外安装

crontab @reboot 方案详解

启动脚本编写

#!/bin/bash
# /home/ai/start_35b.sh

/home/ai/llama.cpp/build/bin/llama-server \
  --model /path/to/model.gguf \
  --mmproj /path/to/mmproj.gguf \
  --host 0.0.0.0 --port 8001 --alias 35B \
  --ctx-size 49152 \
  --n-gpu-layers -1 \
  --cont-batching \
  --mlock --no-mmap \
  --cache-type-k q8_0 \
  --cache-type-v q8_0

添加 crontab 条目

crontab -l 2>/dev/null
echo "@reboot /home/ai/start_35b.sh >> /tmp/llama-35b.log 2>&1" | crontab -

验证是否生效

crontab -l
# 输出: @reboot /home/ai/start_35b.sh >> /tmp/llama-35b.log 2>&1

方案优缺点

优点

缺点

改进建议

如果需要进程守护能力,可以用一个小技巧:在脚本中加一个监控循环,或使用 screen/tmux 结合 while 循环:

#!/bin/bash
while true; do
  /path/to/llama-server ...
  sleep 5  # 退出后等 5 秒自动重拉
done

经验总结

  1. crontab @reboot 是无 sudo 用户的救命方案,简单但有效
  2. 搭配日志重定向方便排查启动失败原因
  3. 如果需要进程守护(进程退出自动重启),需额外加 while 包装
  4. 修改配置后记得手动执行一次脚本验证,不必等重启

编辑页面
Share this post on:

Previous Post
RTSP 摄像头接入与远程拍照实践
Next Post
MTP(多 Token 预测):大模型推理加速的“透视眼”