Я хотел перейти в каталог журналов на сервере ubuntu и проверить журнал дублирования, но я не знаю, что произошло, похоже, что все файлы журналов и подкаталоги пропали! Это команда, которую я использовал при входе на сервер:
sudo su | cd /var/log | cat duplicity.log | grep -i '. errors' | sort | uniq
Полагаю, мне следовало заменить первые два канала на &&
. У меня несколько вопросов, можно как-нибудь восстановить логи? Будут ли они и дальше появляться так, как обычно? Не вызовет ли удаление всех файлов журнала проблем с сервером? Почему это произошло?
При объединении команд по конвейеру каждая из них будет выполняется в собственной оболочке. Последующие программы не будут унаследовать среду предыдущих программ, и поэтому такие вещи, как cd
, больше не присутствуют.
Итак, если вы находитесь в своем домашнем каталоге, скажите / home / user
и выполните cd data | cat filename
, происходит то, что вы выполняете cd data
и передаете вывод (в данном случае ничего) новому процессу с новой средой, которая по-прежнему будет в / home / пользователь
, а не в / data
, и поэтому не сможет найти filename
при попытке cat
его.
Лучшим вариантом было бы просто сказать cat /var/log/duplicity.log
, а не cd
ing в первую очередь.
Еще лучше: вам не нужен cat
в первую очередь при использовании grep
:
sudo grep -i ". errors" /var/log/duplicity.log | sort -u
должно работать должным образом.