tarefas agendadas armazenadas em /etc/cron.d funcionam, mas não são exibidas com crontab -l no RHEL4

0

Eu achei que entendi o cron, mas parece que não entendi.

Estou usando o cron no Red Hat Enterprise Linux v. 4

Organizamos tarefas cron armazenando-as em /etc/cron.d. Eles são todos de propriedade da raiz. (tem root na especificação do cron no arquivo .cron)

Quando armazenado lá, se codificado corretamente, os trabalhos são executados.

No entanto, mesmo logado como root

crontab -l

não lista as tarefas em /etc/cron.d, apesar de estarem sendo executadas.

O que eu não estou entendendo? Toda pesquisa na web que fiz sobre isso me diz que crontab -l é o comando a ser executado. No entanto, não lista todos os trabalhos em execução.

ATUALIZAÇÃO: Como não ficou claro, minha pergunta é realmente

What command lets you see all the cron jobs that are scheduled to run for a given user?

Você pode encontrar muitas fontes que dizem que crontab -l é esse comando, mas isso não é demonstrável.

    
por Steve Cohen 06.10.2016 / 19:20

3 respostas

2

Como declarado no manual

crontab -l

lista o crontab para o usuário atual

/var/spool/cron/root

se você for root.

crontab -u other -l

para algum outro usuário. Edite o crontab com

crontab -e

O formato é

#.---------------- minute (0 - 59)
#|      .------------- hour (0 - 23)
#|      |       .---------- day of month (1 - 31)
#|      |       |       .------- month (1 - 12) OR jan,feb,mar,apr ...
#|      |       |       |       .---- day of week (0 - 6) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat
#|      |       |       |       |
#*      *       *       *       *       the command to be executed

0       */2     *       *       *       /every2h.sh

Além disso, há também

find  /etc/cron* -type f

que não é aconselhável usar como é destinado a tarefas do cron de distribuição. todos esses arquivos são executados como root e não podem ser gravados por outros usuários por padrão.

    
por 06.10.2016 / 19:31
0

De acordo com man crontab , há -u opção para acrescentar um nome de usuário.

Para mostrar trabalhos agendados para um usuário, o uso é:

crontab -l -u username

E você precisa ter privilégios de superusuário para usá-lo. Se você não for o usuário root , use-o como:

sudo crontab -l -u username

E, de acordo com man crond e /etc/crontab , não há comando para mostrar os usuários que possuem os trabalhos. Os proprietários dos trabalhos são salvos nos arquivos com essa estrutura:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Assim, acho que você terá que procurar por nomes de usuário em cada arquivo ou escrever um script bash para selecioná-los e listá-los.

Além disso, verifique esta pergunta: Qual é a diferença entre /etc/cron.d e / var / spool / cron?

    
por 06.10.2016 / 21:50
-1

cat /etc/cron.d/* parece mostrar o mesmo tipo de listagem para os itens implantados como crontab -l para os itens implementados por meio do crontab.

    
por 06.10.2016 / 22:37

Tags