Cron

使用 cron 的樹莓派自動執行不工作

  • June 2, 2020

我嘗試了幾種不同的解決方案,但都沒有奏效。

我在我的 Raspberry Pi 4 上安裝了一個 USB 儲存設備,USB3 埠中的 4gb。掛載目錄是/media/usbstick/.

在這個位置是一個包含我的我的世界伺服器的文件夾。我還有一個shell腳本:

#!/bin/sh

cd /media/usbstick/minecraft/   
/usr/bin/screen -S minecraft /usr/bin/java -jar -Xmx3000M -XX:ParallelGCThreads=4 -XX:+UseParallelOldGC /media/usbstick/minecraft/paperclip.jar

如果我先鍵入手動啟動它,它工作正常:

cd /media/usbstick/minecraft/

然後通過鍵入執行它:

./start.sh

我嘗試使用以下命令設置 crontab:

crontab -e

並在行尾寫道:

@reboot /media/usbstick/minecraft/start.sh

但它不起作用。

所以我已經修復了它。基本上 screen 可以在“owned-user”終端上執行,所以你必須在分離模式下執行它:

您必須使用-d(start detached session) 和-m(prevent $STY 環境變數使用)。

謝謝大家,你們的回答對我幫助很大!

(也感謝@ctrl-alt-delor 糾正了我的英語錯誤措辭!)

您的cron工作可能沒有開始,因為cron沒有跟踪系統服務何時可用。從某種意義上說,它是一個以自我為中心的守護程序,它只知道它何時啟動,並假定所有其他服務也已啟動。可能是其他原因,但鑑於您提供的資訊,這似乎是最有可能的嫌疑人。

你應該做兩件事:

  1. sleep在開始你的cron工作之前。這將使您的系統有時間安裝您的 USB 記憶棒,並啟動任何其他可能尚未準備就緒cron的服務。
  2. 您的腳本中的錯誤可能會設置srderr為寫入終端的輸出。但是由於您的cron作業沒有可寫入的終端,因此您必須將其重定向到日誌文件才能查看。

我對您的cron工作做了一些小改動,以完成上述兩個建議:

@reboot (sleep 30; /media/usbstick/minecraft/start.sh) >> /home/pi/cronjoblog.txt 2>&1

如果您願意,還可以使用其他方法(例如檢查驅動器是否已安裝),但這很容易做到,即使sleep不能解決問題,您重定向到的文件也會有一些線索.

引用自:https://unix.stackexchange.com/questions/590133