desenv-web-rp.com

Como obter uma lista de todos os trabalhos agendados do cron na minha máquina?

Meu sysadmin configurou vários trabalhos cron na minha máquina. Gostaria de saber exatamente o que está programado para que horas. Como posso obter essa lista?

215
Frank

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

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

além disso, muitas distribuições 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

Esses são simplesmente diretórios que contêm executáveis ​​executados a cada hora, diariamente, semanalmente ou mensalmente, de acordo com o nome do diretório.

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

150
jsbillings

Com a maioria dos Crons (por exemplo, Vixie-Cron - padrão Debian/Ubuntu, Cronie - padrão Fedora, Solaris Cron ...), você obtém a lista de tarefas agendadas do cron 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 sobre todos os usuários e chamar este comando.

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

/var/spool/cron/crontabs

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

/etc/crontab

Com cronie (padrão no Fedora/CentOS), também existe um diretório de configuração no estilo .d 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 diretórios nos quais 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 por meio de entradas run-parts No sistema crontab ou por anacron .

Com Systemd (por exemplo, no Fedora, CentOS 7, ...) a execução periódica de tarefas também pode ser configurada via nidades de timer . Os temporizadores do sistema ativados podem ser exibidos através de:

$ systemctl list-timers

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

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

Esses timers de usuário podem ser listados através de:

$ systemctl --user list-timers

Uma alternativa para emitir o comando list-timers É procurar arquivos de unidade de timer (padrão: *.timer) E links simbólicos para eles nos diretórios habituais do sistema e do usuário systemd config:

$ 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 de timer é ativada através da criação de um link simbólico no diretório de configuração systemd correto.)

Veja também:

149
maxschlepzig

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

crontab -u nome de usuário -l;

Para listar todos os crons para todos os usuários

Execute-o como um super usuá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
5
Manikandan Arunachalam