Parando um comando específico programado pelo comando, exceto outros

1

Estou agendando, digamos, 3 comandos usando o comando at .

$ at teatime
 command1
 command2
 command3
 <Ctrl + D>

Depois de algum tempo, percebi que executar command3 não é exatamente o que eu queria, mas ao mesmo tempo não quero que os comandos restantes parem de ser executados.

Eu tentei procurar o comando at ou algo parecido no System Monitor para que eu pudesse matar o processo responsável por executar command3 , mas não consegui encontrar (talvez eu esteja errado nisso). Também posso parar o daemon ATD que executa esses comandos, mas isso interromperá todos os comandos da execução, o que não é o que eu queria.
Existe alguma outra maneira de parar apenas command3 ?

    
por Edward Torvalds 02.02.2016 / 21:18

1 resposta

2

A solução mais fácil seria cancelar todos os três e reprogramar os que você deseja executar. atq mostrará a lista de tarefas enfileiradas, at -c mostrará uma tarefa enfileirada por número e atrm removerá uma tarefa por número.

Seu problema subjacente é que tudo, desde a invocação de at até o ctrl-d é, em essência, colocado em um único script de shell, que geralmente reside em /var/spool , e eu acho que at tem algum proteção contra esses arquivos sendo modificados após serem enviados, embora eu não me lembre dos detalhes. (Eu acho que isso pode ser experimentado experimentalmente se você tiver acesso root em sua máquina - encontre o arquivo contendo seus comandos e comente o que você não quer executar).

    
por 02.02.2016 / 22:22

Tags