Her saat CZK. Hizmeti başlatma ve durdurma. Mevcut kullanıcı cron girişlerini düzenleme

  • 18.06.2019

MIN SAAT DOM MON DOW CMD

Tablo: Crontab Alanları ve Geçerli Aralıklar (Linux Crontab Sözdizimi)

1. Belirli bir süre için zamanlama görevleri

Cron'un ana kullanımı, aşağıda gösterildiği gibi belirli zamanlarda görevleri yürütmektir. Bu, tam yedekleme komut dosyasını 10 Haziran sabah 8:30'da yürütür.

Lütfen saat alanının 24 saat biçimini kullandığını unutmayın, bu nedenle sabah 8'de 8, akşam 8'de 20 saattir.

30 08 10 06 * / ana sayfa / geliştirici / tam yedekleme

  • 30 - 30. dakika
  • 08 - 08 AM
  • 10 - 10. gün
  • * - Haftanın her günü

2. Görevleri daha sık yürütmek için planlayın (örneğin, günde iki kez)

Aşağıdaki komut dosyası, her gün günde iki kez ek bir yedekleme kullanır. Bu örnek, her gün 11:00 ve 16:00'da artımlı yedekleme gerçekleştirir. Alandaki virgülle ayrılmış değerler, komutun belirtilen her zamanda yürütülmesi gerektiğini gösterir.

00 11.16 * * * / ana sayfa / geliştirici / bin / artımlı yedekleme

00 - 0. dakika (saat başı) 11, 16 - 11 ve 16 saat * - her gün * - her ay * - haftanın her günü

3. Belirli bir zaman aralığındaki çalışma takvimi (örneğin, sadece hafta içi)

Alt rutinlerin her saat belirli bir zaman aralığında yürütülmesini istiyorsanız, aşağıdakileri kullanın.

İş saatlerinde her gün için Cron rutini

Bu örnek, veritabanının durumunu her gün (hafta sonları dahil) çalışma saatleri boyunca sabah 9'dan akşam 6'ya kadar kontrol eder.

00 09-18 * * * / ana sayfa / geliştirici / bin / check-db-status

00 - 0. dakika (saat başı) 09-18 - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (saat) * - her gün * - her ay * - günün her günü hafta

İş saatlerinde her iş günü için Cron rutini

Bu örnek, veritabanının durumunu her iş günü (Cumartesi ve Pazar hariç) sabah 9'dan akşam 6'ya kadar kontrol eder.

00 09-18 * * 1-5 / ana sayfa / ramesh / bin / check-db-status

00 - 0. dakika (saat başı) 09-18 - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (saat) * - her gün * - her ay 1-5 - Pazartesi, Salı, Çarşamba, Perşembe ve Cuma (her hafta)

4. Crontab girişlerini nasıl görüntüleyebilirim?

Kullanıcının mevcut Crontab dosyalarını görüntüleyin.

Unix hesabınızdan crontab-l dosyalarınızı görüntülemek için aşağıdakileri yapın.

[e-posta korumalı]$ crontab -l @yearly / ev / geliştirici / yıllık bakım * / 10 * * * * / ev / geliştirici / kontrol-disk alanı

Kök crontab girişlerini görüntüleme

Kök kullanıcı (su - root) olarak oturum açın ve aşağıda gösterildiği gibi crontab-l'yi çalıştırın.

[e-posta korumalı]# crontab -l root için crontab yok

Diğer kullanıcıların dosyalarını görüntülemek için root olarak giriş yapın ve aşağıda gösterildiği gibi -u (kullanıcı adı) -l kullanın.

[e-posta korumalı]# crontab -u kullanıcı adı -l @aylık / ev / kullanıcı adı / aylık yedekleme 00 09-18 * * * / ana sayfa / kullanıcı adı / check-db-status

5. crontab girişlerini nasıl düzenlerim?

Mevcut kullanıcı cron kayıtlarını düzenleme.

Girişleri düzenlemek için aşağıda gösterildiği gibi cronab -e kullanın. Varsayılan olarak, kullanıcının mevcut crontab girişleri düzenlenecektir.

[e-posta korumalı]$ crontab -e @yıllık / ev / geliştirici / centos / bin / yıllık-bakım * / 10 * * * * / ev / geliştirici / debian / bin / check-disk-space ~ "/tmp/crontab.XXXXyjWkHw" 2L, 83C

