Linux显示/etc/resolv.conf文件的详细属性并加上易读的单位
时间: 2024-09-23 09:13:05 浏览: 231
Linux系统中,使用`ls -l`命令可以查看`/etc/resolv.conf`文件的详细属性,包括权限、所有者、大小、创建日期和修改日期等。这个命令会提供一个类似下面的信息:
```
-rw-r--r-- 1 root root 4096 Dec 7 15:20 /etc/resolv.conf
```
这里解释一下各部分含义:
- `-rw-r--r--`: 文件的权限,第一字符`r`表示可读(用户),第二个字符`w`表示可写(用户),第三个字符`-`表示不可执行;接下来三对分别代表所有者(root)、组成员(root)和其他用户的权限。
- `1 root root`: 所有者(owner)、群组(group)和附加所有者(additional owner,如果是setuid/gid文件则会有此信息)。
- `4096`: 文件大小,通常以字节(Bytes)为单位。
- `Dec 7 15:20`: 创建和最后修改的时间,按照月份(Dec)、日、小时和分钟格式。
如果你想让输出更易读,可以加上单位,例如使用`du -h`加上`k`表示千字节或`M`表示兆字节:
```
4.0K /etc/resolv.conf
```
相关问题
if [ -f /etc/resolv.conf ];then sudo chattr -i /etc/resolv.conf sudo sed -i '/domain huawei.com/d' /etc/resolv.conf sudo sed -i '/search huawei.com/d' /etc/resolv.conf sudo sed -i '/10.129.0.84/d' /etc/resolv.conf sudo sed -i '/10.129.0.148/d' /etc/resolv.conf sudo sed -i '/10.144.90.20/d' /etc/resolv.conf sudo sed -i '/10.98.48.39/d' /etc/resolv.conf else sudo touch /etc/resolv.conf sudo chattr -i /etc/resolv.conf fi
这是一个用于管理 Linux 系统 `/etc/resolv.conf` 文件的脚本片段,主要用于检查、修改或创建该文件。以下是详细解析:
---
### 脚本功能分析
1. **判断文件是否存在**
```bash
if [ -f /etc/resolv.conf ]; then
```
这行代码会检测系统中是否已经存在 `/etc/resolv.conf` 文件。如果存在,则进入 `then` 分支;若不存在,则跳转至 `else` 分支。
2. **移除文件的只读属性**
```bash
sudo chattr -i /etc/resolv.conf
```
如果文件存在,首先需要解除其不可变属性 (`immutable`),以便对其进行编辑操作。`chattr -i` 表示关闭文件的不可变标志位。
3. **删除指定内容**
下面几行使用了 `sed` 工具逐条匹配并删除特定配置项:
```bash
sudo sed -i '/domain huawei.com/d' /etc/resolv.conf
sudo sed -i '/search huawei.com/d' /etc/resolv.conf
sudo sed -i '/10.129.0.84/d' /etc/resolv.conf
sudo sed -i '/10.129.0.148/d' /etc/resolv.conf
sudo sed -i '/10.144.90.20/d' /etc/resolv.conf
sudo sed -i '/10.98.48.39/d' /etc/resolv.conf
```
具体作用是通过正则表达式找到包含某些关键字(如 `domain huawei.com`, `search huawei.com` 或者特定 DNS 地址)的行,并将其从文件中删除。
4. **当文件不存在时的操作**
若未发现 `/etc/resolv.conf` 文件,则执行以下动作:
```bash
sudo touch /etc/resolv.conf
sudo chattr -i /etc/resolv.conf
```
首先用 `touch` 创建一个新文件,然后再次设置文件为不可变状态。
---
### 总结
此脚本的核心任务是对 `/etc/resolv.conf` 文件进行维护,包括清理旧有的 DNS 设置以及确保文件的存在性和安全性(防止未经授权的更改)。通常这种场景出现在需要标准化网络配置的企业环境内。
---
/etc/没有resolv.conf文件
### 解决 Linux 系统 `/etc/resolv.conf` 文件缺失的方法
当遇到 `/etc/resolv.conf` 文件缺失的情况时,可以通过以下方法来解决问题:
#### 方法一:创建并配置 `tail` 文件
如果系统中存在 `/etc/resolvconf/` 目录,则可以尝试通过创建 `tail` 文件的方式恢复 DNS 配置。具体操作如下:
1. 创建 `/etc/resolvconf/resolv.conf.d/tail` 文件[^1]。
2. 在该文件中添加所需的 DNS 服务器地址,例如:
```bash
nameserver 8.8.8.8
nameserver 8.8.4.4
```
3. 执行命令以应用更改:
```bash
sudo resolvconf -u
```
此方法适用于基于 Debian 的发行版(如 Ubuntu),能够有效防止 `/etc/resolv.conf` 被覆盖。
---
#### 方法二:手动编辑 `/etc/resolv.conf`
尽管某些情况下 `/etc/resolv.conf` 可能被标记为只读或链接文件,但仍可通过以下方式解决:
1. 如果 `/etc/resolv.conf` 是一个符号链接且指向不存在的目标文件,可先删除原链接:
```bash
sudo rm /etc/resolv.conf
```
2. 创建一个新的普通文件并写入 DNS 配置:
```bash
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf
```
3. 设置权限以确保其不会轻易被修改:
```bash
sudo chmod 644 /etc/resolv.conf
```
需要注意的是,在部分环境中直接编辑 `/etc/resolv.conf` 并不可靠,因为 NetworkManager 或其他服务可能会频繁重写该文件[^2]。
---
#### 方法三:重新配置 NetworkManager
对于使用 NetworkManager 进行网络管理的系统,可能需要调整其设置以保留自定义的 DNS 配置:
1. 使用文本编辑器打开 NetworkManager 配置文件:
```bash
sudo nano /etc/NetworkManager/NetworkManager.conf
```
2. 将 `[main]` 部分中的 `dns=dnsmasq` 替换为 `dns=default` 或者注释掉这一行:
```ini
[main]
dns=default
```
3. 重启 NetworkManager 服务使更改生效:
```bash
sudo systemctl restart NetworkManager
```
完成上述步骤后,再次检查 `/etc/resolv.conf` 是否正常生成以及其中的内容是否符合预期[^4]。
---
#### 方法四:安装必要的网络管理工具
有时由于缺少特定的网络管理组件而导致 `/etc/resolv.conf` 出现异常行为。此时建议执行以下操作:
1. 安装 `resolvconf` 工具包(如果没有预装的话):
```bash
sudo apt update && sudo apt install resolvconf
```
2. 同步现有 DNS 配置到实际使用的 `/etc/resolv.conf` 中:
```bash
sudo service resolvconf start
```
这种方法特别适合于那些因软件卸载或其他原因造成基础功能不全的情形[^3]。
---
### 总结
以上四种方案分别针对不同场景提供了修复措施。通常推荐优先采用 **方法一** 和 **方法三** 来处理此类问题,因其更加稳定可靠;而仅在特殊条件下才考虑运用其余两种途径作为补充手段。
阅读全文
相关推荐
















