linux 二三事

linux 二三事

记点关于 linux 的东西包括

  • 阅读 practical linux system
    • 第五章 ssh 控制访问可以再看看

.bash_logout这个东西相对于.bashrc,感觉后者名字这么一看不太直观啊

搞不懂 hyprland 的 shell 是怎么回事了,

/etc/bashrc 文件主要被其他 Linux 发行版如 Ubuntu、CentOS 等用于设置系统整体的默认 Bash 配置。但 Arch 采用了分离的/etc/bash.bashrc 和/etc/profile.d/机制。

对于 Arch Linux 用户来说,如果要设置默认的 Bash 配置,应该修改/etc/bash.bashrc 文件或添加脚本到/etc/profile.d/目录。

  • /etc/profile 用于设置环境变量等全局设置,影响所有命令(它是入口,它调 bash.bashrc 和 profile.d/*)
  • /etc/bash.bashrc 用于设置 Bash 特定的别名、选项等,只影响 Bash
  • /etc/profile.d/模块化地扩展/etc/profile 的功能,在用户登录 shell 时运行,用来设置环境变量、PATH 等。

这使得 Arch Linux 的默认配置更清晰、模块化,也更易于管理和扩展。

arch linux 用户不需要在~/.bashrc 里面加载系统的配置,因为已经自动加载了。其他发行版需要这一步骤,来自 Claude:

你的.bashrc 文件只影响你自己的 Bash 配置,不需要加载系统默认的配置。 系统默认的 Bash 配置已经在用户登录时通过/etc/profile 和/etc/profile.d/脚本被加载了。

来自 Claude:

需要在.bash_profile 中加载.bashrc 的主要原因有两个:

  • 如果只在.bashrc 中设置环境变量,在非交互式 shell(比如 cron 任务)中这些变量将不可用。所以需要将环境变量设置放在.bash_profile。
  • 但 alias 和函数等 bash 特定的设置,应该放在.bashrc。

/etc/skel 目录是一个特殊的目录,用于保存您希望在创建用户帐户时每个用户都收到的文件

  λ ls /etc/skel
.rw-r--r--  21 root 21 May 20:56  .bash_logout
.rw-r--r--  57 root 21 May 20:56  .bash_profile
.rw-r--r-- 172 root 21 May 20:56  .bashrc

chage 命令主要用于管理用户账号的密码参数,包括密码的有效期、警告期和过期日期等。


nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin

通常情况下你可以通过/etc/passwd 文件来识别服务账号,因为在该文件中看到的用户帐号没有分配 shell。服务账户具有/sbin/nologin, 而不是用户应该拥有的 shell。这意味着服务帐户没有交互式 Shell 或密码。这并不意味着他们的密码为空或 null 值,而只是不存在。换句话说,如果一个用户帐号将/sbin/nologin 作为其 Shell,则不能使用任何密码登录系统。甚至 root 用户也无法 su 或 sudo 到那些帐户:

由于服务账号没有交互式 Shell,并且没有通过 su 或 sudo 切换到交互式 Shell 的方法,在系统上拥有此类账号并不存在安全漏洞问题。但一些系统管理员可能不知道服务账号通常没有交互式 Shell 或密码而产生了疑虑和质疑。对于某些需要交互式 Shell 才能运行其功能的服务,则应采取极端审查和其他安全措施以防止潜在的秘密登录。

nobody 账户在 Linux 中是一个特殊的系统账号。它有以下几个主要 caracteristics:

  • UID 为 65535,GID 也为 65534。即高位的 UID 和 GID。
  • 没有实际登录的权限,主要用作默认的文件所有者。
  • 没有任何特权。拥有非常有限的权限。

nobody 账户的主要用途:

  • 为没有指定所有者的新文件提供默认所有者。
  • 限制那些只需要有限权限运行的程序和进程。
  • 作为 Web 服务器上安全的默认所有者。
  • 为匿名用户提供有限的访问。

举个例子:

  • 在 Apache 或 Nginx 上,新建的文件和目录默认都由 nobody 所有。
  • 运行在非交互式终端(比如守护进程) 的程序,其默认用户也是 nobody。

关于分配 ip 地址时

  • 静态寻址: 管理员来手动分配
  • 动态寻址: 靠 DHCP 服务器

虽然 SSH 守护进程(SSHD)通过其加密通道具有内置安全性,但其通信仍然容易受到攻击。有多种方法可以保护 SSH 以使攻击对攻击者来说不那么成功。

使用两个文件来限制访问:/etc/hosts.allow 和/etc/hosts.deny。它们不是配置文件,因此无需重新启动服务,系统在每次客户端访问服务时都会检查这些文件。 /etc/hosts.allow 文件比两者中更重要,其覆盖 /etc/hosts.deny 文件

If you find that setting such an entry in /etc/hosts.allow doesn’t work for you, then you need to check for tcp_wrapper integration in sshd using the following command:

$ sudo ldd /path/to/binary | grep libwrap
If you receive no response, your sshd wasn’t compiled with tcp_wrappers enabled and is likely deprecated for your distribution. This is, unfortunately, the case with many packaged sshd installations. The response you’re looking for is similar to the following:

$ sudo ldd /usr/sbin/sshd | grep libwrap
        libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007fc6c2ab2000)
You have three options if your sshd doesn’t have tcp_wrappers support:

Use other methods to secure sshd (firewall rules, iptables, nftables).

Compile openssh_server with tcp_wrappers enabled.

Find and replace your current sshd with an openssh_server package that has tcp_wrappers enabled.

To give you options for firewalld, iptables, and nftables, consider the following commands that perform similar functions to adding entries into /etc/hosts.allow and /etc/hosts.deny.

sudo make uninstall, make from source 的软件卸载时需要在安装文件夹(根据 makefile)里跑这个(long live for package management tools like pacman)

确实挺烦的,看来还得留着安装文件夹,所以说 make clean 是有用的


dracut -f是一个Linux命令,用于创建或重新创建initramfs(初始RAM文件系统)映像。

Initramfs是一个临时的root文件系统,被用于在系统的真正root文件系统被挂载前提供一些必要的工具和服务。

-f选项是强制重新创建initramfs映像,即使现有的映像文件是最新的。


check /var/log for application logs?

$ cd /var/log
$ sudo grep -ir "Syntax error" *
Binary file journal/027dd8a8c9624671b26d07e94eae8f1d/system.journal matches

journalctl -xe 是用于查看 journal logs 的一个命令选项,这个选项将会显示日志的额外上下文并且默认滚动到最末尾的条目。具体来说:

  • -x 选项是 --catalog 的短形式,它会尝试显示在 log message 旁边的附加的解释性文本。这些文本来自 systemd 的 "message catalog",为某些消息提供了更详细的解释或者故障排除信息。
  • -e 选项是 --pager-end 的短形式,这会使得 less(默认的分页器)在打开日志时就滚动到末尾,这样你可以看到最新的日志条目。

购买服务器系统时应始终选择具备冗余电源、多个NIC和充足内存的配置。将磁盘设置为RAID 10等阵列模式可以避免因故障而影响您的晚上和周末

热量是电子设备的敌人,这就是为什么数据中心看起来风大、冷冻的原因之一。散热是任何良好数据中心的重要问题和主要设计特点之一

内存“条”通常会完全失效,我从未见过它们部分失效。当内存条失败时,在启动过程中RAM计数不会完全完成。例如,如果系统包含64 GB的RAM,可能只能识别48 GB。尽管内存条可以单独出现故障,但它们是成对读取的。因此,如果您的系统有八个8 GB内存条(每个8个为一组共64 GB),并且其中一个出现故障,则RAM计数将按组失败。


lscpu lspci lsblk


create a daily report

#!/bin/bash
 
#Daily Report Script
 
today=`date +%m-%d-%Y`
 
touch /opt/note/$today.html
 
echo "<pre>" >> /opt/note/$today.html
 
echo "Last Log " >> /opt/note/$today.html
last | grep root >> /opt/note/$today.html
 
echo "Non-privileged accounts in the Last Log " >> /opt/note/$today.html
last | grep -v root >> /opt/note/$today.html
 
echo " " >> /opt/note/$today.html
 
echo "Root Accounts " >> /opt/note/$today.html
grep :0 /etc/passwd >> /opt/note/$today.html
 
echo " " >> /opt/note/$today.html
 
echo "Files modified since yesterday " >> /opt/note/$today.html
find /etc -mtime -1 >> /opt/note/$today.html
 
echo "</pre>" >> /opt/note/$today.html

入侵者很少锁定系统管理员,因为这样做会引起行动和纠正措施。相反,入侵者试图掩盖自己的行动,并利用系统进行数据外泄或攻击当前网络内部或外部的其他系统。

您可以通过特定错误筛选日志,或将其他命令的输出重定向到文件中,例如防火墙状态检查。将您用于检查系统安全性的命令放在此脚本中,并设置一个cron作业以www-data身份每天运行该脚本,并在开始工作时立即检查它以进行一些取证调查或轻松继续您的工作。确保www-data用户对/opt/note目录具有读、写和执行权限。


"systemctl get-default" 是一个用于查看系统默认运行级别的命令。运行级别是指操作系统启动后的模式或状态,决定了哪些服务和进程会自动启动。

该命令的输出会显示当前系统的默认运行级别。运行级别通常用数字表示,如0、1、2等。每个数字对应不同的模式,比如单用户模式、多用户模式、图形界面模式等。

通过运行 "systemctl get-default",你可以获取系统当前的默认运行级别。这对于了解系统的启动方式以及确认系统启动后默认的工作模式非常有用。

请注意,这个命令仅适用于使用 Systemd 作为初始化系统的 Linux 发行版。 在安装新系统时,你必须谨慎选择要安装哪些服务。例如,在我安装基于Red Hat 的服务器系统时,我通常使用最小化安装选项,其中通常只包括SSH 服务。根据需要添加服务和软件包以保持我的系统足迹尽可能小且专注于单个任务。我从不将图形用户界面(GUI)或图形显示管理器安装到服务器系统上,因为这些用户友好界面本身存在安全漏洞。


虚拟化和云计算使企业能够专注于每个系统提供单一服务。

至少,您的每个系统都需要一个SSH服务器。这是一种安全的连接和管理系统的方法。

您应该对所有受管理的系统进行安全“扫描”。进行安全扫描或审核时需检查是否存在未使用且过时的服务,这些服务会使系统易受攻击。安全扫描包括使用以下命令检查本地机器上的监听端口:

$ netstat -an | grep LISTEN | grep tcp

恶意行为者经常设置一个伪装成Web服务、DNS服务或其他合法服务的信息泄露服务,以欺骗系统管理员和端口扫描器。您应该检查系统上所有正在监听的进程是否合法:


一旦在您的系统上创建了一个用户账户,您的系统的安全性就会降低

与交互式用户帐号最大的问题是弱密码。弱密码威胁着您的系统安全性。至少有两种方法来缓解这个问题。一种方法是通过创建和执行强密码策略来设置您的系统要求使用强密码。另一种方法是禁用密码使用,改为使用SSH密钥文件让用户无需输入密码即可连接到其他系统上去. 您还可以配置多因素认证(MFA)

当毫不知情的用户使用密码从一个系统连接到另一个系统时,通过数据包嗅探或键盘记录程序捕获密码是一种常见的破坏系统的方法

  • 数据包嗅探:这是一种被动监听网络数据传输的方式。攻击者通过嗅探器程序,能够捕获通过网络传输的数据包,并能解析这些数据包中的内容。如果你通过不安全的网络连接(比如没有加密的WiFi或者不安全的HTTP连接)发送敏感信息,比如密码,攻击者就有可能捕获到这些信息。这就是为什么我们总是推荐在处理敏感信息时使用安全连接,如HTTPS或者VPN。
  • 键盘记录程序(Keylogging):这是一种恶意软件,会在用户的设备上秘密安装,然后记录用户的键盘输入,包括密码、信用卡号等敏感信息。这些信息被捕获后,就会被发送到攻击者。为了防止键盘记录,用户应该安装可靠的安全软件,并定期更新操作系统和软件,以防止恶意软件的入侵。

默认的加密算法是RSA,但是RSA和DSA算法都已经过时了,不应该使用它们。较新的椭圆曲线数字签名算法(ECDSA)目前是最佳选择。虽然这个算法支持256位和384位加密,但为了获得最大保护,请使用521位加密

Copy the ID from one server to another using the following command:

[khess@server1 ~]$ ssh-copy-id server2

应用一系列STIG控制是一项耗时的任务。


看起来经理们像普通员工一样频繁变动位置。那些裁员波及广泛、持续不断的日子里,成为移动目标是明智之选

okay im not interested in the following things.


$ tree -a -I .git

-I is good!


wlp2s0的意义:

  • wl 表示 wireless LAN
  • p 表示 PCI 接口
  • 2s0 是网卡的具体编号

link/ether 表示这是一个以太网链接,无线网络适配器也会显示这一信息。

查找无线网卡相关的驱动: lspci | grep -i net

rfkill 显示的设备名称通常是 phyX,比如 phy0

enp7s0u1u4c2的意义:

Linux系统中,网络接口的命名规则一般如下:

  • 有线接口:enoX, enpXsY
  • 无线接口:wlX, wlpXsY

其中,对于有线接口:

  • eno表示onboard设备,即主板集成的有线网卡
  • enp表示PCI-E扩展接口的有线网卡

常见的网络线缆速率区分:

  • 10BASE-T:10Mbps,用于10Mbps Ethernet,需要2对线缆。
  • 100BASE-TX:100Mbps,用于100Mbps Fast Ethernet,需要2对线缆。也称为百兆线。
  • 1000BASE-T: 1Gbps,用于1Gbps Gigabit Ethernet,需要4对线缆。也称为千兆线。
  • 10GBASE-T: 10Gbps,用于10Gbps 10G Ethernet,需要8对线缆。

常见的RJ45网线分类:

  • Cat5支持100Mbps速率
  • Cat5e支持1000Mbps速率
  • Cat6支持10Gbps速率
  • 超六类(CAT.7/7A)

cron 0 1 * * *

从左到右是意味着0th minute/1th hour/any day of month/any month of year/any day of the week


在 Linux 中,对文件和目录的访问控制通常由三种类型的权限进行管理:用户权限、组权限和其他人权限。每种类型都有三种操作权限:读取、写入和执行。但这种权限模型在某些情况下可能会过于简单,例如,如果你想让多个用户有不同的访问权限,或者你想给一个用户组以外的用户分配权限,这就需要更灵活的权限控制方式。

这就是 Access Control Lists(ACLs)的作用。ACLs 提供了一种更细粒度的权限管理方式,允许你为特定用户或用户组分配特殊的权限。使用 ACLs,你可以覆盖或扩展传统的 Unix 文件权限,并对每个用户或组应用不同的权限。

ACLs 的组成

在 Linux 中,ACL 是一个权限列表,其中每个条目都有两部分组成:一个标识符(用户或组)和一组权限(读取、写入和执行)。你可以为文件或目录分配多个 ACL 条目,以满足复杂的权限需求。

一个 ACL 条目看起来可能像这样:user:username:rwx,其中 username 是用户名,rwx 指示该用户有读取、写入和执行的权限。

使用 ACLs

在 Linux 中,你可以使用 getfacl 命令查看文件或目录的 ACL,使用 setfacl 命令修改 ACL。例如,如果你想给用户 username 对文件 file.txt 的读取和写入权限,你可以运行以下命令:

setfacl -m u:username:rw file.txt

然后,你可以使用 getfacl 命令检查 ACL 的更改:

getfacl file.txt

ACLs 和传统权限控制的区别

总的来说,ACLs 提供了比传统 Unix 文件权限更细粒度的权限控制。传统的权限模型只允许你为一个用户、一个组和其他人设置权限,而 ACLs 允许你为任意数量的用户和组设置独立的权限。因此,如果你需要更复杂的权限安排,ACLs 可能是一个很好的选择。

另一方面,使用 ACLs 也有一些缺点。首先,它们可能会让权限管理变得更复杂,尤其是在大型系统中。其次,不是所有的文件系统都支持 ACLs,因此你可能需要检查你的文件系统是否支持。最后,虽然大多数现代的 Linux 发行版都支持 ACLs,但在某些老的或者定制的系统中,可能需要安装额外的软件包才能使用。

这是一个很好的问题,理解 ACLs 是如何在底层工作的,可以帮助你更好地理解它们的功能和限制。

在 Unix 和 Linux 系统中,文件权限的底层实现是通过 inode(索引节点)实现的。每个文件和目录都有一个相关的 inode,其中包含了关于该文件或目录的各种信息,包括其所有者、权限和其他元数据。

传统的 Unix 文件权限存储在 inode 中的一个特定字段中,这个字段包含了三组各有三个位的权限位:用户权限、组权限和其他人权限。这种权限模型的限制是很明显的:你只能为一个用户、一个组和其他人设置权限。

而 ACLs 则在这个基础上进行扩展。具体来说,当你为一个文件或目录设置 ACL 时,系统会在文件系统中创建一个额外的数据结构来存储 ACL 条目。这个数据结构与文件或目录的 inode 关联,但可以包含任意数量的条目,每个条目都包含一个用户或组标识符和一组权限位。

当系统需要检查一个用户是否有权访问一个文件或目录时,它首先会检查传统的 Unix 文件权限,然后再检查 ACL。如果用户在 ACL 中有一个条目,并且该条目允许访问,那么系统就会允许访问,即使 Unix 权限位不允许。

这就是 ACLs 能提供更强大功能的原因:它们在底层实现了一种全新的权限模型,允许更灵活的权限分配。然而,这也意味着使用 ACLs 可能会对系统性能产生一些影响,因为系统在处理文件或目录访问请求时需要检查更多的数据。这也是为什么,尽管 ACLs 提供了更多的功能,但在许多情况下,人们仍然倾向于使用传统的 Unix 文件权限。

是的,你的理解是正确的。Access Control Lists (ACLs) 是由 Linux 内核和一些文件系统支持的功能。在早期的 Linux 内核版本中,ACLs 不是内置的功能。

ACLs 的支持在 Linux 内核 2.4 版本中被引入,并在 2.6 版本中得到了进一步的改进。此外,文件系统也需要支持 ACLs。目前,许多常见的 Linux 文件系统,如 ext3, ext4, XFS, 和 Btrfs,都支持 ACLs。

在使用 ACLs 之前,你可能需要确保你的系统和文件系统都支持 ACLs。你可以通过查看文件系统的挂载选项来确认文件系统是否支持 ACLs。例如,在 Linux 中,你可以运行 mount 命令查看挂载选项:

mount | grep acl

如果输出中包含 "acl",那么你的文件系统支持 ACLs。

总的来说,ACLs 是由 Linux 内核和文件系统共同支持的功能,而且需要在一些特定的内核版本和文件系统中才能使用。


在大多数情况下,对于Linux系统来说,一个swap分区就足够了。然而,有一些特殊情况可能会需要两个或更多的swap分区。具体的情况可能包括:

不同的物理硬盘:如果你有两个或更多的物理硬盘,那么在每个硬盘上设置一个swap分区可能会提高性能。这是因为当系统需要使用swap时,它可以同时从两个硬盘读取和写入数据,这可能比只从一个硬盘读取和写入数据要快。

系统和数据分离:如果你希望将系统和用户数据分开存储,那么可能需要在每个硬盘上都设置一个swap分区。这样,即使用户数据的硬盘满载,系统还可以继续运行。

多系统共享:如果你的计算机上安装了多个Linux系统,那么每个系统可能都需要自己的swap分区。这样,各个系统可以独立管理自己的内存使用情况。

修改fstab设置swap分区的优先级

/dev/sda1 none swap sw,pri=10 0 0
/dev/sdb2 none swap sw,pri=5 0 0

rsyslogd 是 Linux 系统中的一个服务,它用于接收和处理系统日志消息。其名称来自 "remote system logging daemon" 的缩写,这是因为它可以处理来自网络上其他计算机的日志消息,以及本地系统生成的日志消息。

rsyslogdrsyslog 包提供,该包是系统日志服务的一个增强版本。与 syslogd(由 syslog 包提供)相比,rsyslog 提供了更多的功能和灵活性,包括:

  • 支持从不同的来源(如 Unix 套接字、TCP/IP 网络等)接收日志消息。
  • 支持将日志消息输出到不同的目标,如文件、数据库、电子邮件等。
  • 支持基于内容的过滤,以便更精确地处理日志消息。
  • 支持对日志消息进行转换,以便以不同的格式(如 JSON)输出日志消息。

rsyslogd 服务的配置文件通常位于 /etc/rsyslog.conf,并可能包含对 /etc/rsyslog.d/ 目录中的其他配置文件的引用。这些配置文件定义了日志消息的来源、目标、过滤规则和转换规则。

下面是一个简单的 rsyslog.conf 文件的示例,定义了两个规则。第一个规则将所有的 auth 和 authpriv 消息写入 /var/log/auth.log 文件。第二个规则将所有的日志消息(除了 auth、authpriv 和 mail)写入 /var/log/syslog 文件。

# /etc/rsyslog.conf
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv,mail.none    /var/log/syslog

在这个例子中,每个规则都由两部分组成:选择器和操作。选择器定义了应用于规则的消息类型,操作定义了对这些消息执行的操作。在这两个规则中,操作都是将消息写入一个文件。


find / -size -10k -exec ls -l {} ;

这行bash命令是在整个文件系统(从根目录/开始)中寻找小于10KB的文件,并列出这些文件的详细信息。让我们逐一解析此命令的各个部分:

  • find: 这是一个UNIX或类UNIX系统(如Linux)中的命令,用于在文件系统中搜索文件。

  • /: 这表示搜索的起点是文件系统的根目录,也就是说,搜索将覆盖整个文件系统。

  • -size -10k: 这是一个表达式,表示找出小于10KB的文件。-size选项用于按文件大小搜索,-10k表示小于10KB(k表示千字节)。

  • -exec: 该选项表示对找到的每个文件执行接下来的命令。命令结束的地方由分号;标明。

  • ls -l {}: 这是-exec选项执行的命令。ls -l会列出文件的详细信息,包括文件类型、权限、链接数、所有者、组、大小、最后修改时间和名称。{}find命令的特殊符号,代表当前正在处理的文件。

  • \;: 这个是命令的结束标志。因为分号在shell中有特殊含义,所以我们需要用反斜杠\来转义,使其被当作普通字符对待。


xdg-mime 是一个命令行工具,它是 XDG Utils 的一部分,主要用于在 Linux 和类 UNIX 系统中管理 MIME 类型(多用途互联网邮件扩展类型)。MIME 类型是一种标准,用来指示文件的类型和格式,例如文本、图片、音频视频等。xdg-mime 允许你查询和更改特定文件类型与特定应用程序之间的关联。

--

notify-send 命令是一个发送通知到桌面的工具,它是与桌面环境的具体通知系统独立的。这个命令遵循了桌面通知规范(通常被称为 libnotify),这是一个为Linux和类UNIX操作系统设计的标准。

无论是 Gnome 还是使用 dunst 的轻量级窗口管理器,它们都实现了这个标准。因此,当你使用 notify-send 命令时,它会发送通知到当前活跃的通知守护程序,不论是 Gnome 的通知系统还是 dunst。这就是为什么 notify-send 能够在这两种不同的环境下工作的原因。简而言之,它是环境独立的,只要有遵循同一标准的通知系统存在。


kworker 是 Linux 内核的一部分,负责处理各种后台任务


“按需启动”的行为模式是 systemd(一个系统和服务管理器)和许多现代 Linux 系统的特性。这样做的好处是节省资源,因为不需要让这些服务一直运行;只有在需要的时候才启动它们,用完后即关闭。这也是为什么你会在系统日志中看到这些服务被启动和停止的记录。

Dec 13 12:59:39 Mikan kernel: queueing ieee80211 work while going to suspend

这条日志信息表明在系统准备进入休眠状态(suspend)时,有一个与 IEEE 802.11(无线网络标准)相关的工作项(work item)被加入到队列中。简单来说,这通常指的是在系统休眠过程中,无线网络驱动或相关组件正在处理某些任务。

Kernel Work Queueing: 在 Linux 系统中,内核经常会将任务排队以便稍后执行。这些任务可能是与硬件通信、处理数据、或执行其他系统级操作。

Logrotate 是 Linux 系统中用于管理日志文件的一个重要工具。它的主要目的是自动化地管理那些随着时间增长并可能变得非常大的日志文件。这里是它的一些主要功能和工作方式:

  • 自动轮换(Rotating)日志文件: Logrotate 根据配置文件中定义的规则(通常位于 /etc/logrotate.conf 和 /etc/logrotate.d/ 目录中),定期轮换日志文件。轮换通常涉及重命名当前日志文件(比如,将 logfile 重命名为 logfile.1),并创建一个新的空日志文件(logfile)以继续记录新的日志条目。这样做的好处是,它避免了单个日志文件变得过大,便于管理和查阅。
  • 压缩和删除旧日志: Logrotate 可以配置为自动压缩和/或在一定时间后删除旧的日志文件,以节省磁盘空间。例如,可以配置 logrotate 使得轮换过的日志在一周后被压缩,然后在超过一个月后被删除。
  • 处理方式: 尽管日志确实是实时生成的,但 logrotate 通常通过 cron 定时任务来周期性地执行。当 logrotate 运行时,它不会影响应用程序继续向当前的日志文件中追加日志。它仅仅是对已经存在的日志文件进行操作。

主机名的修改在某些情况下确实是必要的

  • 网络管理: 在一些大型网络或数据中心环境中,主机名可能需要根据其角色或位置的改变而被更新。这在动态分配资源或自动部署系统时尤为常见。