Linux系统目录结构介绍

Linux系统目录结构介绍

一、Linux系统优化

(一)变量

linux系统信息采集:

[ ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[ ~]# uname -r
2.6.32-696.el6.x86_64
[ ~]# uname -m
x86_64
[ ~]# 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
[ ~]#

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

uname 显示系统信息:

uname -r :显示内核信息

uname -m:显示系统多少位

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

查看变量的内容:echo $PS1

[ ~]# echo $PS1
[\\h \W]\$
u=user
h=hostname
w=pwd

(二)添加用户

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

创建用户:useradd

[ ~]# useradd lisi
[ ~]# id lisi
uid=1011(lisi) gid=1011(lisi) groups=1011(lisi)
[ ~]# 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.
[ ~]#

用户之间的切换:

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

快捷键:ctrl+d:退出

(三)关闭selinux和iptables

(1)关闭selinux

查看selinux状态:

[ ~]# getenforce

Enforcing

临时关闭:

[ ~]# setenforce 0

[ ~]# getenforce

Permissive

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

[ ~]# vim /etc/selinux/config

[ ~]# grep ‘=disabled‘ /etc/selinux/config

SELINUX=disabled

[ ~]# getenforce 
Enforcing
[ ~]# setenforce 0
[ ~]# getenforce 
Permissive
[ ~]# vim /etc/selinux/config
[ ~]# grep '=disabled' /etc/selinux/config
SELINUX=disabled

(2)关闭iptables

查看防火墙状态:

[ ~]# /etc/init.d/iptables status

临时关闭:

[ ~]# /etc/init.d/iptables stop

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

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

[ ~]# chkconfig iptables on

[ ~]# chkconfig | grep iptables

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

[ ~]# chkconfig iptables off

[ ~]#

(四)中文乱码排查过程

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

查看系统的字符集:

[ ~]# echo $LANG

en_US.UTF-8

临时修改字符集:

[ ~]# export LANG=zh_CN.UTF-8

[ ~]# echo $LANG

zh_CN.UTF-8

永久修改字符集:

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

出现中文乱码原因:

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

排查:

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

二 、Linux目录结构

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

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

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

[ ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[ ~]# 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
[ ~]# cd /mnt/
[ 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

[ /]# 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
[ /]#

(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

查看当前主机名:

[ /]# hostname
centos6-kvm2

临时修改主机名:

[ /]# hostname oldboy-01
[ /]# hostname
oldboy-01

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

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

快捷键:

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

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

(4)目录详解/etc/hosts

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

(5)目录详解 /etc/fstab

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

[ /]# 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
[ /]# 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
[ /]#

第一列表示设备/分区

第二列表示入口处。

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

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

开机自启动的两种方式:

①/etc/rc.local

②通过chkconfig管理开机自启动

(7)目录详解 /etc/inittab

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

linux运行级别讲解

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

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

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

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

4:未使用

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

6:重启状态

查看运行级别:

[ /]# runlevel

N 3

临时修改运行级别:

[ /]# init 5

[ /]# runlevel

3 5

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

[ /]# tail -1 /etc/inittab

id:3:initdefault:

[ /]#

(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

查看是否安装成功:

[ /]# rpm -qa | grep tree

tree-1.5.3-3.el6.x86_64

[ /]#

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

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

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

如:[ /]# grep ‘Failed‘ /var/log/secure

(11)目录详解 /proc/xxx

①查看内存信息:

[ /]# cat /proc/meminfo

[ /]# free -h

②查看cpu信息:

[ /]# cat /proc/cpuinfo

[ /]# lscpu

③查看负载信息:

[ /]# cat /proc/loadavg

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

[ /]# w

④查看系统的挂载信息:

[ /]# cat /proc/mounts

[vm2 /]# df -h

[ /]# 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存放的是命令的位置和路径:

[ ~]# 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 查询软件包里面的内容

[ oldboy]# rpm -aq | grep tree
tree-1.5.3-3.el6.x86_64
[ 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
[ oldboy]#

方法1:

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

方法2:

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

方法3:

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

方法4:

[ 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:

[ 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:

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

(四)快速切换目录

快速回到上一次的目录:

cd -==cd $OLDBOY

[ oldboy]# cd /tmp/
[ tmp]# pwd
/tmp
[ tmp]# cd -
/oldboy

linux内置命令查找方法:

help cd (简介)

man cd (详细)

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

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

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

cd :表示家目录

(五)查看最近更新文件

[ etc]# ls -lrt

ls -l :显示详细信息

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

-r :逆序

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

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

/var/log/message

[ 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:

[ oldboy]# cat -n nginx.conf

方法2:

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

方法3:

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

方法4:

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

方法5:

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

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

find :-mtime 根据修改时间。

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

(九)问题解析

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

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

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

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

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

修改xshell字符集

修改系统的字符集

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

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

source /etc/sysconfig/i18n

(十)备份文件

tar 压缩、解压

[ logs]# tar zcvf /tmp/etc.tar.gz /etc/

tar zcvf

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

c:表示create创建压缩包

v:verbose,显示执行过程

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

[ logs]# tar ztf /tmp/etc.tar.gz

tar ztf

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

解压:

tar zxvf etc.tar.gz

[ logs]# tar zxvf /tmp/etc.tar.gz

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

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

解压到指定位置:-C

[ logs]# tar zxvf /tmp/etc.tar.gz  -C /opt/

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

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

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

总结:

tar 打包压缩

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

--exclude=:排除

-C:解压指定位置

(十一)awk应用

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

[ oldboy]# sed 's#i am##g' oldboy.txt | sed 's#mysql##g'

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

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

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

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

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

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

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

[ oldboy]# wc -l /etc/hosts
11 /etc/hosts

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

ps -ef | grep ‘sshd‘

netstat -lntp | grep ‘ssh‘

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

查看文件中的数字:

[ 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
[ 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
[ oldboy]#

| :表示或者的意思。

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

单引号:所见即所得

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

[ oldboy]# echo 'hello lls $LANG $(hostname) 'pwd''
hello lls $LANG $(hostname) pwd
[ oldboy]# echo "hello lls $LANG $(hostname) 'pwd'"
hello lls en_US.UTF-8 oldboy-01 'pwd'
[ oldboy]# echo "hello lls $LANG $(hostname) $pwd"
hello lls en_US.UTF-8 oldboy-01 
[ oldboy]#

相关推荐