Linux系统目录结构介绍

Linux系统目录结构介绍

一、Linux系统优化

(一)变量

linux系统信息采集:

[root@centos6-kvm2 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@centos6-kvm2 ~]# uname -r
2.6.32-696.el6.x86_64
[root@centos6-kvm2 ~]# uname -m
x86_64
[root@centos6-kvm2 ~]# uname -a
Linux centos6-kvm2 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@centos6-kvm2 ~]# 

/etc/redhat-release :存储系统信息位置

uname 显示系统信息:

uname -r :显示内核信息

uname -m:显示系统多少位

PS1是什么?系统的环境变量。一般都是大写的,在系统中任何地方都可以使用。

查看变量的内容:echo $PS1

[root@centos6-kvm2 ~]# echo $PS1
[u@h W]$
u=user
h=hostname
w=pwd

(二)添加用户

linux用户分类:root和普通用户。

创建用户:useradd

[root@centos6-kvm2 ~]# useradd lisi
[root@centos6-kvm2 ~]# id lisi
uid=1011(lisi) gid=1011(lisi) groups=1011(lisi)
[root@centos6-kvm2 ~]# passwd lisi
Changing password for user lisi.
New password: 
BAD PASSWORD: it is too simplistic/systematic
Retype new password: 
Sorry, passwords do not match.
New password: 
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@centos6-kvm2 ~]#

用户之间的切换:

[root@centos6-kvm2 ~]# su - lisi #切换至lisi
[lisi@centos6-kvm2 ~]$ whoami
lisi
[lisi@centos6-kvm2 ~]$ exit #退出至root,或者ctrl+d
logout
[root@centos6-kvm2 ~]# 

快捷键:ctrl+d:退出

(三)关闭selinux和iptables

(1)关闭selinux

查看selinux状态:

[root@centos6-kvm2 ~]# getenforce

Enforcing

临时关闭:

[root@centos6-kvm2 ~]# setenforce 0

[root@centos6-kvm2 ~]# getenforce

Permissive

永久关闭:(重启后生效)

[root@centos6-kvm2 ~]# vim /etc/selinux/config

[root@centos6-kvm2 ~]# grep '=disabled' /etc/selinux/config

SELINUX=disabled

[root@centos6-kvm2 ~]# getenforce 
Enforcing
[root@centos6-kvm2 ~]# setenforce 0
[root@centos6-kvm2 ~]# getenforce 
Permissive
[root@centos6-kvm2 ~]# vim /etc/selinux/config
[root@centos6-kvm2 ~]# grep '=disabled' /etc/selinux/config
SELINUX=disabled

(2)关闭iptables

查看防火墙状态:

[root@centos6-kvm2 ~]# /etc/init.d/iptables status

临时关闭:

[root@centos6-kvm2 ~]# /etc/init.d/iptables stop

永久关闭:让开机时候不启动

chkconfig 中3:表示开始启动还是不启动。

[root@centos6-kvm2 ~]# chkconfig iptables on

[root@centos6-kvm2 ~]# chkconfig | grep iptables

iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@centos6-kvm2 ~]# chkconfig iptables off

[root@centos6-kvm2 ~]#

(四)中文乱码排查过程

字符集:utf-8,gbk,bgk,ascii,bgk2313

查看系统的字符集:

[root@centos6-kvm2 ~]# echo $LANG

en_US.UTF-8

临时修改字符集:

[root@centos6-kvm2 ~]# export LANG=zh_CN.UTF-8

[root@centos6-kvm2 ~]# echo $LANG

zh_CN.UTF-8

永久修改字符集:

[root@centos6-kvm2 ~]# vim /etc/sysconfig/i18n
LANG="en_US.UTF-8"
[root@centos6-kvm2 ~]# grep 'LANG' /etc/sysconfig/i18n
LANG="en_US.UTF-8"

出现中文乱码原因:

linux使用的字符集和远程连接的工具使用的字符集不同。

排查:

将linux系统使用的字符集和远程连接工具使用的字符集修改一致。

二 、Linux目录结构

linux目录特点:一切从根开始,一切皆是文件。

磁盘,设备,分区没有挂载,无法使用。

挂载相当于给磁盘分区,设备开了一个入口,通过入口进入到光盘和磁盘中。

