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?
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?
Respostas:
Dependendo de como o seu sistema Linux estiver configurado, você pode procurar:
/var/spool/cron/*
(usuário crontabs)/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 empregos (cheque /var/spool/at/*
), anacron ( /etc/anacrontab
e /var/spool/anacron/*
) e provavelmente outros que estou esquecendo.
/etc/cron.daily
. Como esse daily
arquivo funciona? A que horas os trabalhos diários serão executados? Na minha máquina, eles parecem rodar ao meio-dia, mas gostaria de dizer ao meu administrador de sistemas como mudar isso para meia-noite.
/etc/crontab
, por exemplo, no meu sistema Ubuntu, é: o 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
que significa 6h25.
cronie
daemon cuida daqueles que usam a configuração no /etc/anacrontab
.
/var/cron
.
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 o vcron seguinte diretório
/var/spool/cron/crontabs
contém todas as crontabs configuradas de todos os usuários - exceto o usuário raiz que também pode configurar tarefas através do crontab em todo o sistema, localizado em
/etc/crontab
Com o cronie (padrão no Fedora / CentOS), também existe um .d
diretório de configuração de estilo para os trabalhos do cron do sistema:
/etc/cron.d
(Como sempre, o .d
diretório 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 através de run-parts
entradas no sistema crontab ou via anacron .
Com o Systemd (por exemplo, no Fedora, CentOS 7, ...), a execução periódica de tarefas também pode ser configurada através de unidades 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 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 list-timers
comando é procurar arquivos da unidade de timer (padrão *.timer
:) e links simbólicos para eles nos diretórios usuais do sistema e do sistema 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:
crontab -l -u root
(porque os cronjobs que eu quero saber sobre executar abaixo root
) e diz que não tenho privilégios para usar -u
.
root
usuário.
cronie
, como fornecido no Fedora e RHEL6, não se refere a eles /etc/crontab
, mas use /etc/anacrontab
. Eu posso estar enganado sobre quaisquer implementações reais que não se refiram a elas em nenhum arquivo de configuração. (Mas então, eu não downvote quer .... Eu só estou dizendo.)
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
root
ouapache
ou qualquer coisa, mas um deve usar/etc/crontab
ou (melhor, na maioria das distros)/etc/cron.d
e/etc/cron.[timeframe]
.