Dosyayı kaydettiğinizde, crontab'ı kaydedecek ve crontab'ın başarıyla değiştirildiğini söyleyen sonraki mesajı görüntüleyecektir.

~ "crontab.XXXXyjWkHw" 2L, 83C crontab yazılı: yeni crontab yükleme

Kök crontab girişlerini düzenleme

Kök kullanıcı (su - root) olarak oturum açın ve aşağıda gösterildiği gibi crontab -e yapın.

[e-posta korumalı]# crontab -e

Başka bir kullanıcının crontab girişlerini düzenleme

Başka bir Linux kullanıcısının crontab girişini düzenlemek için, root olarak oturum açın ve aşağıda gösterildiği gibi -u (kullanıcı adı) –e kullanın.

[e-posta korumalı]# crontab -u kullanıcı adı -e @aylık / ev / kullanıcı adı / fedora / bin / aylık yedekleme 00 09-18 * * * / ev / kullanıcı adı / ubuntu / bin / check-db-status ~ ~ ~ "/ tmp / crontab .XXXXyjWkHw "2L, 83C

6. Her dakika Cron'u yürütmek

İdeal olarak, her dakika çalışacak bir cron programlamanız gerekmeyebilir. Ancak bu örneği anlamak, bu makalede açıklanan diğer örnekleri anlamanıza yardımcı olacaktır.

Bash * * * * * CMD

* - olası bir birim anlamına gelir - yani, yıl boyunca her saatin her dakikası. Ayrıca, doğrudan * kullanmak aşağıdaki örneklerde daha kullanışlı bir özellik olacaktır.

Dakika alanında * / 5 belirtilmesi her 5 dakikada bir anlamına gelir. Dakika alanında 0-10 / 2 belirtilmesi, ilk 10 dakikada her 2 dakikada bir anlamına gelir. Böylece bu konvansiyon 4 alanda da kullanılabilir.

7. Her 10 dakikada bir arka plandaki Cron görevlerini çalıştırın

Her 10 dakikada bir disk alanını kontrol etmek istiyorsanız aşağıdakileri kullanın.

* / 10 * * * * / ana sayfa / ramesh / disk alanını kontrol et

Bu görev, belirtilen kontrol diski komutunu yıl boyunca her 10 dakikada bir çalıştırır. Ancak, yalnızca çalışma saatlerinde kontrol etmeniz gerekebilir veya bunun tersi de olabilir. Yukarıdaki örnekler bunun nasıl yapılacağını göstermektedir.

5 alanda değer belirtmek yerine aşağıda gösterildiği gibi bir anahtar kelime kullanarak belirtebiliriz.

5 alan yerine @ ve ardından anahtar kelimeyi kullanabileceğiniz özel koşullar vardır - yeniden başlatma, gece yarısı, yıllık, saatlik gibi.

Özel Cron anahtar kelimeleri ve anlamları

8. @yearly kullanarak her yılın ilk dakikasını planlayın

Eğer cron görevinin her yılın ilk dakikalarında çalışmasını istiyorsanız aşağıda gösterildiği gibi @yearly anahtar sözcüğünü kullanabilirsiniz. Yığında, sistem her yıl 1 Ocak 00:00'da yıllık bakım komut dosyasını kullanarak yıllık bakım gerçekleştirecektir.

@yearly / ana sayfa / geliştirici / red-hat / bin / yıllık bakım

9. @monthly anahtar sözcüğünü kullanarak görevleri her ay çalıştırın

Yukarıdaki @yearly ile benzerdir. Ancak komut aylık olarak yürütülür. Ekip her ayın ilk günü 00:00'da yedeklenecektir.

@aylık / ana sayfa / ramesh / suse / bin / teyp yedekleme

10. @daily kullanarak her gün görevleri çalıştırın

@daily anahtar sözcüğünü kullanmak, her gün 00:00'da her gün bir temizleme günlüğü dosyası oluşturur.

@daily / home / geliştirici / arch-linux / bin / temizleme günlükleri "gün başladı"

11. @reboot kullanarak her yeniden başlatmadan sonra Linux komutu nasıl çalıştırılır?

@reboot anahtar sözcüğünü kullanarak, sistem her önyüklendiğinde belirtilen komut yürütülür.

@CMD'yi yeniden başlat

13. 12. MAIL anahtar sözcüğünü kullanarak Crontab giden postalarını nasıl devre dışı bırakabilir / yeniden yönlendirebilirim?

Varsayılan olarak, crontab, görevi yükleyen kullanıcıya çıktı görevleri gönderir. Bunları başka bir kullanıcıya yönlendirmek istiyorsanız, aşağıda gösterildiği gibi crontab'daki MAIL değişkenini ekleyin veya güncelleyin.

[e-posta korumalı]$ crontab -l MAIL = "geliştirici" @yearly / ev / geliştirici / yıllık bakım * / 10 * * * * / ev / geliştirici / kontrol-disk alanı

Postanın gönderilmesini hiç engellemek istiyorsanız, yani çıktı crontab dosyalarını göndermeyi durdurmak istiyorsanız, aşağıda gösterildiği gibi crontab'a MAIL değişkenini ekleyin veya güncelleyin.

13. Crontab Kullanarak Her Saniyede Bir Linux Cron Görevleri Nasıl Yürütülür

Her saniye çalışacak şekilde cron ayarlayamazsınız. Çünkü en küçük cron yürütme birimi bir dakikadır. Normal bir senaryoda, her saniye cron yürütmesini çalıştırmaya gerek yoktur.

14. Crontab'da PATH Değişkenini Belirtme

Yukarıdaki örneklerin tümünde, yürütülecek bir Linux komutunun veya kabuk betiğinin mutlak yolunu belirledik.

Örneğin, / home / geliştirici / teyp yedeği belirtmek yerine, yalnızca teyp yedeği belirtmek istiyorsanız, aşağıda gösterildiği gibi crontab'daki PATH değişkenine path / home / geliştirici ekleyin.

[e-posta korumalı]$ crontab -l YOL = / bin: / sbin: / usr / bin: / usr / sbin: / ana sayfa / geliştirici @yıllık yıllık bakım * / 10 * * * * kontrol-disk alanı

15. Crontab'ı Cron Dosyasından Kurmak

Doğrudan crontab dosyasını düzenlemek yerine tüm girdileri cron dosyasına ekleyebilirsiniz. Dosyada bu girişler varsa, bunları aşağıda gösterildiği gibi cron'a indirebilir veya kurabilirsiniz.

Not: Crontab'ınızda eski cron girişlerini kaldıracak bir cron-file.txt dosyası oluşturulacaktır. Bu yüzden lütfen cron-file.txt dosyasından cron girdileri yüklerken dikkatli olun:

[e-posta korumalı]$ crontab -l geliştirici için crontab yok $ cat cron-file.txt @yıllık / ev / geliştirici / yıllık bakım * / 10 * * * * / ana sayfa / geliştirici / kontrol-disk alanı [e-posta korumalı]$ crontab cron dosyası.txt [e-posta korumalı]$ crontab -l @yearly / ev / geliştirici / yıllık bakım * / 10 * * * * / ev / geliştirici / kontrol-disk alanı

Geçenlerde sunucuda zamanlanmış bir görev ayarlamak zorunda kaldım ve ilk kez bu zor ve hatta korkutucu. Bu yüzden Cron kurulum aşamaları hakkında bir yazı yazmaya karar verdim. Günde bir kez e-posta göndermek için basit bir PHP betiği oluşturacağız.

Gerekli temel

  • Komut satırı ile temel deneyim;
  • Bir Linux sunucusunda SSH ile çalışma becerileri.

Görevler

  • Bir Linux sunucu ortamında basit bir zamanlanmış görevin (cron işi) nasıl kurulacağını öğrenin;
  • Belirtilen zamanda günlük olarak e-posta göndermek için bir cron görevi ayarlayın.

PHP ile e-posta gönderme

Öncelikle Cron Linux kurulumunuzu test etmek için basit bir PHP betiği oluşturmanız gerekir. E-posta gönderen bir dosya oluşturacağım:

PHP mail () işlevine aşina değilseniz, kontrol edin resmi belgeler... Alıcı, gönderenin e-posta adresi, konu, mesaj içeriği ve başlıklar için değişkenler ayarladım. Bu, e-posta göndermenin en modern veya güvenli yolu değildir. Ama işe yarıyor, bu yüzden test için kullanacağım. Kodu cron.php dosyasına kaydediyoruz.

