【问题标题】:Can't get crontab to run shell script无法让 crontab 运行 shell 脚本
【发布时间】:2021-09-27 12:07:09
【问题描述】:

这似乎是常见问题,我已经浏览了几十个有类似问题/问题的询问网站,但没有一个解决方案对我有用。

我正在使用 Raspberry Pi OS(64 位)beta 测试版。

这是我的脚本,它在 crontab 之外使用时可以完美运行,但不能在其中使用:

#!/bin/sh

if ! screen -list | grep -q "minecraft"; then
  cd /home/pi/minecraft
  screen -S minecraft -d -m java -jar -Xms2G -Xmx7G spigot-1.17.jar nogui
fi

我正在使用 sudo crontab -e 但也尝试过 crontab -e:

sudo crontab -e

我计划在启动时使用此脚本和相关脚本一整天,但我目前只是将其设置为在未来运行几分钟来测试它。

05 16 * * * /home/pi/minecraft/scripts/start.sh

屏幕列表中没有任何套接字:

screen -list

我在 syslog 或邮箱中没有收到任何错误,我尝试将 bin/bash、/bin/sh 和 sh 放在路径前面并进行了一些其他调整,但没有任何反应。

【问题讨论】:

  • sudo crontab -e 那你为什么不检查sudo screen -list
  • 也没有显示在那里,无论如何都会显示在我的世界服务器列表中。
  • 你赋予start.sh脚本什么权限?
  • -rwxr-xr-x 1 pi pi 159 Jul 19 16:11 /home/pi/minecraft/scripts/start.sh
  • 在 crontab 顶部附近或脚本中添加一行 DISPLAY=:0; export DISPLAY

标签: linux


【解决方案1】:

显然我的 crontab 路径不同,所以我必须在 crontab 中的命令之前添加这个:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/usr/lib/jvm/jdk-16.0.1/bin

【讨论】: