为了避免对我的 SSD 进行无用的写入,我已通过以下方式将/var/log
(和/tmp
)移至 RAM /etc/fstab
:
cat >> /etc/fstab <<'EOT'
tmpfs /tmp tmpfs defaults,size=1g 0 0
tmpfs /var/log tmpfs defaults,nosuid,nodev,noatime,mode=0755,size=5% 0 0
EOT
Run Code Online (Sandbox Code Playgroud)
但从那以后我没有/var/log/syslog
文件。
我认为这是因为/var/log
在rsyslogd
启动时尚未安装,但是在手动重新启动服务时(当我确定/var/log
已安装时)它仍然不起作用。
我正在使用:
/var
此时将任何内容移至tmpfs 中是一个坏主意,因为目前 Ubuntu 或任何其他主要 Linux 发行版都不支持它。它还具有占用主内存并丢失所有以前的日志文件的缺点,这妨碍了问题诊断。SSD 驱动器在写入周期方面确实没有那么脆弱,一些日志文件不会产生足够的数据和写入操作,从而显着缩短 SSD 的使用寿命。很少有 SSD 会因写入周期耗尽而发生故障。
我怀疑它/var/log/syslog
仍然存在,但仅在根文件系统上,因为在安装rsyslog
之前启动/var/log
。当您在 处挂载另一个文件系统时/var/log
,其先前的内容将隐藏在下面。
作为一种解决方法,您可以将根文件系统绑定到其他位置,这样您就可以检查其内容,而不受其他挂载点的影响:
sudo mkdir -p /mnt/root
sudo mount --bind / /mnt/root
Run Code Online (Sandbox Code Playgroud)
您现在应该可以看到 中的其他内容/mnt/root/var/log
。
PS:如果您的机器除了 SSD 之外还有内置硬盘驱动器,则可以/var
从那里安装。这就是我和许多其他人所做的,主要不是因为担心写周期。主要原因始终是,错误的程序可能会意外写入大量(日志)数据,/var
并且在文件系统已满之前没有人会注意到,此时如果/var
是/
.
您应该在文件中创建这些文件,/etc/rc.local
如下所示:
# Restore tmpfs directories for logs.
# Extend the following directories to your needs according to installed packages
for dir in apparmor apt cups dist-upgrade fsck gdm installer samba unattended-upgrades upstart ;
do
if [ ! -e /var/log/$dir ] ; then
mkdir /var/log/$dir
fi
done
# Restore syslog files
for file in debug mail.err mail.log mail.warn syslog ;
if [ ! -f /var/log/$file ] ; then
touch /var/log/$file
chown syslog:adm /var/log/#file
fi
done
# Set owners for the newly created log directories
chown root:adm /var/log/samba
Run Code Online (Sandbox Code Playgroud)
上面的脚本位于该行之前:
exit 0
Run Code Online (Sandbox Code Playgroud)
该脚本在系统启动时创建那些必要的目录和文件。rsync
如果您需要在系统重新启动之间保留这些目录,您还可以选择在关闭时使用这些目录进行同步。
归档时间: |
|
查看次数: |
7305 次 |
最近记录: |