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
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
Yanıtlar:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
hile yapmalı. İle Restore chmod 600
ve 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ı crontab
komutu ç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
.
chmod
.
touch $username
sonra chmod
. Ama bu yardımcı olmadı. (btw ne cron.deny
chgrp root /var/spool/cron/crontabs
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).
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.
Tüm cron
iş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.
Katılıyorum, systemctl yoluyla yol almaktır. Ahududu üzerinde, ayak parmağı komandoları
sudo systemctl stop cron.service
sudo systemctl start cron.service
cron
hizmeti durduracaktır . OP hangi kullanıcıların crontabs'unu devre dışı bırakacağını seçebilmek istedi.
-u user
anahtarını kullanamaz ve söz konusu kullanıcı için devre dışı bırakmak üzere işlerin önünecrontab
bir#
yorum karakteri koyamaz mısınız?