我想切换到 ubuntu 服务器上的日志目录,并检查 duplicity 日志,但我不知道发生了什么,似乎所有日志文件和子目录都丢失了!这是我登录服务器时使用的命令:
sudo su | cd /var/log | cat duplicity.log | grep -i '. errors' | sort | uniq
我想我应该用 替换前两个管道&&
。我有几个问题,我能以某种方式恢复日志吗?它们会继续像平常一样出现吗?删除所有日志文件会造成一些服务器问题吗?为什么会发生这种情况?
答案1
当将命令连接在一起时,每个命令都将在其自己的 shell 中执行。后续程序将不会继承先前程序的环境,因此,诸如此类的事情cd
不再存在。
因此,如果您在主目录中,说/home/user
并执行cd data | cat filename
,会发生什么情况是,您执行cd data
并将输出(在这种情况下为零)传输到具有新环境的新进程,该进程仍然在/home/user
而不是在,因此在尝试时/data
不会找到它。filename
cat
更好的选择是直接说cat /var/log/duplicity.log
,而不是cd
一开始就说。
cat
甚至更好的是:使用时你首先不需要grep
:
sudo grep -i ". errors" /var/log/duplicity.log | sort -u
应该可以像预期的那样工作。