Alguns anos atrás, eu configurei um trabalho cron para executar ping automaticamente em um URL a cada minuto como parte de um sistema de monitoramento (isso é uma simplificação excessiva, mas serve para essa pergunta). Por ser uma pessoa horrível, não a documentei em lugar nenhum.
Hoje, anos depois, comecei a ter problemas com o aplicativo na outra extremidade da URL que estava sendo pingada. Corrigi-o, mas depois percebi que não fazia ideia de onde vinha esse trabalho cron .
Existe uma maneira de pesquisar rapidamente ou eliminar todas as crontabs em um sistema específico? Eu tenho acesso root, portanto, as permissões não são um problema. Eu sempre fui usuário cron
, nunca examinei muito profundamente sua implementação, mas meus instintos * nix dizem que deve haver um grupo de arquivos de texto em algum lugar que contenha todos os crontabs. Só não sei onde eles estariam, e se eu investigasse, teria medo de encontrar alguns, mas não todos, ou perder algumas nuances estranhas do sistema.
Além disso, eu percebo que com acesso root eu poderia
- Obtenha uma lista de todos os usuários no sistema
su
como usuáriocrontab -l
- Repita com todos os usuários
mas estou procurando algo um pouco menos manual (e procurando aprender algo sobre a implementação do cron)
Respostas:
Existem apenas alguns lugares que os crontabs podem ocultar:
/etc/crontab
/etc/cron.d/*
/etc/crond.{hourly,daily,weekly,monthly}/*
estes são chamados
/etc/crontab
, então talvez um asterisco neste/var/spool/cron/*
(às vezes/var/spool/cron/crontabs/*
)Certifique-se de verificar
at
também, o que mantém seus empregos em/var/spool/at/
ou/var/spool/cron/at*/
Além disso, em vez de
Apenas faça o seguinte:
fonte
Os Crontabs vivem
/etc/crontab
e (com muitas implementações) seus componentes em/etc/cron.*/*
(todos editados pela raiz) e em/var/spool/cron/*
(crontabs dos usuários).Se você tiver problemas para localizar o trabalho incorreto, outra abordagem é investigar um enquanto está em andamento. Por exemplo, você pode adicionar uma regra de firewall para registrar o ID do usuário do processo de abertura de conexões
example.com
na porta 80:Se o trabalho estiver usando um aplicativo como
ping
oucurl
, sombreie o binário usual por um wrapper que registra informações sobre o que está sendo usado, com um script como este em/usr/local/bin
:fonte
A maneira rápida e suja:
O local exato em que os crontabs são armazenados pode variar de sistema para sistema, mas geralmente está dentro
/var/spool
e temcrontab
algum lugar no nome.Observe também que muitos sistemas possuem crontabs do sistema (como em
/etc/crontab
,/etc/cron.d
) alguns dos quais podem chamar mais scripts como/etc/cron.hourly
,.daily
...fonte
Isso soa como um cronjob criado pelo crontab. Nem todos os crontabs têm um
-u
switch, mas para o GNU / Linux ele está disponível. Esta é uma linha útil para listar todos os cronjobs criados pelo crontab.(Execute como root.)
fonte
Se tudo mais falhar, você pode criar um honeypot com a URL solicitada - por exemplo, servir um arquivo grande ou algo assim - e procurar o processo que está aguardando o recebimento dos dados e, em seguida, procurar seu PPID.
fonte
Qualquer sistema decente deve explicar a localização precisa dos crontabs na página de manual (geralmente na
FILES
seção próxima ao final e também para outros daemons).No meu sistema, por exemplo,
cron(8)
contém o seguinte:E eu segundo o conselho de Tylerl de também procurar
at
emprego enquanto você está nisso.fonte
Abordando o contrário: o cron mantém um registro do que está fazendo, precisamente para evitar esse tipo de problema em primeiro lugar. No meu sistema, o log é mantido
/var/cron/log
e fica assim:Essa linha me diz que a instância cron com PID 20232 na máquina
fortress
está sendo executada/home/vucar/lighttpd-watchdog
em nome do usuáriovucar
. Um sistema bem-comportado possui apenas um cron em execução, portanto isso será direto.Isso também funciona para
at
trabalhos, pois eles geralmente são entregues ao cron de qualquer maneira:Os trechos são de um sistema BSD, mas o conceito geral provavelmente é o mesmo em qualquer outro lugar.
fonte