Я записал простой сценарий для контроля моих часов gpu и временных файлов. Я хотел это к кроме того, чтобы быть видимым на терминале, зарегистрируйте его вывод во внешний файл. Как я мог достигнуть этого? Мой сценарий ниже, для ссылки:
#!/bin/bash
watch -n 1 "amdconfig --odgc" "amdconfig --odgt"
Вопросом не является дубликат, потому что я использую команду "часов".
Вы действительно не хотите делать это. watch
разработан, чтобы быть, гм, смотрел . Его вывод отформатирован таким способом как для создания перенаправления его непрактичным. В то время как можно на самом деле сделать это с помощью чего-то как tee
, вывод будет многими пустыми строками и очень небольшой полезной информацией.
Так, в конкретном случае watch
, Вы - более обеспеченная запись Вашего собственного небольшого сценария, который делает то же самое:
#!/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
Сохраняют тот сценарий как ~/bin/amdwatch
или независимо от того, что Вам нравится, сделайте его исполняемым файлом (chmod +x ~/bin/amdwatch
) и затем перенаправьте его вывод в файл:
~/bin/amdwatch > amdwatch.log
, Который запустит скрипт, пока Вы не остановите его вручную и выполнитесь эти amdwatch
команда каждые две секунды, сохраняя ее вывод к amdwatch.log
.
Для большинства сценариев, что Вы ищете, script.sh > outputFile.txt
или script.sh >> outputFile.txt
. См. , Как я сохраняю терминальный вывод в файл? .
watch
по умолчанию очистит экран каждый раз, когда он печатает к stdout
. Таким образом, я предложил бы, чтобы Вы использовали while loop
с задержкой. Затем Вы могли использовать script
команда или tee
для входа вывода. Например,
while [ 1 ]; do df ; sleep 0.25; done | tee -a MY_FILE
Это и будет отображено на экране и перейдет к файлу, добавляя каждое выполнение команды