Como posso obter uma lista de todas as tarefas cron agendadas na minha máquina?

160

Meu sysadmin configurou um monte de tarefas cron na minha máquina. Eu gostaria de saber exatamente o que está agendado para a que horas. Como posso obter essa lista?

    
por Frank 07.02.2011 / 20:44

3 respostas

120

Dependendo de como o seu sistema Linux está configurado, você pode procurar:

  • /var/spool/cron/* (usuário crontabs)
  • /etc/crontab (crontab do sistema)

também, muitas distros têm:

  • /etc/cron.d/* Essas configurações têm a mesma sintaxe que /etc/crontab

  • /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly , /etc/cron.monthly

Estes são simplesmente diretórios que contêm executáveis que são executados por hora, diariamente, semanalmente ou mensalmente, por nome de diretório.

Além disso, você pode ter tarefas (verifique /var/spool/at/* ), anacron ( /etc/anacrontab e /var/spool/anacron/* ) e provavelmente outras que estou esquecendo.

    
por 07.02.2011 / 21:58
107

Com a maioria dos Crons (por exemplo, Vixie-Cron - padrão Debian / Ubuntu, padrão Cronie-Fedora, Solaris Cron ...) você obtém a lista de tarefas cron agendadas para o usuário atual via:

$ crontab -l

ou para outro usuário via

# crontab -l -u juser

Para obter os crontabs para todos os usuários, você pode fazer um loop por todos os usuários e chamar este comando.

Como alternativa, você pode procurar os arquivos de spool. Normalmente, eles são salvos em /var/spool/cron , por exemplo para vcron seguindo o diretório

/var/spool/cron/crontabs

contém todos os crontabs configurados de todos os usuários - exceto o usuário root que também é capaz de configurar tarefas através do crontab em todo o sistema, que está localizado em

/etc/crontab

Com o cronie (padrão no Fedora / CentOS), também há um diretório de configuração .d style para tarefas do cron do sistema:

/etc/cron.d

(Como sempre, o diretório .d simplifica a manutenção de entradas de configuração que fazem parte de pacotes diferentes.)

Por conveniência, a maioria das distribuições também fornece um diretório onde os scripts vinculados / armazenados são executados periodicamente, por exemplo:

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

A execução oportuna desses scripts geralmente é gerenciada via run-parts entradas no crontab do sistema ou via anacron .

Com o Systemd (por exemplo, no Fedora, CentOS 7, ...) a execução periódica do trabalho também pode ser configurada via < href="https://www.freedesktop.org/software/systemd/man/systemd.timer.html"> unidades de timer . Os temporizadores do sistema ativados podem ser exibidos via:

$ systemctl list-timers

Observe que os usuários ao lado do root podem ter instâncias do systemd do usuário em execução em que os timers também estão configurados. Por exemplo, no Fedora, por padrão, uma instância do sistema do usuário é iniciada para cada usuário atualmente conectado. Eles podem ser reconhecidos via:

$ ps aux | grep 'systemd[ ]--user'

Esses usuários podem ser listados por:

$ systemctl --user list-timers

Uma alternativa para emitir o comando list-timers é procurar por arquivos da unidade do temporizador (padrão: *.timer ) e links simbólicos para eles nos diretórios system e config do sistema usual:

$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
              -o -path '/home/*/.config/systemd/*' ')' \
      -name '*.timer'  2> /dev/null

(Como nas unidades de serviço normais, uma unidade temporizada é ativada através da criação de um link simbólico no diretório de configuração systemd correto.)

Veja também:

por 07.02.2011 / 21:26
4

Para listar todos os crons para o usuário especificado.

crontab -u username -l;

Para listar todos os crons para todos os usuários

Execute como superusuário

#!/bin/bash
#List all cron jobs for all users
for user in 'cat /etc/passwd | cut -d":" -f1';
do 
crontab -l -u $user;
done
    
por 04.08.2015 / 13:33