Оболочка Linux – выводить пинг в файл и сохранять только последние X строкLinux

Ответить
Anonymous
 Оболочка Linux – выводить пинг в файл и сохранять только последние X строк

Сообщение Anonymous »

Я хочу написать сценарий оболочки для моего Raspberry Pi, чтобы он постоянно пинговал определенный хост, но сохранял только последние 20 результатов в текстовом файле.
Поэтому моя идея заключалась в перенаправлении вывод ping в текстовый файл и напишите цикл, чтобы неоднократно ограничивать указанный файл 20 строками:

Код: Выделить всё

ping ServerX.domain.com -i 5 -D 1>/home/user/Desktop/Ping.txt &
while :
do
tail /home/user/Desktop/Ping.txt -n 20 >/home/user/Desktop/Ping.txt
done
Каким-то образом содержимое файла Ping.txt полностью стирается? Поэтому мне приходится перенаправить содержимое в переменную, а затем переписать его в файл:

Код: Выделить всё

ping ServerX.domain.com -i 5 -D >/home/user/Desktop/Ping.txt &
while :
do
PingContent=$(tail /home/user/Desktop/Ping.txt -n 20)
echo "$PingContent" >/home/user/Desktop/Ping.txt
sleep 4
done
Кажется, это работает хорошо, но время от времени в последней строке моего файла появляются нечитаемые нулевые символы. Я предполагаю, что это происходит, когда обе команды пытаются одновременно записать данные в Ping.txt. Как мне этого избежать?

Подробнее здесь: https://stackoverflow.com/questions/787 ... st-x-lines
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»