[root@centos6-kvm2 ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@centos6-kvm2 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.9G  6.5G  23% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt
[root@centos6-kvm2 ~]# cd /mnt/
[root@centos6-kvm2 mnt]# pwd
/mnt

(一)、linux核心目录简介

bin:二进制,二进制文件的存放目录。

boot:系统引导程序,系统的内核。

etc:系统的配置文件

home:普通用于的家目录

lib/lib64:libary库,库文件。系统是64位库文件。

lost+found:磁盘或者文件系统损坏断电临时文件存放位置。

media:挂载光盘。

mnt:临时挂载点。

opt:第三方软件安装位置。

proc:存放内存的信息,虚拟目录。

root:root家目录。

sbin:超级命令,只有root能用的命令存放位置。

selinux:selinux及配置文件存放位置。

sys:虚拟目录内存信息

tmp:临时文件存在位置。

usr:存放用户的程序

var:经常变换的文件,如:log。

(二)、Linux目录详解

(1)目录详解--网卡配置文件

目录1:/etc/sysconfig/network-scripts/ifcfg-eth0

[root@centos6-kvm2 /]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ##网卡名称
TYPE=Ethernet ##互联网
ONBOOT=yes ## 在启动时候,是否开始网卡。
UUID=  ##系统中唯一标识
NM_CONTROLLED=yes ##是否能被network软件进行管理。
BOOTPROTO=none ##网卡获取ip地址的方式。
#none,static ip地址是固定的,dhcp自动获取的。
IPADDR=10.0.0.202 ##ip地址
NETMASK=255.255.255.0 ###子网掩码
GATEWAY=10.0.0.254 ##网关,默认的出口
USERCTL=no ##是否允许普通用于管理网卡。
PEERDNS=yes ##网卡中dns配置是否优先于/etc/resolv.conf
IPV6INIT=no
DNS1=223.5.5.5 ##DNS
DNS2=223.6.6.6
[root@centos6-kvm2 /]# 

(2)DNS问题排查

域名解析:把使用的域名转换为ip地址。

阿里的DNS:

223.5.5.5,223.6.6.6

114DNS:

114.114.114.114

Linux无法上网排查:

①ping www.baidu.com #是否可以上网

②ping 223.5.5.5 #DNS是否有问题

修改DNS:

在/etc/sysconfig/network-scripts/ifcfg-eth0中添加DNS配置。

重启网卡:

①ifdown eth0 && ifup eth0

②/etc/init.d/network restart

DNS配置文件:/etc/resolv.conf

(3)主机名修改

/etc/sysconfig/network

查看当前主机名:

[root@centos6-kvm2 /]# hostname
centos6-kvm2

临时修改主机名:

[root@centos6-kvm2 /]# hostname oldboy-01
[root@centos6-kvm2 /]# hostname
oldboy-01

永久修改主机名:重新登录生效

[root@centos6-kvm2 /]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=oldboy-01
[root@centos6-kvm2 /]# grep 'HOSTNAME' /etc/sysconfig/network
HOSTNAME=oldboy-01

快捷键:

vim中:大写D,删除光标之后内容。

ctrl + .:使用上一个命令最后的内容。

(4)目录详解/etc/hosts

ip 地址与域名解析关系,或者对主机名进行解析。一般用于测试。

(5)目录详解 /etc/fstab

/etc/fstabl 开机的时候自动挂载。

[root@centos6-kvm2 /]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Oct 10 23:33:34 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=fbcdee28-a042-425f-973f-b95d62fe7e4c /                       ext4    defaults        1 1
UUID=c59a9218-362c-44a2-a260-340e1c27e4f9 /boot                   ext4    defaults        1 2
UUID=414702c9-8348-45be-8b09-d3376d202d58 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@centos6-kvm2 /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.9G  6.5G  23% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt
[root@centos6-kvm2 /]# 

第一列表示设备/分区

第二列表示入口处。

(6)目录详解/etc/rc.local

开机时候自动运行的文件,需要在开机时候运行的程序,命令,服务。

开机自启动的两种方式:

①/etc/rc.local

②通过chkconfig管理开机自启动

(7)目录详解 /etc/inittab

开机的时候运行级别的配置文件

linux运行级别讲解

0:关机状态,不要把运行级别设置为0

1:当用户模式,root用户密码忘记了

2:多用户模式,但是没有nfs软件

3:完全的多用户模式,命令行模式(默认)

4:未使用

5:x11,桌面模式,图形化界面模式

6:重启状态

查看运行级别:

[root@centos6-kvm2 /]# runlevel

N 3

临时修改运行级别:

[root@centos6-kvm2 /]# init 5

[root@centos6-kvm2 /]# runlevel

3 5

永久修改运行级别:修改/etc/inittab 最后一行。

[root@centos6-kvm2 /]# tail -1 /etc/inittab

id:3:initdefault:

[root@centos6-kvm2 /]#

(8)目录详细讲解 /etc/init.d

/etc/init.d 服务管理的命令

(9) 目录详解/etc/profile,/etc/bashrc

系统环境变量和别名存放的位置。

LANG:单独放在/etc/sysconfig/i18n

/etc/bashrc 只存放别名。

当前用户生效的:
/.bashrc

~/.bash_profile

~表示当前用户的家目录

(10)目录详解usr-local

/usr/local :编辑安装的软件默认的位置

linux安装软件方法:

①yum:自动解决安装依赖的软件。软件包管理工具。

yum install xx

②rpm:缺少什么自己解决。

③编辑:自己解决一切。

编辑安装的步骤:./configuer,make, make install

查看是否安装成功:

[root@centos6-kvm2 /]# rpm -qa | grep tree

tree-1.5.3-3.el6.x86_64

[root@centos6-kvm2 /]#

/user/share :存放手册等文件。

/var/log/message :系统默认日志信息

/var/log/secure :系统用户的登录日志信息。

如:[root@centos6-kvm2 /]# grep 'Failed' /var/log/secure

(11)目录详解 /proc/xxx

①查看内存信息:

[root@centos6-kvm2 /]# cat /proc/meminfo

[root@centos6-kvm2 /]# free -h

②查看cpu信息:

[root@centos6-kvm2 /]# cat /proc/cpuinfo

[root@centos6-kvm2 /]# lscpu

③查看负载信息:

[root@centos6-kvm2 /]# cat /proc/loadavg

最近1分钟,5分钟,15分钟 的平均负载。

[root@centos6-kvm2 /]# w

④查看系统的挂载信息:

[root@centos6-kvm2 /]# cat /proc/mounts

[root@centos6-kvm2 /]# df -h

[root@centos6-kvm2 /]# findmnt

三、闯关测试

(一)、Linux启动过程

按下电源

(1)开机自检(BIOS):内存、cpu、硬盘是否有问题(硬件检查)

(2)MBR引导:硬盘引导

(3)GRUB菜单:选择不同的内核

(4)加载内核(kernel)

(5)运行INIT进程:linux系统里面的第一个进程

(6)读取/etc/inittab配置文件:读取机器的运行级别(0-6)

(7)执行/etc/rc.d/rc.sysinit脚本:系统的初始化脚本,设置主机名,设置ip地址。

(8)执行/etc/rc.d/rc脚本:根据系统运行级别,在开机的时候启动不同的软件

(9)启动mingetty进程。

(二)环境变量PATH

环境变量:

①大写;

②在系统大部分地方都可以使用,含义相同。

LANG 和PATH

PATH存放的是命令的位置和路径:

[root@oldboy-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

linux下面运行命令的过程

①输入命令。

②在PATH里面路径进行查找。

③找到就运行

④找不到提示:command not found。

(三) 如何过滤出已知当前目录下oldboy中的所有一级目录。

查看某个软件是否安装:

rpm 包管理命令。

-qa 查询

-ql 查询软件包里面的内容

[root@oldboy-01 oldboy]# rpm -aq | grep tree
tree-1.5.3-3.el6.x86_64
[root@oldboy-01 oldboy]# rpm -ql tree #安装哪些软件包
/usr/bin/tree
/usr/share/doc/tree-1.5.3
/usr/share/doc/tree-1.5.3/LICENSE
/usr/share/doc/tree-1.5.3/README
/usr/share/man/man1/tree.1.gz
[root@oldboy-01 oldboy]# 

方法1:

[root@oldboy-01 oldboy]# tree -d /oldboy
/oldboy
├── alexdir
├── dir032
├── ext
│   └── oldboy
├── test
├── xiaodong
├── xiaofan
└── xiing

方法2:

[root@oldboy-01 oldboy]# tree -dL 1 /oldboy
/oldboy
├── alexdir
├── dir032
├── ext
├── test
├── xiaodong
├── xiaofan
└── xiing

方法3:

[root@oldboy-01 oldboy]# find -maxdepth 1 -type d ! -name '.'
./xiaofan
./test
./xiing
./alexdir
./xiaodong
./dir032
./ext

方法4:

[root@oldboy-01 oldboy]# ls -l | grep '^d'
d--xr-xr-x. 2 oldboy oldboy    4096 Oct 21  2018 alexdir
drwxr--r-x. 2 root   root      4096 Oct 21  2018 dir032
drwxr-xr-x. 3 root   root      4096 Dec 13 23:51 ext
drwxr-xr-x. 2 root   root      4096 Oct 24  2018 test
drwxr-xr-x. 2 root   root      4096 Dec 13 23:51 xiaodong
drwxr-xr-x. 2 root   root      4096 Dec 13 23:51 xiaofan
drwxr-xr-x. 2 root   root      4096 Dec 13 23:51 xiing

方法5:

[root@oldboy-01 oldboy]# ls -l | awk '$2>1'
total 9552
d--xr-xr-x. 2 oldboy oldboy    4096 Oct 21  2018 alexdir
drwxr--r-x. 2 root   root      4096 Oct 21  2018 dir032
drwxr-xr-x. 3 root   root      4096 Dec 13 23:51 ext
drwxr-xr-x. 2 root   root      4096 Oct 24  2018 test
drwxr-xr-x. 2 root   root      4096 Dec 13 23:51 xiaodong
drwxr-xr-x. 2 root   root      4096 Dec 13 23:51 xiaofan
drwxr-xr-x. 2 root   root      4096 Dec 13 23:51 xiing

方法6:

[root@oldboy-01 oldboy]# ls -F | grep '/'
alexdir/
dir032/
ext/
test/
xiaodong/
xiaofan/
xiing/

(四)快速切换目录

快速回到上一次的目录:

cd -==cd $OLDBOY

[root@oldboy-01 oldboy]# cd /tmp/
[root@oldboy-01 tmp]# pwd
/tmp
[root@oldboy-01 tmp]# cd -
/oldboy

linux内置命令查找方法:

help cd (简介)

man cd (详细)

cd . :当前目录,cp内容值当前目录,cp /etc/hosts .

cd .. :进入当前目录上一级目录

cd ~ :进入当前用户的家目录

cd :表示家目录

(五)查看最近更新文件

[root@oldboy-01 etc]# ls -lrt

ls -l :显示详细信息

-F:给不同类型的文件加上不同的尾巴 /目录

-r :逆序

-t :按照文件的修改时间排序

(六)如何查看系统日志更新

/var/log/message

[root@oldboy-01 etc]# tail -f /var/log/messages

(七) 打印配置文件Nginx.conf

cat -n :显示内容和行号。

grep -n :显示内容和行号。

awk :三剑客老大,擅长取列

NR表示行号

$数字,表示某一列

$0 表示一整行内容

{print 显示}

sed 三剑客老二,取行,替换

=:给内容加行号

-n 取消默认输出,一般与p一起使用

-i 修改文件的内容

查找显示某几行:‘10p’,‘10,20p’

替换:'s###g'

方法1:

[root@oldboy-01 oldboy]# cat -n nginx.conf 

方法2:

[root@oldboy-01 oldboy]# vim nginx.conf 
set nu:显示行号
set nonu:取消显示行号

方法3:

[root@oldboy-01 oldboy]# grep 'stu' nginx.conf -n
[root@oldboy-01 oldboy]# grep '.' nginx.conf -n 
.#正则表达式中所有。

方法4:

[root@oldboy-01 oldboy]# awk '{print NR,$0}' nginx.conf 

方法5:

[root@oldboy-01 oldboy]# sed '=' nginx.conf  | xargs -n2

(八)保存最近几日apach日志

find :-mtime 根据修改时间。

方法1:
[root@oldboy-01 logs]# find -type f -name '*.log' -mtime +7 | xargs ls -l
方法2:
[root@oldboy-01 logs]# ls -l $(find -type f -name '*.log' -mtime +7 )
方法3:
[root@oldboy-01 logs]# find -type f -name '*.log' -mtime +7 -exec ls -l {} ;

(九)问题解析

(1)linux的0-6的运行级别。

(2)系统安装完成后,希望让网络文件共享服务nfs(iptables),仅在3级别上开机启动。

[root@oldboy-01 logs]# chkconfig --level 3 iptables on
[root@oldboy-01 logs]# chkconfig | grep ipta
iptables       	0:off	1:off	2:off	3:on	4:off	5:off	6:off
[root@oldboy-01 logs]# 

(3)linux系统中查看中文,但是乱码,如何解决乱码问题。

linux使用的字符集与远程连接工具的不同。

修改xshell字符集

修改系统的字符集

命令行:export LANG=en_US.UTF-8

/etc/sysconfig/i18n中添加:LANG=en_US.UTF-8

source /etc/sysconfig/i18n

(十)备份文件

tar 压缩、解压

[root@oldboy-01 logs]# tar zcvf /tmp/etc.tar.gz /etc/

tar zcvf

z:通过gzip工具进行压缩。

c:表示create创建压缩包

v:verbose,显示执行过程

f:文件file,接上压缩包的名字

[root@oldboy-01 logs]# tar ztf /tmp/etc.tar.gz 

tar ztf

t:表示list,显示压缩包的内容

解压:

tar zxvf etc.tar.gz

[root@oldboy-01 logs]# tar zxvf /tmp/etc.tar.gz 

tar 在打包时候会把压缩包中绝对路径改成相对路径。

tar 命令在打包压缩的时候,会把绝对路径变化为相对路径。

解压到指定位置:-C

[root@oldboy-01 logs]# tar zxvf /tmp/etc.tar.gz  -C /opt/

使用tar打包/etc/整个目录(打包机压缩,但需要排除/etc/services)

[root@oldboy-01 logs]# tar zcf /tmp/etc.paichu.tar.gz /etc/ --exclude=/etc/services

打包时候尽量使用相对路径进行打包,进入到要打包的路径中。

总结:

tar 打包压缩

创建压缩包,查看压缩包,解压

--exclude=:排除

-C:解压指定位置

(十一)awk应用

方法1:把要删除的内容替换为空

[root@oldboy-01 oldboy]# sed 's#i am##g' oldboy.txt | sed 's#mysql##g'

方法2:把逗号替换成默认的切割空格

[root@oldboy-01 oldboy]# sed 's#,# #g' /oldboy.txt | awk '{print $3,$5}'

方法3:使用多个分割符:,和空格,在中括号中。

[root@oldboy-01 oldboy]# awk -F '[, ]' '{print $3,$5}' oldboy.txt 

在awk中,输出特殊字符:大括号中将两个字符使用逗号连接。

[root@oldboy-01 oldboy]# awk -F '[, ]' '{print $3','$5}' oldboy.txt 

(十二)统计文件中多少行

[root@oldboy-01 oldboy]# wc -l /etc/hosts
11 /etc/hosts

ps -ef :系统中正在运行的进程。

ps -ef | grep 'sshd'

netstat -lntp | grep 'ssh'

[root@oldboy-01 oldboy]# ps -ef | grep 'sshd' |wc -l
4

查看文件中的数字:

[root@oldboy-01 oldboy]# egrep '3306|1521' /etc/services 
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
[root@oldboy-01 oldboy]# grep '3306|1521' /etc/services -E
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
[root@oldboy-01 oldboy]#

| :表示或者的意思。

shell:单引号和双引号的区别

单引号:所见即所得

双引号:里面的特殊符号会被解析

[root@oldboy-01 oldboy]# echo 'hello lls $LANG $(hostname) 'pwd''
hello lls $LANG $(hostname) pwd
[root@oldboy-01 oldboy]# echo "hello lls $LANG $(hostname) 'pwd'"
hello lls en_US.UTF-8 oldboy-01 'pwd'
[root@oldboy-01 oldboy]# echo "hello lls $LANG $(hostname) $pwd"
hello lls en_US.UTF-8 oldboy-01 
[root@oldboy-01 oldboy]#
原文地址:https://www.cnblogs.com/cuiyongchao007/p/12046839.html