zoukankan      html  css  js  c++  java
  • 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]#
  • 相关阅读:
    python基础练习5-9
    python安装
    python虚拟环境
    python基础语法--逻辑实现
    python基础语法
    IDE(vscode)
    pycharm使用
    复习
    环境搭建+python基础
    ASP.NET 5行代码搞二维码
  • 原文地址:https://www.cnblogs.com/cuiyongchao007/p/12046839.html
Copyright © 2011-2022 走看看