スクリーンショットのcronジョブが機能しない


1

私はこれを解決するためにインターネット上で検索してきましたが、私に合ったものを見つけることができないようです。

毎分自動的にスクリーンショットを撮るcronジョブを実行したい。スクリプトは次のようになります。

#!/bin/bash
cd /home/ville/Skrivbord/screenshot
import -display :0 -win root screenshot.jpg

コードは手動で実行すると正常に機能しますが、cronジョブとして実行すると機能しません。

cronファイルは次のようになります。

* * * * * /root/bin/screen.bash &> /dev/null
* * * * * /root/bin/syncdata.bash

もう1つのタスクであるsyncdataは正常に機能します。

成功せずに試したことがいくつかあります。

/root/bin/screen.bashおよび/ home / ville / Skrivbord / screenshotの許可を777に変更し、所有者をrootに変更します。

ファイル名をscreen.shに変更します(.bashと.shに違いはないのでしょうか?)

インポート行を「import -win root screenshot.jpg」と「import -display:0.0 -win root screenshot.jpg」に変更します。

コードを追加しました:

# Set display to :0 if it's not already set.
: ${DISPLAY:=:0}
export DISPLAY

screen.bashの既存のコードよりも1回上および下に1回。

cronの行を「* * * * * export DISPLAY =:0 && /root/bin/screen.bash」に変更しました。

何も動作しません!

私を助けてください


ファイル名の末尾にまったく違いはありません。重要なのは#!線だけです。
-grawity

回答:


2

cronデーモンによって開始されたプログラムには、Xサーバーへの接続に必要な認証データがありません。このようなものをあなたのに入れてみてください~/.xprofile

if [ "$XAUTHORITY" ]; then
    cp -f "$XAUTHORITY" ~/.Xauthority
fi

だから、ファイル/root/.xprofileを作成し、そこに行を入れましたが、それでも違いはありません。私はそれを正しくしましたか?2> /home/ville/Skrivbord/output.txtをcronタブに追加すると、次のようになります。
ヴィルヘルム・フレンベルク

@ヴィルヘルム:いいえ、それは正しくありません。スクリプトはホームディレクトリにある必要があります(想像できない理由でX11をルートとして実行している場合を除く)。cronjobが別のユーザーとして実行されている場合、xprofileスクリプトを変更して「$ XAUTHORITY」をそのユーザーがアクセスできる場所にコピーし、それにexport XAUTHORITY=<the new location>応じてcronジョブを編集する必要があります。
-grawity

@Vilhelm:あなたの元の投稿で、これを達成するために正確に何が期待されているのか、もう少し説明してもらえますか?(これは、「私の子供が何を閲覧しているかを知りたい」というような話に似すぎています。)
grawity

いいえ、これは大気測定用の2つの計測器を制御するコンピューター上にあるはずです。グラフや端末などからのデータは、科学者がすぐにステータスを確認できるように、インストルメントのホームページに表示する必要があります。xprofileをホームディレクトリに配置しようとします。しかし、私は実際にルートの下でvrontabを実行します。それがうまく機能する場合は、ユーザーの下で実行しようとします!(しかし、私はすでにうまく動作するcrontabをルートの下に持っています...)
ヴィルヘルムFrändberg11年

どうもありがとうございました!rootではなくユーザーの下でcrontabを実行することで解決しました。たぶん、.xprofileファイルも役立ったでしょう。ありがとうございました!
ヴィルヘルム・フレンベルク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.