我是初学者。我有一个名为的脚本
updateTf2.sh
它的内容
#!/bin/bash
/etc/init.d/srcds stop
./steamcmd/sh +login anonymous +force_install_dir ./tf2 +app_update 232250 +quit
/etc/init.d/srcds start
位于此处
~/home/user/updateTf2.sh
如果我从终端运行./updateTf2.sh,它会要求输入密码,我输入密码,然后脚本就会成功运行。
当我将它放入 sudo crontab -e 中时,如下所示
10 9 * * * /home/user/updateTf2.sh
它不运行。
我做错了什么?我在这里看到过关于这个主题的类似问题,但没有看到明确的答案。谢谢你的帮助。
答案1
cron 执行的命令没有终端连接,因此它们无法以交互方式要求用户响应。如果所需的远程服务器要求输入匿名登录密码,则必须使用另一种机制来验证程序steamcmd.sh
,例如将其配置为使用某些 Steam AppID,如中所示如何安装和使用 SteamCMD。
答案2
这是一个非常常见的错误。您需要在脚本中使用完整路径(而不是相对路径)。
chron 使用最少的环境变量与 sh 一起运行。