Çevresi cron ile aynı olan etkileşimli kabuk


10

Crontabs'un sihirli dünyasında birçok tuzak olduğunun farkındayım, ancak bazen bir kabuk betiğinin crontab.

Şimdi kendimi düşündüm /bin/openvt -c8 -- /bin/bash --noprofile -l, ancak kök ayrıcalıkları gerektiriyor, çok fazla değişken ve basit su myusernamebir sürü ekstra ortam ayarlıyor.

Herkes kron ile aynı çevreye sahip ve Kubuntu'da kök ayrıcalıkları gerektirmeyen etkileşimli bir bash kabuğu başlatmanın bir yolunu biliyor mu?

Bir ssh oturumunda, GUI'de ve aşağıdaki işletim sistemlerinden bir veya daha fazlasında çalışırken bonus: HP-UX, Solaris ve AIX

Yanıtlar:


14

İle çalıştırın crontab -eve bir giriş ekleyin

* * * * * export -p > ~/cron-env

(Solaris'te veya bu komut satırını yorumlamak için POSIX kabuğu kullanmayan bir sistemdeyse, o sistemde /usr/xpg4/bin/sh -c 'export -p > ~/cron-env'standardın yolu ne olursa olsun kullanın sh).

Bir dakika bekleyin ve bu satırı kaldırın.

Artık cron-envana dizininizde bir dosya olması gerekir.

Daha sonra şunları çalıştırabilirsiniz:

cd && env -i sh -c '. ./cron-env; exec sh'

Cron işinizle aynı ortama sahip bir kabuk başlatmak için.


İlginç, yaklaşık bir saat içinde döndüğümde kontrol edecek.
jippie

Harika, bir rüya gibi çalışıyor!
jippie

En mükemmel cevap. Mümkünse bir kereden fazla oy kullanardım.
Sukima

2

Cron etkileşimli bir kabuk değil, bu yüzden ilk probleminiz bu. Yine de çoğunlukla cahil.

Gerçek olan: ortam değişkenleri. Bunları bulmak için bir cron postasındaki başlıklara bakın, ardından kabuğunuzdaki değişkenleri bunlarla eşleşecek şekilde ayarlayın ve kalan tüm değişkenleri kaldırın.

Artık cronun gördüğü gibi bir ortama oldukça yakınsınız.


Bazı ortamları içeren posta başlıklarını hiçbir zaman fark etmedim, Thunderbird varsayılan olarak bunları kullanıcıdan gizler. Maalesef üstbilgiler tüm ortamı tam olarak temsil etmiyor.
jippie
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.