Linux no comando trava?

1

Estou tendo um problema com o comando 'at' do Linux e é muito difícil para o Google 'at' .. O problema é que, seja o que for que eu corra, parece que nunca pára.

por exemplo. aqui está um script simples que eu fiz (eu substituí meu nome de usuário por USER):

#!/bin/bash
echo "Testing" > /local/USER/tmp.txt

Eu coloquei as linhas acima em um arquivo /local/USER/tmp.sh e fiz o arquivo executável. Correndo com

/local/rarandje/tmp.sh

funciona como esperado e cria o arquivo relevante.

Agora, se eu tentar com o comando 'at':

at -f /local/USER/tmp.sh now + 1 min

ele começa a ser executado no tempo desejado, mas apenas fica parado, essa é a saída de -l:

10      Wed Jan 21 15:06:00 2015 = USER
10      Wed Jan 21 15:06:00 2015 a USER

O arquivo tmp.txt de saída não é criado, não há nenhum comando 'echo' ou 'tmp.sh' na lista de processos, então eu realmente não entendo qual é o problema e como depurá-lo.

Uma coisa a ser observada que pode ser relevante, embora também possa ser completamente irrelevante e desviar você: o usuário root não tem permissões para minha pasta pessoal (estou em uma empresa que armazena pastas pessoais na rede e montado via NAS, então o usuário root local na minha máquina na verdade não tem o direito de ler a pasta montada do NAS, pois a raiz local não é a mesma que a raiz remota). No entanto, o root definitivamente tem acesso de leitura / gravação para / local / USER /, já que é apenas um disco local. Não tenho certeza se isso é de alguma forma relevante, por exemplo talvez haja algo no início do comando 'at' que é executado pelo root e precisa ler meu perfil bash ou qualquer outra coisa, mas ainda assim não faz sentido, pelo menos eu esperaria que o trabalho falhasse e não continuasse " executar ".

Estou no Ubuntu 12.04.4 e tenho acesso root (local). Agradecemos antecipadamente.

EDITAR: Eu apenas tentei a mesma coisa que uma raiz, isto é, apenas executando o mesmo comando 'at' que o usuário root, e tudo funciona bem, o arquivo de saída é criado e o job termina.

    
por Relja Arandjelović 21.01.2015 / 15:36

2 respostas

2

Depois do @maiki postou este comentário e eu olhei para o /var/log/syslog e vi esse erro (eu anonymizei com HOSTNAME e USERID):

Jan 21 17:53:32 HOSTNAME atd[27285]: Userid USERID not found - aborting job       14 (a0000e016998f5)

Depois de pesquisar no Google um pouco, achei este post , que basicamente diz que o atd deve ser executado após ypbinding quando o computador é iniciado se houver algum usuário não local (não sou um especialista na maneira como o computador está configurado, tenho um nome de usuário de rede que eu uso para conectar ao meu PC e todos da minha empresa podem se conectar da mesma maneira ao meu PC). Eu apenas reiniciei o atd com sudo service atd restart e meus jobs 'at' estão funcionando bem agora. Não sei como consertar isso permanentemente para que eu não precise reiniciar o 'atd' sempre que eu reiniciar o computador, mas vou tentar descobrir (e editar essa resposta)

    
por 21.01.2015 / 18:13
0

Adicione seu nome de usuário a /etc/at.allow (crie-o se ele não existir)

De acordo com a manpage:

  • se /etc/at.allow existir, os usuários mencionados terão acesso a at
  • else se /etc/at.deny existir, todos os usuários terão acesso a at , exceto os mencionados no arquivo.
  • senão somente o root tem acesso a at
por 21.01.2015 / 16:05

Tags