Her 5 dakikada bir .sh


12

Japon uydusunun sunucusundan bir fotoğraf indirir ve bir arka plan resmi olarak ayarlar .sh komut dosyası var. Başlangıç ​​listesine koydum, ancak her 5 dakikada bir otomatik olarak nasıl çalıştırırım?


1
Cronmaker.com'u deneyin, orada cron-ifadeleri yapabilir ve crontab -e ile koyabilirsiniz
Biz Borg

2
Görüntü her 5 dakikada bir değişiyor mu? Hedef sunucuda gereksiz yükü azaltan bir aralık kullanmayı deneyin. Veya yalnızca dosya gerçekten değiştiyse indirdiğinizden emin olun.
til_b

1
Bu arada, uzay arka planlarının URL'si nedir?
bohdan_trotsenko

Yanıtlar:


14

Tembel seçenek

Eğer siz kolay bir yolunu arayan ve önlemek kümesine hangi ortam değişkeni bulmak için:

  • Senaryonuzun shebang içerdiğinden emin olun
  • Yürütülebilir yap
  • Başlangıç ​​Uygulamalarına aşağıdakileri ekleyin:

    /bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"

    Dash> Başlangıç ​​Uygulamaları> Ekle. Komutu ekleyin:

    /bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"

açıklama

Komut dosyasını kendi ortamınızdan çalıştırırsanız (örn. Bir terminal penceresinden veya Başlangıç ​​Uygulamalarından), bir dizi ortam değişkeni ayarlanır. cronancak betiğinizi sınırlı sayıda ortam değişkeni ile çalıştırır.
Komut dosyanız şüphesiz şu gsettingskomutu kullandığından :

gsettings get org.gnome.desktop.background picture-uri <wallpaper>

duvar kağıdını ayarlamak için, komut kesinlikle çalıştırıldığında kesilir cron.

"Tembel çözüm" in dezavantajı tamamen teoriktir. Sürekli olarak uyuyan bir komut sisteminiz için hiçbir şey ifade etmez .

İlave bilgi; alternatif olarak

Bu yazıyı okurken ve geçmişteki deneyimlerden, DBUS_SESSION_BUS_ADDRESSortam değişkeninin ayarlanması gerektiğinden eminim .

Bunu yapmak için betiğinizin başına (bölümün altına) aşağıdaki bölümü ekleyin:

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

O zaman başarılı bir şekilde çalıştırabilirsiniz cron.

Ancak koşuşturmayı çok iyi kaydedebilir ve tembel seçeneği seçebilirsiniz.


@AleksanderMahnyov Hoş geldiniz. Memnun oldum :)
Jacob Vlijm

2
Bir cron işi kullanmak çok daha iyi.
Luka Ramishvili

1
@LukaRamishvili Yorum için teşekkürler. Ancak: a. Ve neden böyle? uyku komutu sisteminiz için hiçbir şey ifade etmez . b. Seçeneği bile ekledim.
Jacob Vlijm

1
Aksi takdirde, gnome oturumu değişkenleri hakkında güzel bir araştırma, OP'ye çok yardımcı olacaktır, çünkü bu her iki şekilde de gerekli olacaktır.
Luka Ramishvili

2
Az önce baktım: cpu 0.0%Hangi vergiden bahsediyoruz?
Jacob Vlijm

25

Onu içine koy crontab.

Masanızı şu cronyolla açın :

crontab -e

Şimdi ekle:

*/5 * * * * /path/to/script.sh

Komut dosyasını önceden çalıştırılabilir yapmayı unutmayın.


Betiğiniz X'e bağlı DISPLAYolduğundan, betiğin ortamına eklemek için muhtemelen iyi bir fikir olacaktır :

*/5 * * * * DISPLAY=:0 /path/to/script.sh

:0Gerçek olanınızla değiştirin DISPLAY( echo $DISPLAYetkileşimli oturumdan bulunabilir).

Gerekirse, XAUTHORITYortam değişkenini de ekleyebilirsiniz :

*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh

Yine değeri bulabilirsiniz echo $XAUTHORITY.


1

1
@AleksanderMahnyov Lütfen betiği eklemek için sorunuzu düzenleyin , içeriği görmeden söylemesi zor ... DISPLAYXAUTHORITY
muhtemelen

1
@Kartagis Cron saniye işleyemez, ayrıca hala sözdizimsel olarak yanlış saatlerce yapmaya çalışıyorsunuz ..
heemayl

2
"Tembel yöntem" yerine bu yöntemi seviyorum, çünkü cron hakkında biliyordum, ama biraz tazeleme kursu gerekiyordu. Bu tam olarak yaptığım şey, çok teşekkürler! :)
ZaxLofful

2
Kabul edilen cevaptan daha iyi yaklaşım. :)
Sandeep Kumar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.