Program baris perintah “import” ImageMagick gagal mengambil tangkapan layar dari skrip CRON

0

Halo saya menulis skrip baris perintah sederhana yang seharusnya mengambil tangkapan layar saya setiap 5 menit.

(menggunakan program "impor" ImageMagick)

di sini adalah skrip (shottr.sh):

#! / bin / sh

PTH="/home/username/images"
NM=`date +%j`_`date +"%F %k:%M"`

/usr/bin/import -window root -resize 1024 "$PTH/$NM.png" &
echo "Screenshot" | festival --tts &

ini berfungsi dengan baik jika saya mengeksekusi dengan tangan yaitu:

# ./shottr.sh

atau

#sh shottr.sh

cron diatur seperti ini:

* / 5 * * * * / bin / sh /home/username/scripts/shottr.sh

skrip itu sendiri sedang dieksekusi (saya mendengar suara berkata: "Screenshot") tetapi tangkapan layar yang sebenarnya tidak diambil.

PS: Yakinlah bahwa itu BUKAN masalah izin (saya menempatkan doa "sentuhan" sederhana dan file dibuat)

mungkin jika dijalankan dari cron ... tidak memiliki "jendela" sehingga tidak dapat mengambil tangkapan layar entah dari mana ?? Jika itu masalahnya, lalu bagaimana saya bisa mengatasinya?

bakytn
sumber
Ya, doa dari cron kemungkinan besar menjadi masalah di sini.
Sven
Ada yang tahu apa solusinya? Saya perlu mengambil tangkapan layar setiap 5 menit
apa yang terjadi jika hanya untuk tes yang Anda atur NM = test, hanya untuk memastikan itu bukan masalah dengan perintah tanggal Anda.
pablo
Tapi itu berhasil jika saya memohon dengan tangan. Namun saya menguji seperti yang Anda katakan dan tidak ada ...
String tanggal Anda dapat disederhanakan menjadi: NM=$(date "+%j_%F %k:%M")(tidak perlu berjalan datedua kali). Menempatkan nomor hari Julian pertama reruntuhan sortability dari nama file dan Anda mungkin ingin mempertimbangkan untuk tidak memasukkan spasi.
Dennis Williamson

Jawaban:

8

Saat Anda menjalankan skrip crondarinya, ia tidak memiliki akses ke DISPLAYvariabel lingkungan Anda , yang menunjukkan bagaimana X11 menampilkan apa yang berinteraksi. Anda mungkin bisa membuatnya bekerja dengan menambahkan yang berikut ke skrip Anda:

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

Ini mengasumsikan bahwa Anda DISPLAYselalu :0, yang benar jika Anda masuk pada konsol tetapi tidak benar jika Anda menjalankan X jarak jauh.

larsks
sumber
Oh man you ROCk! Ini berhasil! Kamu keren. PS: Hai semuanya tolong beri suara!
@bakytn, jika jawaban ini menyelesaikan masalah Anda, Anda harus menerimanya (klik kotak centang di sebelah kiri). Terima kasih!
larsks