Comandos Linux at, batch, atq e atrm
Em sistemas operacionais do tipo Unix, os comandos at , batch , atq e atrm podem agendar um comando ou comandos para serem executados em um horário especificado no futuro.
Este documento cobre as versões GNU / Linux de at , batch , atq e atrm .
Descrição
O comando at agenda um comando para ser executado uma vez em um horário específico em que você normalmente tem permissão para executar. O comando at pode ser qualquer coisa, desde uma simples mensagem de lembrete até um script complexo. Você inicia executando o comando at na linha de comando, passando o horário agendado como opção. Em seguida, coloca você em um prompt especial, onde você pode digitar o comando (ou série de comandos) a ser executado no horário agendado. Quando terminar, pressione Control-D em uma nova linha e seu comando será colocado na fila.
Uma sequência típica de comando se parece com esta (os comandos que você digita são mostrados aqui na caixa azul ou em negrito abaixo):
at 21:30 ter
aviso: os comandos serão executados usando / bin / sh at> echo "São 21:30 no domingo." at> ^ D emprego 1 em Dom Nov 16 09:30:00 2014
Quando executamos o comando, a primeira coisa que fizemos foi nos dar um “aviso” nos dizendo com qual shell de comando nossos comandos serão executados: neste caso, / bin / sh , o Bourne Shell . Esse shell é o shell Unix padrão tradicional.
Em seguida, ele nos coloca no prompt > . Aqui digitamos um simples comando de eco , que ecoa uma sequência de texto. Pressionamos enter e somos colocados em um novo prompt > . Em seguida, pressionamos Control-D , dizendo que todos nós terminamos nossos comandos. Em seguida, ele nos diz que nosso trabalho é o número 1 e que será executado na próxima terça-feira.
NotaA saída do seu comando especificado será enviada para você. Você pode ler este email com o programa mail , ou um programa como o pine (ou a versão moderna do pine, chamada alpine ). Você pode baixar esses programas se não os possuir ou instalá-los com o seu gerenciador de pacotes; por exemplo, no Ubuntu , que usa o sistema de gerenciamento de pacotes APT, você pode instalá-los usando o comando apt-get , especificamente: sudo apt-get install mail ou sudo apt-get install alpine .
Especificando o tempo
at usa uma representação muito casual da hora e da data. Ele até conhece alguns horários “comumente usados” que você não pode esperar – sabe que “hora do chá” é tradicionalmente às 16h, por exemplo.
Aqui estão alguns exemplos de horários para os quais você pode passar para agendar um comando. Por exemplo, suponha que o horário atual seja 10:00, terça-feira, 18 de outubro de 2019. As seguintes expressões seriam traduzidas para os seguintes horários:
a expressão: | traduziria para: |
---|---|
noon | 12:00 18 de outubro de 2019 |
midnight | 12:00 19 de outubro de 2019 |
teatime | 16:00 18 de outubro de 2019 |
tomorrow | 10:00 19 de outubro de 2019 |
noon tomorrow | 12:00 19 de outubro de 2019 |
next week | 10:00 25 de outubro de 2019 |
next monday | 10:00 24 de outubro de 2019 |
fri | 10:00 21 de outubro de 2019 |
NOV | 10:00 18 de novembro de 2019 |
9:00 AM | 9:00 19 de outubro de 2019 |
2:30 PM | 14:30 18 de outubro de 2019 |
1430 | 14:30 18 de outubro de 2019 |
2:30 PM tomorrow | 14:30 19 de outubro de 2019 |
2:30 PM next month | 14:30 18 de novembro de 2019 |
2:30 PM Mon | 14:30 21 de outubro de 2019 |
2:30 PM 10/21 | 14:30 21 de outubro de 2019 |
2:30 PM Oct 21 | 14:30 21 de outubro de 2019 |
2:30 PM 10/21/2014 | 14:30 21 de outubro de 2019 |
2:30 PM 21.10.14 | 14:30 21 de outubro de 2019 |
now + 30 minutes | 10:30 18 de outubro de 2019 |
now + 1 hour | 11:00 18 de outubro de 2019 |
now + 2 days | 10:00 20 de outubro de 2019 |
4 PM + 2 days | 16:00 20 de outubro de 2019 |
now + 3 weeks | 10:00 8 de novembro de 2019 |
now + 4 months | 10:00 18 de fevereiro de 2020 |
now + 5 years | 10:00 18 outubro 2024 |
… portanto, se você executar o comando:
at now + 10 years
… e, em seguida, insira um comando no prompt > , pressione enter e digite Control-D ; você receberá os resultados do seu comando por e – mail daqui a dez anos.
NotaSe você não especificar um horário na linha de comando, at retornará a seguinte mensagem de erro:
Garbled time
… e nenhum trabalho será adicionado à fila. Portanto, sempre especifique seu tempo na linha de comando.
Usando atq para ver sua fila
Você pode usar o programa atq para exibir as tarefas na fila no momento . Digite atq para exibir a fila.
atq
1 Ter Out 22 09:48:00 2019 uma esperança
Essas informações são da esquerda para a direita: número do trabalho , data , hora , ano , fila e nome de usuário .
O atq listará apenas os trabalhos que pertencem a você – a menos que você seja o superusuário, nesse caso, listará os trabalhos de todos os usuários. Portanto, para listar todas as tarefas atualmente em fila no sistema, digite este comando (se você tiver privilégios de superusuário):
sudo atq
… e digite sua senha, quando solicitado.
Sintaxe
at [-V] [-q queue] [-f file] [-mMlv] timespec...
at [-V] [-q queue] [-f file] [-mMkv] [-t time]
at -c job [job...]
atq [-V] [-q queue]
at [-rd] job [job...]
atrm [-V] job [job...]
batch
at -b
Descrição técnica
comandos de leitura at e batch da entrada padrão ou de um arquivo especificado que deve ser executado posteriormente, usando sh .
at executa comandos em um horário especificado.
atq lista os trabalhos pendentes do usuário, a menos que o usuário seja o superusuário ; nesse caso, os trabalhos de todos são listados. O formato das linhas de saída (uma para cada trabalho) é: número do trabalho , data , hora , ano , fila e nome de usuário .
atrm exclui trabalhos, identificados pelo número do trabalho.
o lote executa comandos quando os níveis de carga do sistema permitem; em outras palavras, quando a média de carga cai abaixo de 1,5 ou o valor especificado na chamada de atd .
At permite especificações de tempo bastante complexas, estendendo o padrão POSIX.2 . Ele aceita horários no formato HH: MM para executar um trabalho em um horário específico do dia. (Se esse horário já passou, o dia seguinte é assumido.) Você também pode especificar meia-noite , meio-dia ou hora do chá (16:00) e pode ter um horário do dia com o sufixo AM ou PM para executar pela manhã ou tarde. Você também pode dizer em que dia o trabalho será executado, fornecendo uma data no formulário nome do mês dia com um ano opcional ou uma data no formato MMDD [CC] AA , MM / DD / [CC] AA , DD.MM. [CC] AA ou [CC] AA-MM-DD . A especificação de uma data deve seguir a especificação da hora do dia. Você também pode fornecer horários como agora + contar unidades de tempo , em que as unidades de tempo podem ser minutos, horas, dias ou semanas e pode dizer para executar o trabalho hoje, sufixando o horário com hoje e amanhã. sufixando a hora com amanhã.
Por exemplo, para executar um trabalho às 16h daqui a três dias, você faria às 16h + 3 dias , para executar um trabalho às 10h do dia 31 de julho, às 10h do dia 31 de julho e para executar um trabalho às 1h do dia seguinte , você faria às 01:00 amanhã .
A definição da especificação de horário pode ser encontrada em / usr / share / doc / at / timespec .
Para at e batch , os comandos são lidos a partir da entrada padrão ou do arquivo especificado com a opção -f e executados. O diretório de trabalho , o ambiente (exceto as variáveis BASH_VERSINFO , DISPLAY , EUID , GRUPOS , SHELLOPTS , TERM , UID e _ ) e o umask são retidos a partir do momento da chamada.
Como no momento é implementado como um programa setuid , outras variáveis de ambiente (por exemplo, LD_LIBRARY_PATH ou LD_PRELOAD ) também não são exportadas. Isso pode mudar no futuro. Como solução alternativa, defina essas variáveis explicitamente em seu trabalho.
Um comando at ou batch executado a partir de um shell su reterá o ID do usuário atual. O usuário receberá um erro padrão e uma saída padrão de seus comandos, se houver. O correio será enviado usando o comando / usr / sbin / sendmail . Se at for executado a partir de um shell su , o proprietário do shell de login receberá o email.
O superusuário sempre pode usar esses comandos. Para outros usuários, a permissão para usar at é determinada pelos arquivos /etc/at.allow e /etc/at.deny . Consulte at.allow para obter detalhes.
Opções
-V | Imprime o número da versão no erro padrão e sai com sucesso. |
-q queue | Usa a fila especificada. Uma designação de fila consiste em uma única letra; designações de fila válidas variam de a a z e A a Z. A fila a é o padrão para at eb para o lote. Filas com letras mais altas são executadas com maior gentileza. A fila especial ” = ” está reservada para trabalhos em execução no momento. Se um trabalho for enviado para uma fila designada com uma letra maiúscula, o trabalho será tratado como se tivesse sido enviado para lote no momento do trabalho. Quando o tempo é atingido, as regras de processamento em lote com relação à média de carga são aplicadas. Se o atq receber uma fila específica, ele mostrará apenas os trabalhos pendentes nessa fila. |
-m | Envie email para o usuário quando o trabalho for concluído, mesmo se não houver saída. |
-M | Nunca envie email para o usuário. Em outras palavras, execute o comando, mas não notifique o usuário sobre sua saída. |
-f file | Lê o trabalho do arquivo em vez da entrada padrão. |
-t time | Execute o trabalho no momento , fornecido no formato [[ CC ] AA ] MMDDhhmm [ . ss ] |
-eu | Executar at -l é o mesmo que executar atq ; exibe todas as filas nos trabalhos. |
-r | É o mesmo que executar o atrm . Remove um trabalho da fila de at . |
-d | Também é um apelido para atrm . |
-b | É um alias para lote . |
-v | Mostra a hora em que o trabalho será executado antes de ler o trabalho. Os horários exibidos estarão no formato “Qui 20 de fevereiro às 14:50:00 1997”. |
-c | Os gatos são os trabalhos listados na linha de comando para a saída padrão. |
arquivos
/ var / spool / cron / atjobs
/ var / spool / cron / atspool
/ proc / loadavg
/ var / run / utmp
/etc/at.allow
/etc/at.deny
Exemplos
às -m 01:35 <my-at-jobs.txt
Execute os comandos listados no arquivo ‘ my-at-jobs.txt ‘ às 1:35 . Toda a saída do trabalho será enviada para o usuário que está executando a tarefa. Quando este comando foi inserido com sucesso, você receberá um prompt semelhante ao exemplo abaixo:
comandos serão executados usando / bin / sh trabalho 1 em Tue Dec 24 00:22:00 2019
at -l
Este comando listará cada um dos trabalhos agendados em um formato como o seguinte:
1 Wed Dez 24 00:22:00 2003
… é o mesmo que executar o comando atq .
em -r 1
Exclui o trabalho 1 . Este comando é o mesmo que executar o comando atrm 1 .
atrm 23
Exclui o trabalho 23. Este comando é o mesmo que executar o comando em -r 23 .
Comandos relacionados
crontab – Exiba e edite uma lista de tarefas para o sistema executar em intervalos regulares.