Ortak klasör yolu Linux dağıtımına bağlı olacaktır, ancak cron.php dosyasını / var / www / html / crontest içine koydum. Bu nedenle, betiğimin tam yolu aşağıdaki gibi olacaktır: /var/www/html/crontest/cron.php... Bu betiği doğrudan tarayıcınızda test edebilirsiniz. Site adresiniz example.com ise, dosya adresi büyük olasılıkla example.com/crontest/cron.php olacaktır. Dosyayı çalıştırır ve bir e-posta alırsanız, komut dosyası çalışıyor demektir.

Localhost, PHP postası gönderecek şekilde yapılandırılmamış, bu nedenle bu komut dosyası Linux ortamında çalıştırılmalıdır.

Temel Cron Sözdizimi

Cron PHP'yi özelleştirebilen Crontab Generator adlı kullanışlı bir site var, ancak önce temel sözdizimine hızlı bir göz atacağız.

Cron'un nasıl çalıştığına bir örnek:

* * * * * / usr / bin / php /var/www/html/crontest/cron.php> / dev / null 2> & 1

cron komutunun bölümleri

cron komutunun dört ana bölümü vardır:

Çalışma Zamanı PHP Yürütme Komut dosyasına giden yol Sonuç * * * * * / usr / bin / php /var/www/html/crontest/cron.php> / dev / null 2> & 1

Kurşun zamanı- dakikaları, saatleri, günleri, ayları ve haftanın gününü ayarlar.

Yürütme - cron görevi /usr/bin/php klasöründe bulunan PHP'yi çağırmalıdır.

Komut dosyası yolu, çalıştırmak istediğiniz dosyanın tam yoludur.

Sonuç (isteğe bağlı) - sonucu bir dosyaya yazabilir veya bu bölümü atabilirsiniz> / dev / null 2> & 1.

Yukarıdaki örnekte, Linux Cron görevi her gün her dakika e-posta gönderecek şekilde yapılandırılmıştır. Yıldız işareti, "her şey" anlamına gelen bir joker karakterdir.

  • Dakika - dakikaları 0'dan 59'a ayarlayın;
  • Saatler - saatleri 0 ile 24 arasında ayarlayın;
  • Günler - günü 1'den 31'e ayarlayın;
  • Aylar - ayı 1'den 12'ye (Ocak-Aralık) ayarlayın;
  • Hafta - haftanın gününü 0 ile 6 arasında ayarlayın ( Pazar Cumartesi).

İşte bazı basit örnekler:

Sözdizimi Açıklama 0 * * * * saatte bir kez çalışır (her saatin sıfır dakikasında bir). 0 0 * * * günde bir kez çalışır (her günün gece yarısı sıfır dakikada). 0 0 1 * * ayda bir kez çalışır (her ayın ilk günü gece yarısı sıfır dakikada). 0 0 1 1 * yılda bir kez çalışır (ilk ayın ilk günü gece yarısı sıfır dakika).

Başka ayarlar da vardır, örneğin, tek/çift günler, her 5 dakikada bir vb. Belirli ayarları bulabileceğiniz birçok kaynak da vardır.

Bir cron görevi ayarlama

Cron root olarak yapılandırılmışsa, kodu çalıştırmadan önce sudo çalıştırmanız gerekir.

cron komutuna crontab denir. Görevimizi e-posta dağıtımını günde bir kez çalıştıracak şekilde belirledik, böylece tam komut şöyle olurdu:

0 0 * * * / usr / bin / php /var/www/html/crontest/cron.php> / dev / null 2> & 1

SSH sunucusuna giriş yaptıktan sonra, mevcut başka görevler olup olmadığını kontrol edebilirsiniz. Bu, aşağıdaki komutla yapılabilir.

crontab -l crontab: kullanıcı için crontab yok

Şimdi crontab'ı düzenleyeceğiz:

Bu noktada, sunucunuzun varsayılan düzenleyicisini hiç değiştirmediyseniz büyük olasılıkla vi kullanıyor olacaksınız. Cron'unuzu ilk kurduğunuzda biraz kafa karıştırıcı olabilir.

Yapmanız gerekenler:

  1. esc'ye basın;
  2. Dosyayı düzenlemeye başlamak için i tuşuna basın;
  3. cron komutunu dosyaya yapıştırın;
  4. Düzenleme modundan çıkmak için tekrar esc tuşuna basın;
  5. Dosyadaki değişiklikleri kaydetmek için: wq girin ( w - yaz) ve çıkış ( q - çıkmak).

Crontab şimdi kaydedildi ve e-posta günde bir kez gece yarısı gönderilmelidir. * / 5 * * * * - çalışıp çalışmadığını kontrol etmek için her 5 dakikada bir ayarlayabilirsiniz.

