Registrando saída de script em um arquivo

4

Eu escrevi um script simples para monitorar meus relógios gpu e temporários. Eu queria que, além de estar visível no terminal, registrasse sua saída em um arquivo externo. Como eu poderia conseguir isso? Meu script abaixo, para referência:

#!/bin/bash

watch -n 1 "amdconfig --odgc" "amdconfig --odgt"

A pergunta não é duplicada porque estou usando o comando "watch".

    
por Benjamim Linhares 22.01.2016 / 17:28

2 respostas

4

Você realmente não quer fazer isso. watch foi projetado para ser, um, assistido . Sua saída é formatada de modo a tornar o redirecionamento impraticável. Embora você possa realmente fazer isso usando algo como tee , a saída será muitas linhas em branco e muito pouca informação útil.

Então, no caso específico de watch , é melhor escrever seu próprio roteiro que faz a mesma coisa:

#!/bin/bash

## This is an infinite loop, the script will run until you kill it
while :; do
  ## Run the command whose output you want to monitor
  amdconfig --odgc" "amdconfig --odgt

  ## Wait for 2 seconds. This mimics what the watch command does
  ## and also avoids spamming your cpu. 
  sleep 2
done

Salve esse script como ~/bin/amdwatch ou o que quiser, torne-o executável ( chmod +x ~/bin/amdwatch ) e, em seguida, redirecione sua saída para um arquivo:

~/bin/amdwatch > amdwatch.log 

Isso executará o script até que você o pare manualmente e execute o comando amdwatch a cada dois segundos, salvando sua saída em amdwatch.log .

Para a maioria dos scripts, o que você está procurando é script.sh > outputFile.txt ou script.sh >> outputFile.txt . Veja Como faço para salvar a saída do terminal em um arquivo? .

    
por terdon 22.01.2016 / 17:37
3
Por padrão,

watch limpará a tela toda vez que for impressa em stdout . Então sugiro que você use um while loop com um atraso. Em seguida, você pode usar o comando script ou tee para registrar a saída. Por exemplo,

while [ 1 ]; do df ; sleep 0.25; done | tee -a MY_FILE

Ambos serão exibidos na tela e irão para o arquivo, anexando cada execução do comando

    
por Sergiy Kolodyazhnyy 22.01.2016 / 17:43