*/10 * * * * /home/smjt2000/Programming/Projects/1_top/change-bg.py
اسکریپت پایتون :#! /usr/bin/python3
import os,random
images=os.listdir('/home/smjt2000/Pictures/Wallpapers/')
os.system(f"/usr/bin/gsettings set org.gnome.desktop.background picture-uri /home/smjt2000/Pictures/Wallpapers/{random.choice(images)}")
خود اسکریپت پایتونت رو اجرا میکنی پس زمینه تغییری میکنه؟آره تغییر میکنه.
from gi.repository import Gio
background = Gio.Settings.new('org.gnome.desktop.background')
background.set_string('picture-uri', '/path/to/file')
اوه. تو پایتون نباید با system مقدارهای gsettings رو تعییر بدی؛ باید از Gio استفاده کنی.کد: [انتخاب]from gi.repository import Gio
background = Gio.Settings.new('org.gnome.desktop.background')
background.set_string('picture-uri', '/path/to/file')
بعد مطمئن شو که پروندهات، دسترسی اجرا شدن داره.
#! /usr/bin/python3
import random
from gi.repository import Gio
images=os.listdir('/home/smjt2000/Pictures/Wallpapers/')
background = Gio.Settings.new('org.gnome.desktop.background')
background.set_string('picture-uri', f'/home/smjt2000/Pictures/Wallpapers/{random.choice(images)}')
یه اسکریپت پایتون نوشتم که پس زمینه رو هر ۱۰ دقیقه تغییر میده، وقتی با crontab -e به کرون اضافه کردم کار نمیکنهاینجا : https://stackoverflow.com/questions/8727935/execute-python-script-via-crontab
چیزی که نوشتم :کد: [انتخاب]*/10 * * * * /home/smjt2000/Programming/Projects/1_top/change-bg.py
اسکریپت پایتون :کد: [انتخاب]#! /usr/bin/python3
import os,random
images=os.listdir('/home/smjt2000/Pictures/Wallpapers/')
os.system(f"/usr/bin/gsettings set org.gnome.desktop.background picture-uri /home/smjt2000/Pictures/Wallpapers/{random.choice(images)}")
قبل آدرس فایل python3 هم گذاشتم اما بازم کار نکرد
*/10 * * * * /usr/bin/python script.py
شما همونطوری که آقای بهزادی گفتن اول یه اسکریپت ساده تر مثلا ایجاد یه پوشه یا یه فایل رو درست کن بزار ببین کار میکنه اگه کار کرد ولی اسکریپت شما کار نکرد خب حتما مشکل بر میگرده به اجرای اسکریپت در crontab
Return-Path: <smjt2000@Enriquette>
X-Original-To: smjt2000
Delivered-To: smjt2000@Enriquette
Received: by Enriquette (Postfix, from userid 1000)
id 0DE3223EFE4; Tue, 29 Jun 2021 14:48:02 +0430 (+0430)
From: root@Enriquette (Cron Daemon)
To: smjt2000@Enriquette
Subject: Cron <smjt2000@Enriquette> python3 /home/smjt2000/Programming/Projects/1_top/change-bg.py
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/smjt2000>
X-Cron-Env: <LOGNAME=smjt2000>
Message-Id: <20210629101802.0DE3223EFE4@Enriquette>
Date: Tue, 29 Jun 2021 14:48:02 +0430 (+0430)
X-UID: 6
Status: O
(process:13407): dconf-WARNING **: 14:48:02.013: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
یه فایل هم درست کردم برای تست که فقط این دستور رو داشت os.mkdir('testdir') ، که این پیام براش اومده، در حالی که دایرکتوری testdir اصلا ایجاد نشده.Return-Path: <smjt2000@Enriquette>
X-Original-To: smjt2000
Delivered-To: smjt2000@Enriquette
Received: by Enriquette (Postfix, from userid 1000)
id 7633F23F1B6; Sat, 3 Jul 2021 08:39:01 +0430 (+0430)
From: root@Enriquette (Cron Daemon)
To: smjt2000@Enriquette
Subject: Cron <smjt2000@Enriquette> /usr/bin/python3 /home/smjt2000/Programming/Projects/Python/test.py
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/smjt2000>
X-Cron-Env: <LOGNAME=smjt2000>
Message-Id: <20210703040901.7633F23F1B6@Enriquette>
Date: Sat, 3 Jul 2021 08:39:01 +0430 (+0430)
Traceback (most recent call last):
File "/home/smjt2000/Programming/Projects/Python/test.py", line 3, in <module>
os.mkdir('testdir')
FileExistsError: [Errno 17] File exists: 'testdir
* * * * * /usr/bin/pyton3 nohup /PATH/TO/SCRIPT[code][code]
Return-Path: <smjt2000@Enriquette>
X-Original-To: smjt2000
Delivered-To: smjt2000@Enriquette
Received: by Enriquette (Postfix, from userid 1000)
id C14C723F1B6; Sat, 3 Jul 2021 08:55:01 +0430 (+0430)
From: root@Enriquette (Cron Daemon)
To: smjt2000@Enriquette
Subject: Cron <smjt2000@Enriquette> /usr/bin/python3 nohup /home/smjt2000/Programming/Projects/Python/test.py
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/smjt2000>
X-Cron-Env: <LOGNAME=smjt2000>
Message-Id: <20210703042501.C14C723F1B6@Enriquette>
Date: Sat, 3 Jul 2021 08:55:01 +0430 (+0430)
X-UID: 128
Status: O
/usr/bin/python3: can't open file '/home/smjt2000/nohup': [Errno 2] No such file or directory
-smjt2000@Enriquette Python
➜ at 09:09
warning: commands will be executed using /bin/sh
at> python3 /home/smjt2000/Programming/Projects/Python/test.py
at> <EOT>
job 3 at Sat Jul 3 09:09:00 2021
والا من زیاد با کرون کار نکردم واسه همین تو این زمینه نمیتونم کمکی کنمبا خودم گفتم یه همچین کاری بکنم ولی بیشتر دوست دارم از روش لینوکسی انجامش بدم. خیلی ممنون از پیشنهادت.
ولی یه چیز جایگزین که به ذهنم میرسه اینه که با استفاده از دستور sleep بگی ۱ دقیقه خود برنامه توقف کنه بعد حلقه رو اجرا کنه بعد هم میتونی اون اسکریپت رو بزاری تو autostart
/10 رو میخوای بردار ببین هر دقیقه تعویض میکنه یا نه؟کار نمیکنه.
اسکریپت رو با bash بنویسید. شاید اینجوری کار کنه.bash بلد نیستم، دوست دارم با پایتون کارمو انجام بدم.
*/1 * * * * echo "print(\"salam\")" | /usr/bin/python3 >> /tmp/hello.log
sudo tail -f /var/log/syslog | grep CRON
tail -f /tmp/hello.log
با اجرای کرون هر دقیقه یک خط salam در فایل نوشته میشود.با اجرای کرون هر دقیقه یک خط salam در فایل نوشته میشود.
در صورت موفق آمیز بودن اجرای کرون، صحت خود اسکریپت را بررسی کنید.
*/10 * * * * /usr/bin/python3 /home/smjt2000/Programming/Projects/1_top/change-bg.py
اینم فایل پایتون#! /usr/bin/python3
import random,os
from gi.repository import Gio
images=os.listdir('/home/smjt2000/Pictures/Wallpapers/')
background = Gio.Settings.new('org.gnome.desktop.background')
background.set_string('picture-uri', f'/home/smjt2000/Pictures/Wallpapers/{random.choice(images)}')
شاید مشکل از تغییر تصویر با دستور gsettings در cron است.این با bash نوشته چجوری با پایتون پیاده سازی کنم؟ از os.system استفاده کنم یا راه جایگزین داره ؟
کامنت این پاسخ را ببینید.https://askubuntu.com/a/510135/678872
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
توی این صفحه نوشته بود که mail رو چک کنخط آخر رو بخون:
https://unix.stackexchange.com/questions/585701/use-crontab-to-invoke-nohup-in-script (https://unix.stackexchange.com/questions/585701/use-crontab-to-invoke-nohup-in-script)
چک کردم و دیدم کلی پیام هست : U 84 Cron Daemon Sat Jul 3 08:18 24/860 Cron <smjt2000@Enriquette
یکیش رو باز کردم و این نوشته بودکد: [انتخاب]Return-Path: <smjt2000@Enriquette>
X-Original-To: smjt2000
Delivered-To: smjt2000@Enriquette
Received: by Enriquette (Postfix, from userid 1000)
id 0DE3223EFE4; Tue, 29 Jun 2021 14:48:02 +0430 (+0430)
From: root@Enriquette (Cron Daemon)
To: smjt2000@Enriquette
Subject: Cron <smjt2000@Enriquette> python3 /home/smjt2000/Programming/Projects/1_top/change-bg.py
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/smjt2000>
X-Cron-Env: <LOGNAME=smjt2000>
Message-Id: <20210629101802.0DE3223EFE4@Enriquette>
Date: Tue, 29 Jun 2021 14:48:02 +0430 (+0430)
X-UID: 6
Status: O
(process:13407): dconf-WARNING **: 14:48:02.013: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
(process:13407): dconf-WARNING **: 14:48:02.013: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
*/10 * * * * export DISPLAY=:0.0; /usr/bin/xhost +; /home/smjt2000/Programming/Projects/1_top/change-bg.py
حق داره. چون وقتی با کرون اجرا میشه، میزکاری وجود نداره که پسزمینهاش رو عوض کنه.این کار رو هم کردم ولی بازم نشد.
کرون رو به یه چنین چیزی تغییر بده ببین چهطور میشه؟کد: [انتخاب]*/10 * * * * export DISPLAY=:0.0; /usr/bin/xhost +; /home/smjt2000/Programming/Projects/1_top/change-bg.py