Alex Asked: 2009-12-15 14:34:57 +0800 CST2009-12-15 14:34:57 +0800 CST 2009-12-15 14:34:57 +0800 CST Como desativar tudo em crontab -l? 772 Eu só quero pausar tudo. Não execute nada listado em crontab -l. linux 10 respostas Voted kubanczyk 2009-12-15T14:41:12+08:002009-12-15T14:41:12+08:00 Primeiro, faça backup do crontab: crontab -l > my_cron_backup.txt Então você pode esvaziá-lo: crontab -r Restaurar: crontab my_cron_backup.txt crontab -l Best Answer gregf 2009-12-15T14:39:21+08:002009-12-15T14:39:21+08:00 crontab -eem seguida, comente cada linha com a qual você não deseja executar #. muffinista 2009-12-15T14:46:28+08:002009-12-15T14:46:28+08:00 Você tem acesso root? Basta pausar o cron sudo /etc/init.d/crond stop Em seguida, reinicie-o quando estiver pronto sudo /etc/init.d/crond start andunix 2009-12-16T02:46:46+08:002009-12-16T02:46:46+08:00 Se você estiver usando o vi como editor, basta entrar :%s/^/#/no modo de comando. Em todas as linhas (%), substitui (s///) o início da linha (^) por um hash (#). segaps 2014-09-13T02:31:24+08:002014-09-13T02:31:24+08:00 Não estava feliz com as opções acima, pois não eram um forro. Desabilitar crontab -l | perl -nle 's/^([^#])/# $1/;print' | crontab Para ativar crontab -l | perl -nle 's/^#\s*([0-9*])/$1/;print' | crontab exemplo de uso (editado para mostrar que não desativa comentários) $ crontab -l # Comment 0 0 * * 0 /opt/something.sh $ crontab -l|perl -nle 's/^([^#])/# $1/;print'|crontab $ crontab -l # Comment # 0 0 * * 0 /opt/something.sh $ crontab -l|perl -nle 's/^#\s*([0-9*])/$1/;print'|crontab $ crontab -l # Comment 0 0 * * 0 /opt/something.sh Testei isso no RHEL e no AIX e deve funcionar imediatamente sem que nada precise ser instalado ash 2014-10-14T13:23:36+08:002014-10-14T13:23:36+08:00 Em meus testes limitados, configurar o shell para /bin/false funciona. Você ainda verá /opt/job.sha execução em seus logs, mas será um noop: SHELL=/bin/false */1 * * * * root /some/job.sh kubanczyk 2015-11-06T09:12:49+08:002015-11-06T09:12:49+08:00 Em qualquer sabor de Unix/Linux que eu conheça: mv /var/spool/cron /var/spool/cron_is_disabled Este: desativa crontabs de todos os usuários mas não o sistema /etc/crontab (/etc/cron.daily. etc.) persiste em uma reinicialização é um one-liner, duh :) Sarvsav Sharma 2016-06-30T05:49:50+08:002016-06-30T05:49:50+08:00 Tirei a ideia da resposta fornecida por @segaps Desabilitar: crontab -l | awk '{print "# "$1}' | crontab Para habilitar: crontab -l | cut -c 3- | crontab O único problema com a solução fornecida pela segaps é que ela descomentará os trabalhos que já foram comentados pelo usuário. Jonesome Reinstate Monica 2017-12-14T13:32:39+08:002017-12-14T13:32:39+08:00 Para fazer isso, usando o nano como editor: sudo env EDITOR=nano crontab -e em seguida, comente cada linha que você não deseja executar com # HappyFace 2020-04-16T08:47:16+08:002020-04-16T08:47:16+08:00 Você pode usar o seguinte assim: crondisable cronenable crondisable some_other_user ... O zshcódigo (coloque no seu .zshrc): ecerr () { print -r -- "$@" >&2 } crondisable() { local user="${1:-$(whoami)}" local cronpath="/tmp/$user.cron.tmp" test -e "$cronpath" && { ecerr "There is already a disabled crontab at $cronpath. Remove that manually if you want to proceed." return 1 } crontab -l -u $user > "$cronpath" crontab -r -u $user } cronenable() { local user="${1:-$(whoami)}" local cronpath="/tmp/$user.cron.tmp" test -e "$cronpath" || { ecerr "No disabled cron at $cronpath" return 1 } crontab -u $user "$cronpath" mv "$cronpath" "${cronpath}.bak" }
Primeiro, faça backup do crontab:
Então você pode esvaziá-lo:
Restaurar:
crontab -e
em seguida, comente cada linha com a qual você não deseja executar#
.Você tem acesso root? Basta pausar o cron
Em seguida, reinicie-o quando estiver pronto
Se você estiver usando o vi como editor, basta entrar
:%s/^/#/
no modo de comando. Em todas as linhas (%), substitui (s///) o início da linha (^) por um hash (#).Não estava feliz com as opções acima, pois não eram um forro.
Desabilitar
crontab -l | perl -nle 's/^([^#])/# $1/;print' | crontab
Para ativar
crontab -l | perl -nle 's/^#\s*([0-9*])/$1/;print' | crontab
exemplo de uso (editado para mostrar que não desativa comentários)
Testei isso no RHEL e no AIX e deve funcionar imediatamente sem que nada precise ser instalado
Em meus testes limitados, configurar o shell para /bin/false funciona. Você ainda verá
/opt/job.sh
a execução em seus logs, mas será um noop:Em qualquer sabor de Unix/Linux que eu conheça:
Este:
Tirei a ideia da resposta fornecida por @segaps
Desabilitar:
Para habilitar:
O único problema com a solução fornecida pela segaps é que ela descomentará os trabalhos que já foram comentados pelo usuário.
Para fazer isso, usando o nano como editor:
em seguida, comente cada linha que você não deseja executar com #
Você pode usar o seguinte assim:
O
zsh
código (coloque no seu.zshrc
):