bir kullanıcının cronjobs'u geçici olarak nasıl devre dışı bırakabilirim?


14

Bir veya daha fazla kullanıcının cron işlerini geçici olarak nasıl devre dışı bırakabilirim? Özellikle, kullanıcının cron haklarını askıya almak istemiyorum - sadece işlerinden herhangi birini kovmak değil.

SLES 11 SP2 ve SP3 sistemindeyim


Sadece komutun -u useranahtarını kullanamaz ve söz konusu kullanıcı için devre dışı bırakmak üzere işlerin önüne crontabbir #yorum karakteri koyamaz mısınız?
— Janis

@Janis o zaman ben (çok var) kullanıcının zaten yorum ne olduğunu takip etmek gerekir, artı kullanıcı devam ve başka bir şey ekleyebilirsiniz (Ben onları /etc/cron.deny eklemiyorum). Çok fazla el işi :(
— Dinesh

Dinesh, ben (yanlış), neyi devre dışı bıraktığınız hakkında ince taneli bir kontrol istediğinizi anladım.
— Janis

Yanıtlar:


10

touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$usernamehile yapmalı. İle Restore chmod 600ve touch(size (girişimi) onu yeniden yapmak cron dosyanın mtime değiştirmek gerekir).

En azından Debian ve muhtemelen genel olarak Vixie cron ile chmod 400 /var/spool/cron/crontabs/$username, hile de yapar, çünkü bu uygulama izinlerin tam olarak 600 olduğu konusunda ısrar eder. Ancak bu sadece kullanıcı crontabkomutu çalışana kadar sürer .

Sağlam bir yol istiyorsanız, crontab'ını geçici olarak dışına taşımaktan veya izinleri değiştirmek ve geçici olarak eklemekten daha iyi bir şey olduğunu düşünmüyorum /etc/cron.deny.


Teşekkürler. Sistemimde / var / spool / cron / tabs / $ kullanıcı adı. Ama yine de, sonra bile yürütür chmod.
— Dinesh

Dosya izinlerini değiştirdikten sonra, aynı zamanda cron'u durdurup / yeniden başlatmam gerekiyordu. Muhtemelen düşündüm çünkü cron eşyaları hafızada tutuyor olabilir. Bu yüzden eklenen touch $usernamesonra chmod. Ama bu yardımcı olmadı. (btw ne cron.deny
— Dinesh

@Dinesh Gerçekten de dosyanın zamanını güncellemeniz gerekir, aksi takdirde cron değişmediğini ve önbelleğe alınmış bilgileri sakladığını düşünür. Bunu dün test ederken fark ettim ama cevabımda belirtmeyi unuttum, bunun için üzgünüm.
— Gilles 'SO- kötü olmayı bırak'

Tüm standart kullanıcılar için devre dışı bırakmak istiyorsanız:chgrp root /var/spool/cron/crontabs
— shrimpwagon

9

Bir kullanıcı crontab'ı devre dışı bırakmak için böyle bir şeye ne dersiniz:

crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]

ve yeniden etkinleştirmek için:

crontab -u [username] /tmp/[username].cron.tmp

Bunun, root olarak ihtiyaç duymadan kullanıcı olarak çalıştırabileceğiniz ek bir avantajı vardır (sadece -u parametresini alıp götürün).


0

Debian kullanıyorsanız, bu yalnızca Debian AFAIK için geçerlidir :

Bunu cronjob adına bir nokta ekleyerek yapabilirsiniz.

Davranış Debian resmi belgelerinde belirtilir:

https://www.debian.org/doc/debian-policy/#cron-job-file-names

Bir cron iş dosyası adı herhangi bir nokta veya artı karakter (. Veya +) karakteri içermemelidir, çünkü bu, cron'un dosyayı yok saymasına neden olur. Bunun yerine alt çizgiler (_) kullanılmalıdır. ve + karakterler.


0

Tüm cronişleri bir süreliğine tamamen durdurmak istiyorsanız - örneğin, kötü bir şekilde etkileşime girebilecekleri sistem bakımı yaparken - komutlar normalde

systemctl stop crond.service

ve devam ettirmek

systemctl start crond.service

Bunları yürütmek için kök veya tekerlek otoritesine ihtiyacınız olduğunu düşünüyorum; gerekirse, sudo veya (son çare) root olarak oturum açın.

Belirli bir soru için aşırıya kaçma, ancak "tek elden alışveriş" sağlar ve dosya sistemi veya geçici dosyalarla oynamayı gerektirmez.


3
Bu, tüm kullanıcılar için cron'u devre dışı bıraktığı için, soruyu gerçekten cevaplamıyor.
— Scott

-1

Katılıyorum, systemctl yoluyla yol almaktır. Ahududu üzerinde, ayak parmağı komandoları

sudo systemctl stop cron.service
sudo systemctl start cron.service

1
Bu, tüm cronhizmeti durduracaktır . OP hangi kullanıcıların crontabs'unu devre dışı bırakacağını seçebilmek istedi.
— roaima

1
Aynı zamanda başka bir cevapla
— roaima
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.