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.