انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => انجمن عمومی => نویسنده: EnriqueTTE در 08 تیر 1400، 02:56 ب‌ظ

عنوان: مشکل با crontab
ارسال شده توسط: EnriqueTTE در 08 تیر 1400، 02:56 ب‌ظ
یه اسکریپت پایتون نوشتم که پس زمینه رو هر ۱۰ دقیقه تغییر میده، وقتی با crontab -e به کرون اضافه کردم کار نمیکنه

چیزی که نوشتم :
*/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 هم گذاشتم اما بازم کار نکرد
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: مرتضی . م در 08 تیر 1400، 03:14 ب‌ظ
خود اسکریپت پایتونت رو اجرا میکنی پس زمینه تغییری میکنه؟
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 08 تیر 1400، 03:57 ب‌ظ
خود اسکریپت پایتونت رو اجرا میکنی پس زمینه تغییری میکنه؟
آره تغییر میکنه.
چند بار امتحان کردم و به درستی کار میکنه.
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: دانیال بهزادی در 08 تیر 1400، 04:08 ب‌ظ
اوه. تو پایتون نباید با system مقدارهای gsettings رو تعییر بدی؛ باید از Gio استفاده کنی.
from gi.repository import Gio
background = Gio.Settings.new('org.gnome.desktop.background')
background.set_string('picture-uri', '/path/to/file')

بعد مطمئن شو که پرونده‌ات، دسترسی اجرا شدن داره.
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 08 تیر 1400، 04:58 ب‌ظ
اوه. تو پایتون نباید با system مقدارهای gsettings رو تعییر بدی؛ باید از Gio استفاده کنی.
from gi.repository import Gio
background = Gio.Settings.new('org.gnome.desktop.background')
background.set_string('picture-uri', '/path/to/file')

بعد مطمئن شو که پرونده‌ات، دسترسی اجرا شدن داره.

این کد رو از استک اورفلو برداشتم، دسترسی اجرا رو با chmod +x بهش داده بودم و برای اطمینان دوباره هم زدم!

یبار گذاشتم روی یک دقیقه تا چیزی که گفتید رو تست کنم اما تغییری نکرد(عدد رو اینجوری گداشتم */1) تا جایی که از استک اور فلو دیدم عدد بعد از "/"به معنی تقسیم نیست، یعنی همون عدد برحسب دقیقه(اگر */15 باشه یعنی هر ۱۵ دقیقه) درسته یا من اشتباه برداشت کردم ؟

این هم کد :
#! /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
ارسال شده توسط: EnriqueTTE در 11 تیر 1400، 02:43 ب‌ظ
دوستان نظری ندارید؟
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: دانیال بهزادی در 12 تیر 1400، 05:06 ق‌ظ
یه بار با nohup و یه بار با at اجراش کن. ببین اجرا می‌شن یا نه و اگه اچرا نمی‌شن، خروجی‌هاشون چیه؟
یه بار هم یه کدنوشتهٔ ساده‌تر در حد ساختن یه شاخه رو تو کرون امتحان کن، ببین کرون مشکل نداشته باشه…

عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: vegetarian در 12 تیر 1400، 07:25 ق‌ظ
یه اسکریپت پایتون نوشتم که پس زمینه رو هر ۱۰ دقیقه تغییر میده، وقتی با crontab -e به کرون اضافه کردم کار نمیکنه

چیزی که نوشتم :
*/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 هم گذاشتم اما بازم کار نکرد
اینجا : https://stackoverflow.com/questions/8727935/execute-python-script-via-crontab
گفته که باید اینطوری تو crontab قرارش بدی :
*/10 * * * * /usr/bin/python script.pyشما همونطوری که آقای بهزادی گفتن اول یه اسکریپت ساده تر مثلا ایجاد یه پوشه یا یه فایل رو درست کن بزار ببین کار میکنه اگه کار کرد ولی اسکریپت شما کار نکرد خب حتما مشکل بر میگرده به اجرای اسکریپت در crontab
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 12 تیر 1400، 08:56 ق‌ظ
توی این صفحه نوشته بود که 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
یه فایل هم درست کردم برای تست که فقط این دستور رو داشت os.mkdir('testdir') ، که این پیام براش اومده، در حالی که دایرکتوری testdir اصلا ایجاد نشده.
با خودم گفتم شاید کنار فایل اجرایی کرون، دایرکتوری رو ساخته باشه پس با whereis crontab چک کردم که کجاست و با ls PATH | grep 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
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 12 تیر 1400، 08:59 ق‌ظ
اگه منظور از nohup این دستور بوده با mail زیر روبرو شدم
* * * * * /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

با at فایل ساخت دایرکتوری کار میکنه:
-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

