Saya mencoba mengubah wallpaper saya menjadi gambar acak menggunakan skrip yang disarankan Indrajith Indraprastham di sini: Bagaimana cara mengubah latar belakang desktop dari baris perintah di Unity?
Ketika saya menjalankan skrip dari jendela terminal, bg berubah dengan baik, tetapi ketika dijalankan dari cron, saya mengirimkan kesalahan ini:
(proses: 21901): dconf-PERINGATAN **: gagal melakukan perubahan pada dconf: Kesalahan pemunculan baris perintah 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 - biner-sintaks --close-stderr': Proses anak keluar dengan kode 1
Saya sangat menghargai saran apa pun.
Jawaban:
Mengedit gsettings dari cron; variabel lingkungan yang hilang
Jika Anda menjalankan skrip dari lingkungan Anda sendiri (misalnya dari jendela terminal atau dari Aplikasi Startup), sejumlah variabel lingkungan akan ditetapkan.
cron
namun menjalankan skrip Anda dengan variabel lingkungan terbatas.Agar
gsettings
berhasil dieditcron
, Anda perlu mengaturDBUS_SESSION_BUS_ADDRESS
variabel lingkungan. Anda dapat melakukannya dengan menambahkan dua baris ke skrip Anda, seperti yang dijelaskan di sini (dan di bawah).Script Anda, termasuk mengatur variabel yang diperlukan
Script dari sini , diedit untuk memasukkan
DBUS_SESSION_BUS_ADDRESS
variabel lingkungan, kemudian menjadi:Terkait: Menjalankan .sh setiap 5 menit
sumber
PID=$(pgrep -f 'gnome-session' | head -n1)
!DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
dengan$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
Karena grep juga mendapatkan nama variabel. sumberpgrep gnome-session
dapat mengembalikan lebih dari satu pid jika beberapa pengguna masuk ke sistem (setiap sesi berjalan gnome). MungkinEUID=$(id --real --user)
danPID=$(pgrep --euid $EUID gnome-session)
akan menjadi cara untuk mendapatkan hanya PID yang terkait dengan sesi gnome pengguna saat ini.