私はいくつかの異なる解決策を試しましたが、そのうちの何も動作しません。
4GB USB3ポートを備えたRaspberry Pi 4にUSBストレージデバイスを取り付けました。マウントディレクトリはです/media/usbstick/
。
この場所に私のMinecraftサーバーを含むフォルダがあります。そこにシェルスクリプトもあります。
#!/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
しかし、これはうまくいきません。
答え1
システムサービスが利用可能な時期を追跡する方法がないcron
ため、ジョブが開始されないことがあります。cron
いつ始まるが分かるという点で自己中心的なデーモンです。仮説他のすべてのサービスも開始されました。他の理由もあるかもしれませんが、この程度のようです。疑う可能性が最も高いあなたが提供した情報を考えると。
次の 2 つの作業を行う必要があります。
sleep
作業を始める前にしばらく時間をかけてくださいcron
。これにより、システムがUSBスティックをマウントし、まだ準備されていない他のサービスを開始する時間がありますcron
。スクリプトのエラーは出力に設定され、
srderr
端末に書き込まれる可能性があります。ただし、cron
ジョブに書き込み可能な端末がないため、次のことを行う必要があります。リダイレクト表示するにはログファイルに保存してください。
cron
上記の2つの提案を達成するために、あなたの仕事を少し変更しました。
@reboot (sleep 30; /media/usbstick/minecraft/start.sh) >> /home/pi/cronjoblog.txt 2>&1
必要に応じて他の方法(ドライブがマウントされていることを確認するなど)を使用できますが、この方法は簡単で、sleep
問題が解決しなくてもリダイレクトするファイルにいくつかの手がかりがあります。
答え2
だからそれを修正しました。デフォルトでは、画面は「所有ユーザー」端末でのみ実行できるため、分離モードで実行する必要があります。
-d
(分離セッションの開始)と-m
($ STY環境変数の使用を防ぐ)を使用する必要があります。
みんなありがとうございます。あなたの答えがたくさん役に立ちました!
(間違った英語表現を修正してくれた@ctrl-alt-delorにも感謝します!)