/
唯一的根目录,没有Windows的盘符概念。根目录下的任何一个子目录都可以作为一个挂载点(mount point)来挂载某个文件系统(例如分区)。
/proc
即procfs,包含系统中正在运行的进程的映射文件,以及对应其它功能的若干子目录。
/proc/uptime
自从上次系统自举以来的秒数,以及其中有多少秒处于空闲。这主要供uptime程序使用。比较这两个数字能够告诉你长期来看CPU周期浪费的比例。
/proc/version
操作系统的相关信息
/proc/cmdline
这个文件给出了内核启动的命令行。它和用于进程的cmdline项非常相似。
/proc/modules
可加载内核模块的信息。lsmod程序用这些信息显示有关模块的名称,大小,使用数目方面的信息。
/proc/cpuinfo
包含CPU的详细信息
/proc/meminfo
内存状态的信息。它显示出系统中空闲内存,已用物理内存和交换内存的总量。它还显示出内核使用的共享内存和缓冲区总量。这些信息的格式和free命令显示的结果类似。
/proc/kcore
系统的物理内存以core文件格式保存的文件。例如,GDB能用它考察内核的数据结构。它不是纯文本,而是/proc目录下为数不多的几个二进制格式的项之一。
/proc/cgroups
本系统上已知的Cgroups的信息
/proc/devices
列出字符和块设备的主设备号,以及分配到这些设备号的设备名称。
/proc/mounts
指向/proc/self/mounts
已经挂载的文件系统的信息,这个文件以/etc/mtab文件的格式给出当前系统所安装的文件系统信息。这个文件也能反映出任何手工安装从而在/etc/mtab文件中没有包含的文件系统。
/proc/partitions
块设备分区使用情况
/proc/filesystems
列出可供使用的文件系统类型,一种类型一行。虽然它们通常是编入内核的文件系统类型,但该文件还可以包含可加载的内核模块加入的其它文件系统类型。
/proc/net
指向/proc/self/net,此目录下的文件描述或修改了联网代码的行为。可以通过使用arp,netstat,route和ipfwadm命令设置或查询这些特殊文件中的许多文件。
文件 |
说明 |
/proc/net/arp |
转储每个网络接口的arp表中dev包的统计 |
/proc/net/dev |
来自网络设备的统计 |
/proc/net/dev_mcast |
列出二层(数据链路层)多播组 |
/proc/net/igmp |
加入的IGMP多播组 |
/proc/net/netlink |
netlink套接字的信息 |
/proc/net/netstat |
网络流量的多种统计。第一行是信息头,带有每个变量的名称。接下来的一行保存相应变量的值 |
/proc/net/raw |
原始套接字的套接字表 |
/proc/net/route |
静态路由表 |
/proc/net/rpc |
包含RPC信息的目录 |
/proc/net/rt_cache |
路由缓存 |
/proc/net/snmp |
snmp agent的ip/icmp/tcp/udp协议统计,各行交替给出字段名和值 |
/proc/net/sockstat |
列出使用的tcp/udp/raw/pac/syc_cookies的数量 |
/proc/net/tcp |
TCP连接的套接字
|
cat /proc/2177/net/tcp | grep 102681918 # sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt 0: 00000000:18EB 00000000:0000 0A 00000000:00000000 00:00000000 00000000 # uid timeout inode 0 0 102681919 1 ffff8d5ff6b45540 100 0 0 10 0 |
|
/proc/net/udp |
UDP连接的套接字表 |
/proc/net/unix |
UNIX域套接字的套接字表 |
/proc/sys
包括所有的内核运行时参数信息,某些文件支持写操作。
这些文件和内核参数相互对应,所有内核参数参考:Linux知识集锦。
/proc/sys/fs
文件系统相关参数:
参数 |
说明 |
file-max |
系统范围(全局总和)的文件句柄(描述符)数量限制 |
/proc/sys/net
这个目录下的某些文件被网络命名空间隔离。
网络相关参数:
参数 |
说明 |
netfilter/nf_log_all_netns |
默认情况下,来自容器(非全局网络命名空间)的iptable logging被忽略,你无法在 dmesg -w中看到
设置该参数为1改变此行为
|
ipv4/conf/*/route_localnet |
允许转发目的或源地址为127.0.0.0/8的数据包,也就是来自或去往lo设备的数据包。这样,你就可以使用NAT强制将目的地址是127.0.0.1的封包的目的地址修改为其它值 |
ipv4/conf/*/accept_local |
设置为1,则接受源地址是本地IP的封包。必须配合rp_filter为非0才能工作 |
ipv4/conf/*/rp_filter |
设置为0,不进行源地址校验 |
ipv4/conf/*/arp_ignore |
IPVS的DR模式下,每个真实服务器节点都要在环回网卡上绑定VIP。如果客户端对于VIP的ARP请求广播到了各个真实服务器节点,当:
- arp_ignore=0,则各个真实服务器节点都会响应该arp请求,此时客户端就无法正确获取LVS(LB)节点上正确的VIP所在网卡的MAC地址。客户端可能将以太网帧绕过LB直接发给RS
- arp_ignore=1,只响应目的IP地址为接收网卡上的本地地址的arp请求
IPVS的DR模式下要求arp_ignore参数配置为1
|
ipv4/conf/*/arp_announce |
每台服务器或者交换机中都有一张arp表,该表用于存储对端通信节点IP地址和MAC地址的对应关系。当
- 收到一个未知IP地址的arp请求,就会在本机的arp表中新增对端的IP和MAC记录
- 当收到一个已知IP地址(arp表中已有记录的地址)的arp请求,则会根据arp请求中的源MAC刷新自己的arp表
如果arp_announce参数配置为0,则网卡在发送arp请求时,可能选择的源IP地址并不是该网卡自身的IP地址,这时候收到该arp请求的其他节点或者交换机上的arp表中记录的该网卡IP和MAC的对应关系就不正确,可能会引发一些未知的网络问题,存在安全隐患。
IPVS的DR模式下要求arp_announce参数配置为2
|
ipv4/conf/*/send_redirects |
是否启用ICMP重定向 |
ipv4/ip_local_port_range |
发起连接时,本地端口范围 |
ipv4/tcp_keepalive_time |
TCP保活,记时器触发延迟 |
ipv4/tcp_keepalive_intvl |
TCP保活,保活封包发送间隔 |
ipv4/tcp_keepalive_probes |
TCP保活,保活封包发送次数 |
|
|
/proc/loadavg
给出以几个不同的时间间隔计算的系统平均负载,这就如同uptime命令显示的结果那样。前三个数字是平均负载。这是通过计算过去1分钟,5分钟,15分钟里运行队列中的平均任务数得到的。随后是正在运行的任务数和总任务数。最后是上次使用的进程号。
/proc/stat
这个文件包含的信息有CPU利用率,磁盘,内存页,内存换页,中断信息。
/proc/vmstat
vmstat 命令信息来源之一。
/proc/$PID
指向进程映射目录,其下的子文件包含了进程的详细信息。
文件 |
说明 |
/proc/$PID/cmdline |
包含进程的完整命令行信息。如果这个进程是zombie进程,则这个文件没有任何内容
|
/proc/$PID/root |
进程的root目录符号链接 |
/proc/$PID/cwd |
当前工作目录的符号链接 |
/proc/$PID/comm |
进程的名字 |
/proc/$PID/environ |
进程的环境变量 |
/proc/$PID/exe |
进程的二进制文件的符号链接 |
/proc/$PID/fd |
进程的打开文件
|
ls -la /proc/2177/fd total 0 dr-x------ 2 root root 0 Feb 23 21:23 . dr-xr-xr-x 9 root root 0 Feb 23 21:23 .. lrwx------ 1 root root 64 Feb 23 21:23 0 -> /dev/null l-wx------ 1 root root 64 Feb 23 21:23 1 -> pipe:[102672120] # 当创建好epoll句柄后,它就是会占用一个fd值,所以在使用完epoll后,必须调用close()关闭 lrwx------ 1 root root 64 Feb 23 21:23 13 -> anon_inode:[eventpoll] # 最后的数字是套接字的inode号 lrwx------ 1 root root 64 Feb 23 21:23 83 -> socket:[102681918] |
从这里可以得到套接字的inode号,并进而查询套接字的详细信息:
|
cat /proc/2177/net/tcp | grep 102681918 |
|
/proc/$PID/net |
参考/proc/net |
/proc/$PID/io |
进程的IO信息 |
/proc/$PID/limits |
进程的资源配额 |
/proc/$PID/maps |
进程的内存映射信息 |
/proc/$PID/stack |
显示当前进程的内核调用栈信息,只有内核编译时打开了
CONFIG_STACKTRACE编译选项,才会生成这个文件 |
/proc/$PID/mountinfo |
进程所属mount命名空间的挂载信息 |
/proc/$PID/mounts |
/proc/$PID/mountstats |
/proc/$PID/cgroup |
显示某个进程所属的进程组。输出 / 表示进程没有划分到特定的Cgroups
$PID是进程的ID,关键字
self表示当前进程。
|
/proc/$PID/ns |
每个进程都有这样的一个目录,里面存放若干符号连接,提示进程所属的各种命名空间:
|
ls -la /proc/self/ns lrwxrwxrwx 1 alex alex 0 Nov 16 20:32 ipc -> ipc:[4026531839] lrwxrwxrwx 1 alex alex 0 Nov 16 20:32 mnt -> mnt:[4026531840] lrwxrwxrwx 1 alex alex 0 Nov 16 20:32 net -> net:[4026531968] lrwxrwxrwx 1 alex alex 0 Nov 16 20:32 pid -> pid:[4026531836] lrwxrwxrwx 1 alex alex 0 Nov 16 20:32 user -> user:[4026531837] lrwxrwxrwx 1 alex alex 0 Nov 16 20:32 uts -> uts:[4026531838] |
如果两个进程指向同一符号连接(方括号内的inode相同),则它们属于同一命名空间
只要/proc/$PID/ns下的文件被打开(例如进行bind挂载),则相应的命名空间就会存在,即使命名空间内没有任何进程
|
/proc/$PID/net |
进程使用的网络内核参数 |
/proc/$PID/stat |
包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻
|
19211 (docker-proxy) S 18582 18582 18582 0 -1 1077936384 400 0 24 0 385 870 0 0 20 0 5 0 1476270373 111624192 397 18446744073709551615 94908437864448 94908439349548 140733819451920 140733819451256 94908438772659 0 2079996453 0 2143420159 0 0 0 17 0 0 0 16 0 0 94908441446824 94908442361816 94908444303360 140733819457191 140733819457307 140733819457307 140733819457506 0 |
- pid=19211 进程(包括轻量级进程,即线程)号
- comm=docker-proxy 应用程序或命令的名字
- task_state=R 任务的状态,R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead
- ppid=6723 父进程ID
- pgid=6873 线程组号
- sid=6723 c该任务所在的会话组ID
- tty_nr=34819(pts/3) 该任务的tty终端的设备号,INT(34817/256)=主设备号,(34817-主设备号)=次设备号
- tty_pgrp=6873 终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。
- task->flags=8388608 进程标志位,查看该任务的特性
- min_flt=77 该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数
- cmin_flt=0 累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目
- maj_flt=0 该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数
- cmaj_flt=0 累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目
- utime=1587 该任务在用户态运行的时间,单位为jiffies
- stime=1 该任务在核心态运行的时间,单位为jiffies
- cutime=0 累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies
- cstime=0 累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies
- priority=25 任务的动态优先级
- nice=0 任务的静态优先级
- num_threads=3 该任务所在的线程组里线程的个数
- it_real_value=0 由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.
- start_time=5882654 该任务启动的时间,单位为jiffies
- vsize=1409024(page) 该任务的虚拟地址空间大小
- rss=56(page) 该任务当前驻留物理地址空间的大小
- rlim=4294967295(bytes) 该任务能驻留物理地址空间的最大值
- start_code=134512640 该任务在虚拟地址空间的代码段的起始地址
- end_code=134513720 该任务在虚拟地址空间的代码段的结束地址
- start_stack=3215579040 该任务在虚拟地址空间的栈的结束地址
- kstkesp=0 esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.
- kstkeip=2097798 指向将要执行的指令的指针, EIP(32 位指令指针)的当前值.
- pendingsig=0 待处理信号的位图,记录发送给进程的普通信号
- block_sig=0 阻塞信号的位图
- sigign=0 忽略的信号的位图
- sigcatch=082985 被俘获的信号的位图
- wchan=0 如果该进程是睡眠状态,该值给出调度的调用点
- nswap 被swapped的页数,当前没用
- cnswap 所有子进程被swapped的页数的和,当前没用
- exit_signal=17 该进程结束时,向父进程所发送的信号
- task_cpu(task)=0 运行在哪个CPU上
- task_rt_priority=0 实时进程的相对优先级别
- task_policy=0 进程的调度策略,0=非实时进程,1=FIFO实时进程;2=RR实时进程
|
/proc/$PID/statm |
显示进程所占用内存大小的统计信息,包含七个值,度量单位是页:
|
# cat /proc/2948/statm 72362 12945 4876 569 0 24665 0 |
七个字段分别表示:
- 进程占用的总的内存
- 进程当前时刻占用的物理内存
- 同其它进程共享的内存
- 进程的代码段
- 共享库(从2.6版本起,这个值为0)
- 进程的堆栈
- dirty pages(从2.6版本起,这个值为0)
|
/proc/$PID/status |
进程状态信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
Name: dockerd # 进程名 State: S (sleeping) # 进程状态 ## R (running)", "S (sleeping)", "D (disk sleep)", "T (stopped)", "T(tracing stop)", "Z (zombie)", or "X (dead)" Tgid: 18582 # 线程组的ID,一个线程一定属于一个线程组(进程组) Ngid: 0 Pid: 18582 # 进程的ID,更准确的说应该是线程的ID PPid: 1 # 当前进程的父进程ID TracerPid: 0 # 跟踪当前进程的进程ID,如果是0,表示没有跟踪,例如用strace跟踪 Uid: 0 0 0 0 Gid: 0 0 0 0 # 第一列数字(RUID):实际用户ID,指的是进程执行者是谁. # 第二列数字(EUID):有效用户ID,指进程执行时对文件的访问权限. # 第三列数字(SUID):保存设置用户ID,作为effective user ID的副本,在执行exec调用时后能重新恢复原来的effectiv user ID. # 第四列数字(FSUID):目前进程的文件系统的用户识别码.一般情况下,文件系统的用户识别码(fsuid)与有效的用户识别码(euid)是相同的. # RUID和EUID是由启动进程的用户决定的 # EUID,如果程序设定了setuid,那么在程序运行时是用程序的owner权限来运行程序,而不是启动的用户权限 终端1) FDSize: 128 # FDSize是当前分配的文件描述符,这个值不是当前进程使用文件描述符的上限. # 而如果超过32个文件描述符,将以32进行递增,如果是64位系统,将以64进行递增. # FDSize这个值不会减少,如果我们程序打开了300个文件,并不会因为关闭文件,而减少FDSize这个值. Groups: # 这里的groups表示启动这个进程的用户所在的组. NStgid: 18582 NSpid: 18582 NSpgid: 18582 NSsid: 18582 VmPeak: 581816 kB # 当前进程运行过程中占用内存的峰值 VmSize: 581752 kB # 进程现在正在占用的内存 VmLck: 0 kB # 进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘 VmPin: 0 kB VmHWM: 89832 kB # 得到分配到物理内存的峰值 VmRSS: 40128 kB # 现在使用的物理内存 VmData: 476676 kB # 进程数据段的大小 VmStk: 132 kB # 进程堆栈段的大小. VmExe: 47116 kB # 进程代码的大小 VmLib: 6128 kB # 进程所使用LIB库的大小 VmPTE: 396 kB # 占用的页表的大小. VmPMD: 24 kB VmSwap: 0 kB # 进程占用Swap的大小. HugetlbPages: 0 kB Threads: 12 # 表示当前进程组有12个线程. SigQ: 0/7338 # 当前待处理信号的个数 SigPnd: 0000000000000000 # 屏蔽位,存储了该线程的待处理信号,等同于线程的PENDING信号 ShdPnd: 0000000000000000 # 屏蔽位,存储了该线程组的待处理信号.等同于进程组的PENDING信号 SigBlk: 0000000000000000 # 存放被阻塞的信号,等同于BLOCKED信号 SigIgn: 0000000000000000 # 存放被忽略的信号,等同于IGNORED信号 SigCgt: ffffffffffc1feff # 存放捕获的信号,等同于CAUGHT信号 CapInh: 0000000000000000 # 表示能够被当前进程执行的程序继承的能力 CapPrm: 0000003fffffffff # 表示进程能够使用的能力,在cap_permitted中可以包含cap_effective中没有的能力,这些能力是被进程自己临时放弃的,也可以说cap_effective是cap_permitted的一个子集 CapEff: 0000003fffffffff # 当一个进程要进行某个特权操作时,操作系统会检查cap_effective的对应位是否有效,而不再是检查进程的有效UID是否为0 CapBnd: 0000003fffffffff # 是系统的边界能力,我们无法改变它 CapAmb: 0000000000000000 Seccomp: 0 Cpus_allowed: 1 # 指出该进程可以使用CPU的亲和性掩码,因为我们指定为两块CPU,所以这里就是3,如果该进程指定为4个CPU(如果有话),这里就是F(1111) Cpus_allowed_list: 0 # 0-1指出该进程可以使用CPU的列表,这里是0-1 Mems_allowed: 00000000,00000001 # 通cpu Mems_allowed_list: 0 # 通cpu,使用了结点0的内存资源 voluntary_ctxt_switches: 24243383 # 表示进程主动切换的次数. nonvoluntary_ctxt_switches: 6102321 # 表示进程被动切换的次数 |
|
/proc/$PID/syscall |
显示当前进程正在执行的系统调用 |
/proc/$PID/task |
进程包含的的线程信息 |
/sys
即sysfs文件系统,包括系统所有的硬件信息以及内核模块等信息,映射了相关的kobject,该文件系统代替了以前需要ioctl(作用于一个设备节点)和procfs文件系统完成的功能。
该目录在2.6引入,解决/proc目录内容杂乱的问题。
/sys/fs/cgroup
代表了Cgroup的伪文件系统
/etc
存放系统或者应用的配置文件,etc即etcetera
受信任CA证书
CentOS系统的受信任证书存放位置:
/etc/pki/ca-trust/source/anchors/,将你的证书存放到该目录后,需要执行
update-ca-trust更新受信任证书列表。
Ubuntu系统受信任证书存放在
/usr/local/share/ca-certificates/,将你的证书存放到该目录后,需要执行
update-ca-certificates更新受信任证书列表。
包管理器配置
APT相关
文件 |
说明 |
/etc/apt/sources.list |
存放软件源的列表 |
/etc/apt/sources.list.d/ |
存放软件源的列表文件片段 |
/etc/apt/apt.conf |
APT配置文件 |
/etc/apt/apt.conf.d/ |
APT配置文件片段 |
/var/cache/apt/archives/ |
下载文件的本地存储区域 |
/var/cache/apt/archives/partial/ |
正在传输中的文件的本地存储区域 |
/var/lib/aptitude/pkgstates |
存储软件包的状态、标记 |
YUM相关
文件 |
说明 |
/etc/yum.repos.d/ |
YUM仓库的配置 |
网络配置
文件 |
说明 |
/etc/hostname |
Debain主机名称配置,RedHat在/etc/sysconfig/network中配置 |
/etc/hosts |
静态IP-域名映射配置 |
/etc/network/interfaces |
Debian及其衍生系统的网络配置文件。 在桌面版的Ubuntu上,一般由网络管理器(Network Manager)组件负责管理网络,不需要手工修改此文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
auto lo iface lo inet loopback #第一张以太网卡的配置 auto eth0 iface eth0 inet dhcp #第二张以太网卡的配置 auto eth1 iface eth1 inet static address 192.168.0.90 netmask 255.255.255.0 gateway 192.168.0.1 #更改硬件地址 hwaddress ether 10:1F:74:18:6A:47 #设置DNS服务器 dns-nameservers 178.79.131.110 223.5.5.5 mtu 1380 #使用post-up命令可以更改路由 post-up route add default gw 192.168.0.1 post-up route del default dev $IFACE |
修改完毕后执行
sudo service networking restart 可以立即生效。
要为单个网卡配置多重IP地址,可以参考:
|
auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 192.168.1.43 netmask 255.255.255.0 |
|
/etc/NetworkManager/NetworkManager.conf |
Debian及其衍生系统上的网络管理组件,主要用于简化网络配置
如果要禁止网络管理器管理某个特定网络接口,配置:
|
[keyfile] unmanaged-devices=mac:d0:bf:9c:5d:31:d3 |
并重启网络管理器:
sudo service network-manager restart ,然后你可以在NM的系统托盘区看到提示:device mot managed
|
/etc/init/failsafe.conf |
可以用来修改网络配置失败时,等待的时间 |
/etc/sysconfig/network |
RedHat、CentOS的主机名和基本网络配置,格式如下:
|
# 是否启用网络 NETWORKING=yes NETWORKING_IPV6=yes # 设置主机名 HOSTNAME=xcentos6 # 设置网关 GATEWAY=192.168.1.1 |
|
/etc/sysconfig/network-scripts/ifcfg-eth0 |
RedHat、CentOS网络接口eth0的配置,格式如下:
|
DEVICE="eth0" BOOTPROTO=none # 可选值dhcp、static、none,分别表示启用DHCP、固定IP、手工配置 NM_CONTROLLED="yes" ONBOOT=yes # 网络接口是否随系统启动 TYPE="Ethernet" UUID="557f0607-a29e-412e-8786-28269f0cd12f" IPADDR=192.168.0.90 PREFIX=24 GATEWAY=192.0.0.168 DEFROUTE=yes # 是否把此接口设置为默认路由 IPV4_FAILURE_FATAL=yes IPV6INIT=no # 是否启用IPv6 NAME="System eth0" HWADDR=00:0C:29:39:6E:57 |
完毕后执行
/etc/init.d/network restart 即可生效
|
/etc/resolv.conf |
包含DNS服务的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
# 本地域,针对此域内的DNS名称,可以仅仅使用短名(前缀)进行查询 # 如果指定为.则使用根域 # 如果为空,则自动根据gethostname调用的结果获得本地域,取第一个.后的内容为本地域 domain gmem.cc # DNS服务器的IP地址,最多可以指定MAXNS个DNS(当前3) # 如果指定多个,会从上到下一个个尝试 # 如果不指定nameserver,则默认使用使用本机上的DNS服务器 nameserver 8.8.8.8 # 搜索后缀列表,对于针对少于ndots(默认1)个.号的名字的DNS查询,会自动尝试添加这些后缀进行查询 search devops.svc.k8s.gmem.cc svc.k8s.gmem.cc k8s.gmem.cc # 选项 options ndots:n # 使用search作为后缀的阈值 timeout:n # 超时,单位秒,默认5,最大30 attempts:n # 失败之前最多发送DNS查询的次数,默认2,最大5 rotate # 轮询的使用nameserver中的服务器,而非总是从上往下一个个尝试 |
注意,在Ubuntu 14.04下,由于网络管理器组件的存在,你不应修改此文件,因为重启后修改会丢失。你可以:
- 通过系统托盘区网络图标,点击Edit Connections,修改指定网络Profile使用的DNS
- 修改/etc/network/interfaces,为指定的网络接口指定DNS
- 修改/etc/resolvconf/resolv.conf.d/下的文件:
- head,编写位于自动生成DNS前面的nameserver
- base,编写位于自动生成DNS后面的nameserver
默认的DNS查找超时是5秒,两次尝试失败后不再尝试,则会导致DNS查找很慢,可以修改:
|
options timeout:1 attempts:1 |
|
/etc/sysctl.conf |
该文件用于修改内核运行时参数,可以指定很多网络相关的条目 |
/var/lib/bluetooth/**/linkkeys |
存放蓝牙配对使用的安全码 |
资源配额
Linux对用户使用资源的具有配额功能,例如如果打开文件描述符的数量超过限制,可能导致“java.io.IOException: Too many open files”错误发生
文件 |
说明 |
/etc/security/limits.conf |
文件中的每一行表示对某个用户/组的某种资源限制声明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#每行的内容格式如下: # #domain:用户名、组名、通配符* #type:可以是soft、hard,表示软硬限制 #item:可以是: # core 限制核心文件大小KB # data 最大数据大小KB # fsize 最大文件大小KB # memlock 最大的锁定在内存中地址空间KB # nofile 最大打开文件的数量 # rss 限制驻留工作集(进程所使用的非交换区的物理内存)的大小KB # stack 最大栈大小KB # cpu 最大CPU时间MIN # nproc 最大进程数量 # as 地址空间限制KB # maxlogins 最大用户登陆次数 # maxsyslogins 最大的系统登陆次数 # priority 用户进程的运行优先级 # locks 用户最多可以持有的文件锁数量 # sigpending 最大未决信号数量 # msgqueue POSIX消息队列的最大长度bytes # nice nice优先级范围[-20, 19] # rtprio 最大实时优先级 # chroot 仅Debian,是否可以修改根目录的指向 * soft nofile 65536 * hard nofile 65536 |
该配置文件与ulimit命令的目的相似,但是后者仅作用于当前Shell及其子进程
|
引导程序配置
文件 |
说明 |
/boot/grub/menu.lst |
GRUB启动引导文件 |
/etc/lilo.conf |
LILO启动引导文件 |
系统启动脚本
很多配置文件中,具有
rc 字样,通常表示“run commands”。
文件 |
说明 |
/etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d |
包含一系列的符号链接,符号链接一律指向/etc/init.d/下的文件,在对应的运行级别下会被系统自动执行 |
/etc/init.d/ |
包含若干System V脚本,用于作为系统服务 |
/etc/init/ |
包含一些系统启动时需要执行的任务(upstart job) |
/etc/rc.local |
在所有系统服务启动完毕后,该脚本的内容会被执行 |
文件系统挂载
文件 |
说明 |
/etc/fstab |
包含静态文件系统信息,参考:静态文件系统信息 |
/proc/filesystems |
支持的文件系统类型列表 |
/proc/mounts /proc/self/mounts |
当前mount命名空间下的挂载点列表
格式:
|
/dev/sda1 /mnt/40A2AAB1A2AAAABC fuseblk ro,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096 0 0 tmpfs /run/netns tmpfs rw,nosuid,noexec,relatime,size=3286248k,mode=755 0 0 (1) (2) (3) (4) (5) (6) # 1 被挂载的设备 # 2 挂载点 # 3 文件系统类型 # 4 挂载选项 # 5 dummay value,用于匹配 /etc/mtab中的格式 |
|
/proc/$PID/mountinfo |
指定进程所在的挂载命名空间的挂载点列表
格式:
|
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11) # 1 mount ID,mount的唯一标识 # 2 parent ID,父mount的标识,如果当前时命名空间中的根mount,则指向自己 # 3 major:minor, 设备主次号 # 4 root,文件系统中构成此挂载的根的目录的路径 # 5 mount,相对于进程根目录的,挂载点的位置 # 6 mount potins,挂载选项 # 7 0-N个可选字段,格式tag[:value] # 8 可选字段终止符 # 9 filesystem type,文件系统类型 # 10 mount source,挂载的源,可能时设备文件路径,例如/dev/sdd1 # 11 superblock信息 |
|
Shell配置
文件 |
说明 |
/etc/environment |
全局的环境变量,修改后重新登录以生效。常用的全局环境变量包括:
- http_proxy:HTTP代理地址,例如http://192.168.0.89:8087
- no_proxy:不使用代理的地址集合,例如localhost,127.0.0.1,192.168.0.89
注意该文件中的环境变量不支持变量扩展,例如
PWD2=$PWD 会被按字面的解释为$PWD
|
/etc/profile |
可以包含任意脚本。全局的设置,所有用户登录时有效 |
~/.profile |
可以包含任意脚本。当前用户的设置,登陆时有效 |
/etc/bashrc |
可以包含任意脚本。对所有用户新创建的shell有效 |
~/.bashrc |
可以包含任意脚本。对当前用户新创建的shell有效 |
~/.bash_logout |
每次退出shell时,该文件被读取并执行 |
~/.bash_history |
命令历史记录 |
定时任务
文件 |
说明 |
/var/spool/cron/crontabs/* /etc/cron.allow /etc/cron.deny |
crontab相关的配置文件,用于配置基于cron表达式的定时任务 |
数字证书
文件 |
说明 |
/etc/ca-certificates.conf |
列出安装在/etc/ssl/certs下,你想使用或者忽略的证书的列表,要忽略某个证书,可以在其前面添加
! 然后执行:
|
sudo update-ca-certificates |
|
/etc/ssl/certs |
存放当前信任的数字证书的符号链接 |
/usr/share/ca-certificates /usr/local/share/ca-certificates |
存放所有数字证书文件,不一定被信任 |
字体配置
文件 |
说明 |
/etc/fonts/fonts.conf |
字体相关的配置文件,包含例如字体安装目录等信息 |
/usr/share/fonts |
字体安装目录
Ubuntu下通过GUI安装字体文件时,安装到~/.local/share/fonts
|
/usr/local/share/fonts |
~/.local/share/fonts |
~/.fonts |
用户和组配置
文件 |
说明 |
/etc/default/useradd |
新添加用户的默认属性值 |
/etc/passwd |
用户账户信息,内容格式如下:
|
#每一行包含一个用户的信息,字段使用冒号分隔 root:x:0:0:root:/root:/bin/bash #字段说明如下: # root 用户名 # x 密码占位符,密码存放在/etc/shadow文件中 # 0 用户ID(uid) # 0 主要组ID(gid) # root 用户全名 # /root 用户家目录 # /bin/bash 用户的Shell,设置为/sbin/nologin禁止登陆Shell |
|
/etc/group |
用户组的配置信息 |
/etc/shadow |
加密的用户密码信息,以及密码修改时间、过期时间等 |
应用程序配置
文件 |
说明 |
/etc/ssh/sshd_config |
SSH服务器配置文件 |
开发相关配置
文件 |
说明 |
/etc/ld.so.conf |
额外共享库的存放位置。修改后需要调用ldconfig命令使之生效 |
/dev
/dev/hd*
IDE硬盘的设备文件,第一块硬盘为hda,第二块hdb,类推。
/dev/sd*
SATA硬盘的设备文件。
/dev/disk/by-*
各种指向设备文件的符号链接。
/dev/disk/by-id/
根据设备的唯一标识。
/dev/disk/by-label/
根据设备的标签(磁盘的名字)。
/dev/disk/by-path/
根据设备的PCI路径。
/dev/disk/by-uuid/
根据磁盘的UUID。
/dev/console
代表系统控制台,过去它常常是一个专用的打印终端;在现代Linux上它通常是一个虚拟控制台;在X Window中它则是一个虚拟的控制台窗口。
系统主控制台,内核代码
printk()总是向此控制台写入消息。第一个非内核进程,也就是init,也将/dev/console作为标准输入、输出、错误。
/dev/console是一个可以通过内核参数进行重定向的虚拟设备集。你可以在grub.conf中配置 console=ttyS0,这样/dev/console就重定向到了/dev/ttyS0。你还可以在grub.conf中多次配置console参数,这样内核主控制台的输出被传播到多个设备。
/dev/mapper/*
设备映射,用于把物理块设备映射为高层的虚拟块设备。逻辑磁盘卷存放在这里
/dev/tty
这是一个别名,对应打开/dev/tty的那个进程所关联的(物理,虚拟,伪)控制台。打开/dev/tty进行读写,不需要root权限。
需要注意,cron之类批处理服务启动的进程,没有关联的控制台,因而也就没有可用的/dev/tty。这类进程的 ps -ef输出的TTY列显示为
?。
/dev/tty*
原本含义是连接到服务器的串口终端设备。现在/dev/tty0总是表示当前控制台,而/dev/tty1…对应Ctrl + Alt + F1…切换到的那些虚拟控制台。
/dev/ttyS*
代表连接到服务器的串口终端设备。有段时间串口设备被称为终端设备,因为那时串口设备的主要用途就是用作终端。
/dev/null
空设备,所有写入内容被丢弃;所有读尝试立即返回EOF
/run
/run/netns
创建了网络命名空间后,在此目录下出现一个对应的文件。
/var
经常发生改变的系统文件所在目录。
/var/run
目前通常是指向/run的符号链接
/var/tmp
临时文件目录,不会自动清空。
/var/log
各种日志文件:
文件 |
说明 |
/var/log/dmesg |
包含系统启动时的详细日志,例如硬件检测 |
/var/log/auth.log |
系统身份认证日志,企图进行的登陆记录其中 |
/boot
内核和加载内核所需的文件。
/lost+found
文件系统崩溃后,恢复文件存放在这里。
/kernel
内核组件。
/bin
系统核心应用程序所在目录,启动系统时需要的程序在此目录。
/sbin
可能是System binary的缩写,包含一些重要的系统应用程序,系统管理的PATH中包含此目录。
/lib
基础的共享库、内核模块,该目录中的共享库镜像对于启动系统、执行/bin、/sbin下的命令是必须的。
对于/bin /sbin目录下程序不必须的共享库,不会放在此目录下。
目录中的库也能是32位的,也可能是 64位的。
/lib32 /lib64存放库的32或64位变体,/lib目录中可能是指向这些目录的符号链接。
/home
用户家目录的父目录,每个用户对应一个子目录。可以使用
~来访问当前用户的家目录。
/root
超级用户root的家目录。
/usr
存放应用程序和库,usr的含义可以解释为Unix System Resources。
/usr/bin
应用程序,存放用户使用的标准程序
/usr/sbin
系统应用程序,类似于/sbin。
/usr/include
开发人员使用的头文件。子目录c++为GNU C++的头文件;子目录X11为X Windows头文件。
/usr/lib
编程、包需要的库文件,例如动态链接库、python的模块。
/usr/lib64
64位库文件。
/usr/fonts
字体文件。
/usr/share
包含很多程序、库、文档,其中/usr/share/doc是文档中心。
/usr/src
存放一些源代码,一些发行版把内核源码存放到/usr/src/linux。
/usr/local
用户在本地添加的应用、库等文件,例如/usr/local/lib/python2.7/。具有和/usr类似的结构。
/mnt
以前通常把分区挂载在该目录下,可以作为可移动介质上文件系统的临时挂载点。
/media
通常把可移动介质上的文件系统挂载到这里。
/cdrom
到/media/cdrom的链接。
/tmp
临时文件目录,每次系统引导即清空。
/opt
可选操作系统组件、附加软件安装位置,使用的不多。
/stand
独立的工具、磁盘格式化工具、诊断工具等。
/srv
服务器系统所在目录。
Leave a Reply