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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید




نویسنده موضوع: مشکل با crontab  (دفعات بازدید: 1230 بار)

0 کاربر و 3 مهمان درحال مشاهده موضوع.

آفلاین EnriqueTTE

  • High Sr. Member
  • *
  • ارسال: 607
  • جنسیت : پسر
مشکل با crontab
« : 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 هم گذاشتم اما بازم کار نکرد
I am Enriquette

آفلاین مرتضی . م

  • High Hero Member
  • *
  • ارسال: 1116
پاسخ : مشکل با crontab
« پاسخ #1 : 08 تیر 1400، 03:14 ب‌ظ »
خود اسکریپت پایتونت رو اجرا میکنی پس زمینه تغییری میکنه؟

آفلاین EnriqueTTE

  • High Sr. Member
  • *
  • ارسال: 607
  • جنسیت : پسر
پاسخ : مشکل با crontab
« پاسخ #2 : 08 تیر 1400، 03:57 ب‌ظ »
خود اسکریپت پایتونت رو اجرا میکنی پس زمینه تغییری میکنه؟
آره تغییر میکنه.
چند بار امتحان کردم و به درستی کار میکنه.
I am Enriquette

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19688
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : مشکل با crontab
« پاسخ #3 : 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')

بعد مطمئن شو که پرونده‌ات، دسترسی اجرا شدن داره.
« آخرین ویرایش: 08 تیر 1400، 04:13 ب‌ظ توسط دانیال بهزادی »
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین EnriqueTTE

  • High Sr. Member
  • *
  • ارسال: 607
  • جنسیت : پسر
پاسخ : مشکل با crontab
« پاسخ #4 : 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)}')
I am Enriquette

آفلاین EnriqueTTE

  • High Sr. Member
  • *
  • ارسال: 607
  • جنسیت : پسر
پاسخ : مشکل با crontab
« پاسخ #5 : 11 تیر 1400، 02:43 ب‌ظ »
دوستان نظری ندارید؟
I am Enriquette

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19688
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : مشکل با crontab
« پاسخ #6 : 12 تیر 1400، 05:06 ق‌ظ »
یه بار با nohup و یه بار با at اجراش کن. ببین اجرا می‌شن یا نه و اگه اچرا نمی‌شن، خروجی‌هاشون چیه؟
یه بار هم یه کدنوشتهٔ ساده‌تر در حد ساختن یه شاخه رو تو کرون امتحان کن، ببین کرون مشکل نداشته باشه…

اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین vegetarian

  • Sr. Member
  • *
  • ارسال: 405
  • جنسیت : پسر
  • سیستم عامل : ننه اوبونتو
پاسخ : مشکل با crontab
« پاسخ #7 : 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
دوره lpic1 آقای پیمان هوشمندی راد برای علاقه مندان به لینوکس (مجانی):
https://forum.ubuntu-ir.org/index.php?topic=152339.0

آفلاین EnriqueTTE

  • High Sr. Member
  • *
  • ارسال: 607
  • جنسیت : پسر
پاسخ : مشکل با crontab
« پاسخ #8 : 12 تیر 1400، 08:56 ق‌ظ »
توی این صفحه نوشته بود که mail رو چک کن
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
I am Enriquette

آفلاین EnriqueTTE

  • High Sr. Member
  • *
  • ارسال: 607
  • جنسیت : پسر
پاسخ : مشکل با crontab
« پاسخ #9 : 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

فایل تغییر عکس پس زمینه هم کار میکنه
« آخرین ویرایش: 12 تیر 1400، 09:31 ق‌ظ توسط EnriqueTTE »
I am Enriquette

آفلاین مرتضی . م

  • High Hero Member
  • *
  • ارسال: 1116
پاسخ : مشکل با crontab
« پاسخ #10 : 12 تیر 1400، 12:10 ب‌ظ »
والا من زیاد با کرون کار نکردم واسه همین تو این زمینه نمیتونم کمکی کنم
ولی یه چیز جایگزین که به ذهنم میرسه اینه که با استفاده از دستور sleep بگی ۱ دقیقه خود برنامه توقف کنه بعد حلقه رو اجرا کنه بعد هم میتونی اون اسکریپت رو بزاری تو autostart

آفلاین EnriqueTTE

  • High Sr. Member
  • *
  • ارسال: 607
  • جنسیت : پسر
پاسخ : مشکل با crontab
« پاسخ #11 : 12 تیر 1400، 12:28 ب‌ظ »
والا من زیاد با کرون کار نکردم واسه همین تو این زمینه نمیتونم کمکی کنم
ولی یه چیز جایگزین که به ذهنم میرسه اینه که با استفاده از دستور sleep بگی ۱ دقیقه خود برنامه توقف کنه بعد حلقه رو اجرا کنه بعد هم میتونی اون اسکریپت رو بزاری تو autostart
با خودم گفتم یه همچین کاری بکنم ولی بیشتر دوست دارم از روش لینوکسی انجامش بدم. خیلی ممنون از پیشنهادت.
I am Enriquette

آفلاین مرتضی . م

  • High Hero Member
  • *
  • ارسال: 1116
پاسخ : مشکل با crontab
« پاسخ #12 : 12 تیر 1400، 01:55 ب‌ظ »
/10 رو میخوای بردار ببین هر دقیقه تعویض میکنه یا نه؟

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : مشکل با crontab
« پاسخ #13 : 12 تیر 1400، 06:33 ب‌ظ »
اسکریپت رو با bash بنویسید. شاید اینجوری کار کنه.
میدونید که زکات علم نشر آن است

آفلاین EnriqueTTE

  • High Sr. Member
  • *
  • ارسال: 607
  • جنسیت : پسر
پاسخ : مشکل با crontab
« پاسخ #14 : 12 تیر 1400، 06:43 ب‌ظ »
/10 رو میخوای بردار ببین هر دقیقه تعویض میکنه یا نه؟
کار نمیکنه.
اسکریپت رو با bash بنویسید. شاید اینجوری کار کنه.
bash بلد نیستم، دوست دارم با پایتون کارمو انجام بدم.
I am Enriquette