Dosyaya birden fazla cron işi de ekleyebilirsiniz. Bunu yapmak için her komutu ayrı bir satıra koyun.

Makalenin çevirisi " Linux'ta Temel Bir Cron İşi Ayarlama»Güleryüzlü proje ekibi

31 Mart 2014 11:26

Linux'ta hayatı kolaylaştırmak veya cron kullanarak süreçlerin başlatılmasını otomatikleştirmek

  • Linux kurulumu,
  • * nix
Tanıtım
Akşamları dizüstü bilgisayarımda otururken ve sanal bir makinede başka bir Linux dağıtımını incelerken kendime bir soru sordum: İşlemlerin rutin olarak başlatılmasını basitleştirmek mümkün mü? İlgileniyorsanız, lütfen kedinin altında. Makale bilgilendirme amaçlıdır ve daha çok Linux işletim sistemine yeni başlayanlar içindir, ancak deneyimli Linux kullanıcıları da kendileri için yeni bir şeyler öğrenebilirler.
atd ve cron cinleri
Biraz googling yaptıktan ve literatürü okuduktan sonra iki şeytan hakkında bilgi edindim: atd ve cron... İlkini sınırlamaları ve onunla çalışmanın uygunsuzluğu nedeniyle reddettim. Ama ikincisi hakkında daha ayrıntılı konuşmak istiyorum.
Bilgisayarınız aniden göründüğü gibi, sebepsiz yere diski aramaya, size posta göndermeye vb. cron

Michael Köfler" Linux. Kurulum, yapılandırma, yönetim. " - SPb.: Peter, 2014

peki bu tam olarak ne işe yarıyor cron... Daemon bir dakikalık aralıklarla etkinleştirilir, dosyaları kontrol eder crontab ve bunlarda belirtilen programları çalıştırır. Başlangıçta, sistemin bakımı sırasında kullanılır, ancak kullanıcı bunu sorunlarını çözmek için kullanabilir.

Düzenli bir dağıtımınız varsa, endişelenecek bir şeyiniz yok, cron otomatik olarak kurulur. Minimum ise, üzülmeyin - terminale gidin.
yum install vixie-cron // (RHEL - Red Hat Enterprise Linux)
veya
apt-get install cron // (Deabian benzeri dağıtımlar)
Dizinde yapılandırılmış arka plan programına kullanıcı erişimi / var / biriktirme / cron / sekmeler / kullanıcı... Hakları dosyalarda belirlenir / cron / izin ver ve / inkar etmek... Bir kullanıcı ekleyerek / izin vermek komutu yürütmesine izin veriyoruz cron ve bir kullanıcı eklerseniz / inkar etmek, aksine, kullanıcının arka plan programını kullanması yasaklanacaktır.

Kendim cron dizinde yapılandırılabilir / etc / crontab... Dosya / crontab veya içindeki dosyalar / vb / cron. NS yürütülecek komutların bir listesini içerir. Sözdizimi:
/ etc / crontab [dakika] [saat] [gün] [ay] [hafta] [kullanıcı] [komut]
Örneğin, süper kullanıcı adına her 15 dakikada bir ya.ru'ya ping göndermem gerekirse, aşağıdakileri eklemem gerekir:
* / 15 **** kök ping ya.ru
İlk beş alandan herhangi biri * içeriyorsa, bu alan yok sayılır. Önceki komut bir ay veya bir hafta belirtmez, bu nedenle her 15 dakikada bir yürütülür. Yapılandırmayı değiştirmek için terminaldeki komutu kullanın. vi veya dosyanın içeriğini manuel olarak değiştirin / etc / crontab.