فایل تغییر عکس پس زمینه هم کار میکنه
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: مرتضی . م در 12 تیر 1400، 12:10 ب‌ظ
والا من زیاد با کرون کار نکردم واسه همین تو این زمینه نمیتونم کمکی کنم
ولی یه چیز جایگزین که به ذهنم میرسه اینه که با استفاده از دستور sleep بگی ۱ دقیقه خود برنامه توقف کنه بعد حلقه رو اجرا کنه بعد هم میتونی اون اسکریپت رو بزاری تو autostart
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 12 تیر 1400، 12:28 ب‌ظ
والا من زیاد با کرون کار نکردم واسه همین تو این زمینه نمیتونم کمکی کنم
ولی یه چیز جایگزین که به ذهنم میرسه اینه که با استفاده از دستور sleep بگی ۱ دقیقه خود برنامه توقف کنه بعد حلقه رو اجرا کنه بعد هم میتونی اون اسکریپت رو بزاری تو autostart
با خودم گفتم یه همچین کاری بکنم ولی بیشتر دوست دارم از روش لینوکسی انجامش بدم. خیلی ممنون از پیشنهادت.
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: مرتضی . م در 12 تیر 1400، 01:55 ب‌ظ
/10 رو میخوای بردار ببین هر دقیقه تعویض میکنه یا نه؟
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: Dragon- در 12 تیر 1400، 06:33 ب‌ظ
اسکریپت رو با bash بنویسید. شاید اینجوری کار کنه.
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 12 تیر 1400، 06:43 ب‌ظ
/10 رو میخوای بردار ببین هر دقیقه تعویض میکنه یا نه؟
کار نمیکنه.
اسکریپت رو با bash بنویسید. شاید اینجوری کار کنه.
bash بلد نیستم، دوست دارم با پایتون کارمو انجام بدم.
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: esmaeelE در 12 تیر 1400، 08:17 ب‌ظ
به راهنمایی‌ها توجه داشته باشید.
خیلی وقت‌ها نمیشه یک ضرب به نتیجه برسید.

ابتدا بررسی کنید سیستم cron کار می‌کند یا نه؟

پیش از هر چیز باید یک برنامه ساده پایتون را با این روش اجرا کنید

محتویات زیر را پس از اجرای crontab -e وارد کنید.
*/1 * * * * echo "print(\"salam\")" | /usr/bin/python3  >> /tmp/hello.log
مانیتور لاگ‌ها کرون
sudo tail -f /var/log/syslog | grep CRON
خروجی برنامه پایتون در فایل زیر خواهد رفت
tail -f  /tmp/hello.logبا اجرای کرون هر دقیقه یک خط salam در فایل نوشته می‌شود.

در صورت موفق آمیز بودن اجرای کرون، صحت خود اسکریپت را بررسی کنید.

عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 12 تیر 1400، 08:40 ب‌ظ
با اجرای کرون هر دقیقه یک خط 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)}')
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: esmaeelE در 12 تیر 1400، 08:58 ب‌ظ
شاید مشکل از تغییر تصویر با دستور gsettings در cron است.

کامنت این پاسخ را ببینید.
https://askubuntu.com/a/510135/678872

عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 12 تیر 1400، 09:09 ب‌ظ
شاید مشکل از تغییر تصویر با دستور gsettings در cron است.

کامنت این پاسخ را ببینید.
https://askubuntu.com/a/510135/678872
این با bash نوشته چجوری با پایتون پیاده سازی کنم؟ از os.system استفاده کنم یا راه جایگزین داره ؟
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: دانیال بهزادی در 13 تیر 1400، 04:00 ب‌ظ
توی این صفحه نوشته بود که 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
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 13 تیر 1400، 07:52 ب‌ظ
حق داره. چون وقتی با کرون اجرا می‌شه، میزکاری وجود نداره که پس‌زمینه‌اش رو عوض کنه.
کرون رو به یه چنین چیزی تغییر بده ببین چه‌طور می‌شه؟
*/10 * * * * export DISPLAY=:0.0; /usr/bin/xhost +; /home/smjt2000/Programming/Projects/1_top/change-bg.py
این کار رو هم کردم ولی بازم نشد.
خودم که فایل رو اجرا میکنم کار میکنه ولی این خط توی ترمینال نمایش داده میشه : access control disabled, clients can connect from any host
 یه سرچ زدم و با دستور xhost دیدم فقط smjt200 که کاربر اصلی هست رو داره، روت رو اضافه کردم و ازون به بعد بدون اون پیام کار میکرد اما همچنان با کرون کار نمیکنه.
عنوان: پاسخ : مشکل با crontab
ارسال شده توسط: EnriqueTTE در 13 تیر 1400، 10:46 ب‌ظ
بنظر میاد هردفه که لپ تاپ رو روشن میکنم کرون اجرا میشه اما دیگه ادامه نمیده.