.saatlik, .günlük, .haftalık, .aylık ile çalışma
Hemen hemen tüm dağıtımlarda varsayılan olarak dosya / etc / crontab komut dosyalarını yürütmek için gereken yalnızca birkaç giriş içerir:
/etc/cron.hourly/*- her saat çalıştırılan komut dosyaları
/etc/cron.daily/*- her gün yürütülen komut dosyaları
/etc/cron.weekly/*- her hafta yürütülen komut dosyaları
/etc/cron.aylık/*- her ay yürütülen komut dosyaları

Arka plan programının komutlarınızı yürütmesi için, dizinlerden birine komutları yürüten bir komut dosyası ekleyin. Ritmi ayarlamayı unutmayın yürüt (chmod a + x dosyası)... Bunu yapmazsanız, betiğinizin erişimi olmayacak ve çalışmayacaktır!
Komut dosyanızın çalışıp çalışmayacağını kontrol etmek için komutu çalıştırın
run-parts --test /etc/cron.daily
Komut dosyası farklı bir dizinde bulunuyorsa, buna göre değiştirin günlüküzerinde aylık vesaire.
Ve unutmayın, komut dosyası adı nokta içeremez, noktalardan başka herhangi bir sembol içeremez. run-parts komutu nokta komut dosyalarını yok sayar, nedenini bilmiyorum.

anakron
şeytanın ötesinde cron... çoğu dağıtımda Anacron görev zamanlayıcı kuruludur. Görevi, komut dosyalarının bir kerelik (istek üzerine) yürütülmesidir. /etc/cron.n n üç değer alabilir: günlük, haftalık, aylık... Yürütülmesinden sonra çıkar ve sistemde askıda kalmaz. cron... Ayrıca Anacron, dizinden komut dosyalarını çalıştırmaz. /etc/cron.saatlik, bu ayrıcalık cron... Anacron'un global konfigürasyonu dizinde yapılır / etc / anacrontab, ancak varsayılan ayarlar genellikle yeterlidir.
not
Bir ssh sistem yöneticisinin günlük görevleriyle çalışmayı basitleştirmek için kullanmak daha uygundur. cron ve görevleri birer birer gerçekleştirdiği için Anacron'u devre dışı bırakın ve cron Anacron tarafından gerçekleştirilen görevleri yok sayar. Sonuç olarak, sizin için tüm görevler yalnızca bir kez tamamlanacak. Çoğu dağıtımda, arka plan programıyla çalışmak neredeyse aynıdır, ancak sorun yaşarsanız, Linux'unuz için wiki'yi kullanın.

Bazı görevler aşağıdakilerin kullanılmasını gerektirir: planlayıcı- belirli bir zamanda belirli komut dosyalarını, programları vb. başlatan özel bir program. Çoğu durumda cron... Belki başkaları da vardır ama onlar hakkında hiçbir şey bilmiyorum. Bu yazıda size bir PHP betiği çalıştırma örneği kullanarak Cron kurmanın bazı özelliklerinden bahsedeceğim.

Cron işleri ve PHP betiği çalıştırma

Cron'daki girişin (görev) kendisi (daha sık klasör adına göre crontab veya crontab'lar) içerir zaman damgası ve komutlar. zaman damgası atama değerleri içerir: haftanın günü, ay, gün, saat ve dakika ve emretmek (sıklıkla denir: egzersiz yapmak) , en azından bir komut dosyasının çalıştırılması durumunda, bir yorumlayıcıdan ve komut dosyasının kendisinden oluşabilir, örneğin:

`/ usr / bin / hangi php` /home/l/login/public_html/script.php

Bu durumda: `/ usr / bin / hangi php` PHP yorumlayıcısının mutlak yoludur ve /home/l/login/public_html/script.php php betiğinin mutlak yoludur. Web sunucusunun ayarlarına bağlı olduklarından, yorumlayıcıya ve komut dosyalarına giden yolun sizin için farklı olabileceği dikkat çekicidir.

PU aracılığıyla Cron kurulumu

Çoğu barındırma prowders, müşterilere özel bir Kontrol Paneli(PU) barındırma, bu da Cron kayıtlarını kurmayı ve bunlarla çalışmayı kolaylaştırır. SpaceWeb'deki zamanlayıcıda cron_admitad.php php betiğinin başlatılması bu şekilde görünür.

Lütfen dikkat - tercümanın yolu burada belirtilmemiştir (daha sonra bunun hakkında daha fazla bilgi)... Ayrıca dikkat çekici olan, " sembolünün kullanılmasıdır. tilde"(~) Bir takma ad olarak" ev dizini» (verilen örnekte: / home / l / login)... Basitçe söylemek gerekirse, bu, normal koşullar altında kendinizi FTP aracılığıyla ilk olarak içinde bulduğunuz dizindir.

php betiğinde yorumlayıcıya giden yol

Çoğu sorunun birçok çözümü vardır. Hangisinin optimal olduğunu söylemek genellikle zordur, ancak bu bununla ilgili değildir.

sembol " kafes»(#) PHP'de bir yorumdur, ancak #! (İng. patlama çizgisi, hash-bang veya kahrolası) özel bir anlamı vardır - komut dosyası yorumlayıcısının yolunu gösterir.

Gerçek şu ki, UNIX benzeri işletim sistemlerinde, farklı dillerde komut dosyaları oluşturulabilir: PHP, Perl, Python, vb. Bir komut dosyası bir web sunucusu tarafından yürütüldüğünde, dosya uzantısına odaklanır. (ör: .php, .phtm, phtml, vb. PHP yorumlayıcısının yaygın uzantılarıdır)... UNIX benzeri işletim sistemleri, kural olarak, dosya uzantısı tarafından yönlendirilmez - genellikle dosyada yoktur. Sistem ilk satırı okur ve bir komut dosyası işlemcisi arar.

Daha önce bahsedilen php betiğinde, sahip olduğum ilk satır giriş:

#! / usr / yerel / bin / php

Yine, sizin için PHP yorumlayıcısının yolu, tamamı web sunucusunun ayarlarına bağlı olduğundan, örnekte belirtilen yoldan farklı olabilir.

Cron aracılığıyla başlatılan bir komut dosyasındaki dosya yolları

Bir başka önemli nüans. Komut dosyanız web sunucusundaki üçüncü taraf dosyalarına erişim anlamına gelen require (), include (), fopen () vb. işlevlerini kullanıyorsa, mutlak yolu belirtmeniz gerekir, örneğin:

/home/s/shop4mru/public_html/content/data/coupons.db

Yine, sizin için kuponlar.db dosyasının yolu, tamamı web sunucusunun ayarlarına bağlı olduğundan, örnekte belirtilen yoldan farklı olabilir.

Genel olarak, göreli bir yol da kullanabilirsiniz. Bunu yapmak için, geçerli PHP dizinini parametresi olarak belirtilen dizine değiştiren chdir () php işlevini kullanın.

Dürüst olmak gerekirse bu işlevi kullanmadım ama anladığım kadarıyla durum şu şekilde. Web sunucusundaki bir üçüncü taraf dosyasına erişmeden önce aşağıdaki koda benzer bir şey eklenir:

Chdir ("public_html"); // dizine geç: / home / s / shop4mru / public_html

Böylece, verilen örnek dikkate alınarak dosya ilgili yolda mevcut olacaktır:

./content/data/coupons.db

Baştaki nokta, mevcut değiştirilmiş dizin anlamına gelir.

Cron kurulumunu özetlemek

cron (genellikle klasör adıyla adlandırılır crontab veya crontab'lar) - belirli bir zamanda komut dosyalarını, programları ve diğer komutları çalıştıran barındırma sağlayıcısının web sunucusunda çalışan bir zamanlayıcı programı. Görevin kendisi bir zaman damgası ve bir komuttan oluşan bir kayıttır. Burada önemli bir nokta, komut dosyası yorumlayıcısına ve içerdiği dosyalara giden doğru yolları belirtmektir.

8:00'de Mesajı değiştir 9 yorum

Linux hakkında çok şey duydum, kullanışlı bir cron görev zamanlayıcısı var. Ancak kullanmaya gerek duymadım ve ayarlarını anlamak da istemedim... Konsol, bir sürü İngilizce harf... Korkutucuydu. Ama neyse ki korkularım boşunaydı - her şey ilköğretim için basit. Makale, komut dosyalarınızın yürütülmesini bir programa göre nasıl yapılandıracağınızı ele alacak ve örnek olarak "guguklu" kuracağız.

İlk olarak, genel olarak nasıl çalıştığı hakkında biraz.

Sistem başladığında, cron arka plan programı başlar. Şu komutla kontrol edilebilir (durdur/başlat/durum): sudo service cron (durdur/başlat/durum). Ancak bu nadiren ihtiyaç duyulduğunda olur.

Cron arka plan programı çoğu zaman uyur ve şu anda işleri kontrol etmek için dakikada bir kez gözlerini hafifçe açar. Herhangi bir görev yoksa, tekrar hazırda bekletme moduna geçer.

Görevler, kullanıcı adlarına eşit adlara sahip dosyalardadır ve dosyaların kendisi / var / spool / cron / crontabs klasöründedir. Klasör kurcalanmaya karşı korumalıdır ve yalnızca süper kullanıcı tarafından erişilebilir. Ancak her kullanıcı, kök parolayı (süper kullanıcı) bilmeden görevleri için bir zamanlama ayarlayabilir.

ne olurdu cron'u yapılandır sıradan bir kullanıcı için şunu yazmanız yeterlidir:

Başka bir kullanıcı için bir görev oluşturmanız gerekiyorsa, başlatma şu komutla gerçekleştirilir:

sudo crontab -u kullanıcısı -e

Kullanıcı yerine istediğimiz kullanıcıyı yazıyoruz örneğin root.
İlk lansmanda editör ile ilgili bir soru olacak... Nano'yu seviyorum. Basittir ve GUI olmadan çalışır.


Görevlerin sözdizimi çok basittir. Bir guguk kuşu başlatmanın ekran görüntüsünden bir örneğe bakalım:

0 * / 1 * * * / ana sayfa / zegi / bin / kuku

Toplamda görevde 2 ana alan vardır: 0 * / 1 * * * - komutun ne zaman tetikleneceğini gösterir. Ve / home / zegi / bin / kuku komut(lar)ın açıklandığı betiğin yoludur.

Komut dosyasının adresi ile ilgili herhangi bir sorun olmamalıdır (zegi kullanıcı adıdır ... kendinizinkini koymayı unutmayın). Ancak komut dosyasının yürütülmesi için taç zamanının nasıl ayarlanacağını açıklamak gerekir.

Toplamda, giriş için bir boşlukla ayrılmış 5 hücremiz var.
1 - dakika (0'dan 59'a kadar sayılar)
2 - saat (0'dan 23'e kadar)
3 - ayın günü (1'den 31'e kadar)
4 - yılın ayı (1'den 12'ye ... örneğin Şubat 2'dir)
5 - haftanın günü (1'den 7'ye kadar, başlangıç ​​Pazar olduğunda, yani Paz-1, Pts-2, VT-3, Çar-4, Per-5, Cum-6, Cts) bir batı haftası kullanılır. - 7).

Her hücrenin doldurulması zorunludur. Komutun her ay yürütülmesi gerekiyorsa, ayarlayın * 4. alanda. Aynı durum geri kalan alanlar için de geçerlidir.

Komut dosyasının her saat başı ateşlendiği guguk kuşu örneğine geri dönelim. Frekansı ayarlamak için kullanılır / ... Örneğin, görevin Pazartesi günleri her 5 dakikada bir gerçekleştirilmesini istiyorsanız, şunları ayarladık:

Görevin her saat başı yapılmasını istiyorsanız, belirli bir dakika ayarlamanız gerekecektir. Yıldız işaretini (* * / 1 * * *) bırakırsanız, kronor her dakika yürütülür - çünkü koşullar karşılanır: 5 hücrenin tümünü kontrol etti ve değerleri geçerli zamana karşılık geliyor (dakika - önemli değil .Saatler - her saat, sadece belirli değil).
Eğik çizgiden önce her zaman bir yıldız işareti olmalıdır. Örneğin, 30/1 girerek 30'dan başlayarak her dakika yürütmeyi programlamak işe yaramaz.

Görevin döngüsel olarak değil, birkaç kez yapılmasını istiyorsanız, değerler virgülle ayrılmış olarak yazılır.
Örneğin, görevi hafta içi öğlen 12 ve akşam 6'da tamamlamanız gerekiyor. Sonra şöyle görünecek:

* 12,18 * * 2,3,4,5,6

Görevleri düzenlemeyi bitirdiğinizde değişiklikleri kaydetmeyi unutmayın (Ctrl + O> enter) ve ardından çıkabilirsiniz (Ctrl + x).

Cron, yeni bir görevin ortaya çıktığını ve bunu gerçekleştirmeye hazır olduğunu "crontab: install new crontab" yazarak bildirmelidir.

Oluşturulan görevleri (belki kendiniz için bir şey yapmadınız, ancak ağ yöneticisi sizin için bir şey yapılandırdı) şu komutla görüntüleyebilirsiniz:

Ve sonunda kendimi guguk kuşu yazısı o guguk kuşu her saat başı:

#! / bin / bash
h = `tarih +% l`
[$ h -gt 0] iken
yapmak
~ / kukushka.wav oyna
h = $ [$ h-1]
tamamlamak

Guguklu sesi şu komutla indirebilirsiniz:

wget http://dl.dropbox.com/u/24844052/tuksik/kukushka.wav

Play sox paketine dahildir. Ubuntu'da komutla kurulabilir.