Linux系统基本结构
1.系统安装和分区
系统安装:安装操作系统,这里不多介绍,具体参考redhat操作系统安装
分区:
**系统分区**:系统分区(System Partion)是Windows操作系统里常用的术语,主要指的是用于启动Windows的分区,通常该分区的根目录下,包含操作系统的启动文件(如boot.ini、ntldr等)。
**磁盘分区**:计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区。
在传统的磁盘管理中,将一个硬盘分为两大类分区:主分区和扩展分区。主分区是能够安装操作系统,能够进行计算机启动的分区,这样的分区可以直接格式化,然后安装系统,直接存放文件。(分区,格式化,进行使用)
linux如何进行分区,具体可以参考linux如何进行分区
1.df -h 和ll /ect/sd* 查看硬盘是否添加以及挂载情况
2.fdisk /dev/sd* 查看添加的硬盘信息并获取帮助,依帮助进行操作
3.分区后,需格式化后进行使用,此处格式化为ext4,并挂载于目录之下
4.这样挂载重启就会取消挂载,使用blkid查看uuid,进入etc/fstab进行开机自动挂载。
什么是交换分区?
交换分区是用作缓冲的分区,Swap分区,即交换区,系统在物理内存(这里应该是运行内存)不够时,与Swap进行交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
如何设置,在分区格式化时,将其格式化为swap分区(mkswap /dev/sdb1),free查看交换分区大小,将分区加入到原有swap分区当中(swapon /dev/sdb1),设置开机自动挂载即可。
2.文件系统结构
FHS:filesystem hierarchy standard文件系统层级标准,定义了在类Unix系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置于哪个目录下。
/ 根目录,通常不在这里存储文件
/bin 可执行文件,二进制文件程序工具,是系统不可缺少的工具机,我们运行的命令一般都放在这里 ls dir
/sbin 可执行文件
/boot 开机启动的文件,包括linux内核以及开机菜单与开机所需配置文件等
/dev 设备文件,任何设备与接口设备都是以文件形式存在于这个目录的
/root root用户的主目录
/home 普通用户的主目录
/mnt 挂载点目录
光盘必须和/下的某个目录节点建立联系才能使用,把光盘和指定的挂载点目录建立联系的过程叫做挂载。mount /dev/sr0 /mnt
/media 媒体目录,也是挂载点目录
/opt 可选目录。存放第三方软件包和数据文件
/var 可变目录,用以存放经常变化的文件,如日志文件
/etc 配置文件
/lib 系统的函数库
/proc 该目录是一个虚拟文件系统,它放置的数据都在内存当中(是linux内核在内存中所建立的系统内核映象),proc文件系统被用于从内存读取进程的信息。
/run 系统运行时所需文件
/usr unix software resource放置的数据为可分享的与不可变动的,unix操作系统软件资源所放置的目录,而不是用户数据
/srv service的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录
/tmp 让一般用户或者是正在执行的程序暂时放置文件的地方
/sys 这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要是记录与内核相关的信息
Linux常用命令
1.系统维护类
ls 列出文件 只能查看文件名字,看详细信息用ls -l (ll) -a查看隐藏文件 ll - d 查看指定目录的权限
[root@web /]# ll /tmp #不加-d查看目录里面的文件信息
total 0
drwx------. 3 root root 17 May 27 20:20 systemd-private-2d0563e939974779a22fb3dad09b9748-colord.service-El2kX8
drwx------. 3 root root 17 May 27 20:19 systemd-private-2d0563e939974779a22fb3dad09b9748-cups.service-LeIkhA
drwx------. 3 root root 17 May 27 20:19 systemd-private-2d0563e939974779a22fb3dad09b9748-rtkit-daemon.service-VR3J1x
drwx------. 3 root root 17 May 27 03:22 systemd-private-9be7fb432c45460abbbe559bb58fb62c-colord.service-4aQ3Re
drwx------. 3 root root 17 May 27 03:22 systemd-private-9be7fb432c45460abbbe559bb58fb62c-cups.service-NbtoU5
drwx------. 3 root root 17 May 27 03:22 systemd-private-9be7fb432c45460abbbe559bb58fb62c-rtkit-daemon.service-whxSBe
drwx------. 2 root root 6 May 27 20:19 vmware-root
[root@web /]# ll -d /tmp ## -d 查看目录的信息
drwxrwxrwt. 14 root root 4096 May 27 20:20 /tmp
pwd 查看当前所在目录
[root@web ~]# pwd
/root
cd change directory#改变目录
date 查看系统时间
[root@web ~]# date
Wed May 27 20:41:33 CST 2020
[root@web ~]# date -s "12:44:40 2020-05-27" # -s 修改时间
Wed May 27 12:44:40 CST 2020
[root@web ~]# date
Wed May 27 12:44:44 CST 2020
passwd 修改密码用的,可以修改当前用户密码,也可以修改其他用户密码
[root@web ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
man man手册,用来查看帮助文档的,不知道用法的命令,使用man就可以进行查看
who 查看是谁登录到系统,和登录时间
[root@web ~]# who
root pts/0 2020-05-27 20:20 (gateway)
[root@web ~]# su - redhat
Last login: Mon Apr 13 23:46:54 CST 2020 on :0
[redhat@web ~]$ who
root pts/0 2020-05-27 20:20 (gateway)
last 查看所有登录者 以及登录时长
[redhat@web ~]$ last
root pts/0 gateway Wed May 27 20:20 still logged in
reboot system boot 3.10.0-862.el7.x Wed May 27 20:19 - 13:14 (-7:-5)
root pts/0 gateway Wed May 27 03:24 - crash (16:54)
reboot system boot 3.10.0-862.el7.x Wed May 27 03:22 - 13:14 (09:52)
root pts/3 gateway Wed May 13 16:11 - 20:23 (04:11)
root pts/2 gateway Tue Apr 28 23:23 - 19:39 (14+20:16)
root pts/1 192.168.168.1 Mon Apr 13 23:49 - 19:34 (29+19:45)
redhat pts/0 :0 Mon Apr 13 23:47 - crash (43+03:34)
redhat :0 :0 Mon Apr 13 23:46 - crash (43+03:35)
reboot system boot 3.10.0-862.el7.x Mon Apr 13 23:14 - 13:14 (43+14:00)
root pts/0 192.168.133.1 Mon Jul 29 18:14 - crash (259+05:00)
root pts/0 192.168.133.1 Mon Jul 29 16:52 - 18:14 (01:21)
redhat :0 :0 Mon Jul 29 16:51 - crash (259+06:22)
reboot system boot 3.10.0-862.el7.x Mon Jul 29 16:50 - 13:14 (302+20:23)
root pts/0 192.168.133.1 Mon Jul 29 06:42 - crash (10:08)
root pts/0 192.168.133.1 Mon Jul 29 06:19 - 06:42 (00:23)
redhat :0 :0 Mon Jul 29 06:16 - crash (10:34)
reboot system boot 3.10.0-862.el7.x Mon Jul 29 06:14 - 13:14 (303+06:59)
root pts/0 192.168.133.1 Mon Jul 29 00:25 - crash (05:49)
root pts/0 192.168.133.1 Sun Jul 28 23:12 - 00:25 (01:12)
root pts/0 192.168.133.1 Sun Jul 28 23:04 - 23:12 (00:08)
redhat :0 :0 Sun Jul 28 23:03 - crash (07:11)
reboot system boot 3.10.0-862.el7.x Sun Jul 28 23:02 - 13:14 (303+14:12)
root pts/0 192.168.133.1 Sun Jul 28 03:52 - crash (19:09)
root pts/0 192.168.133.1 Sun Jul 28 03:24 - 03:51 (00:27)
redhat :0 :0 Sun Jul 28 03:23 - crash (19:38)
reboot system boot 3.10.0-862.el7.x Sun Jul 28 03:22 - 13:14 (304+09:51)
root pts/0 192.168.133.1 Sun Jul 28 03:12 - crash (00:10)
root pts/0 192.168.133.1 Sun Jul 28 02:55 - 03:11 (00:15)
root pts/0 192.168.133.1 Sun Jul 28 01:10 - 02:55 (01:45)
root pts/0 192.168.133.1 Sun Jul 28 01:01 - 01:09 (00:08)
root pts/0 192.168.133.1 Sun Jul 28 00:28 - 01:00 (00:32)
redhat pts/1 :0 Sun Jul 28 00:26 - 00:26 (00:00)
redhat pts/0 :0 Sun Jul 28 00:26 - 00:27 (00:00)
redhat :0 :0 Sun Jul 28 00:26 - crash (02:56)
reboot system boot 3.10.0-862.el7.x Sun Jul 28 00:25 - 13:14 (304+12:48)
root pts/0 192.168.133.1 Sat Jul 27 08:00 - crash (16:24)
redhat :0 :0 Sat Jul 27 07:59 - crash (16:26)
reboot system boot 3.10.0-862.el7.x Sat Jul 27 07:58 - 13:14 (305+05:15)
root pts/2 192.168.133.1 Fri Jul 26 21:05 - crash (10:53)
root pts/2 192.168.133.1 Fri Jul 26 21:01 - 21:04 (00:03)
redhat pts/2 192.168.133.1 Fri Jul 26 20:58 - 21:00 (00:02)
redhat pts/1 192.168.133.1 Fri Jul 26 18:56 - 21:17 (02:21)
redhat pts/0 192.168.133.1 Fri Jul 26 18:23 - 21:17 (02:53)
redhat pts/0 :0 Fri Jul 26 17:30 - 18:22 (00:52)
redhat pts/0 :0 Fri Jul 26 17:26 - 17:26 (00:00)
redhat pts/0 192.168.133.1 Fri Jul 26 16:37 - 17:25 (00:47)
redhat pts/0 192.168.133.1 Fri Jul 26 16:33 - 16:36 (00:02)
redhat :0 :0 Fri Jul 26 05:32 - crash (1+02:26)
reboot system boot 3.10.0-862.el7.x Fri Jul 26 05:31 - 13:14 (306+07:42)
redhat :0 :0 Fri Jul 26 05:27 - crash (00:04)
reboot system boot 3.10.0-862.el7.x Fri Jul 26 05:25 - 13:14 (306+07:48)
wtmp begins Fri Jul 26 05:25:40 2019
ps–Process Status ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
[redhat@web ~]$ ps -ef | grep bind 过滤查看指定某个进程
rpc 746 1 0 12:19 ? 00:00:00 /sbin/rpcbind -w
redhat 3185 2764 0 13:44 pts/0 00:00:00 grep --color=auto bind
2.文件管理类
touch、cd、stat、rm、mv
cat、more、less、head、tail
grep、find、ln
touch 创建文件
touch abc{1..100}
cd change directory#改变目录
stat 列出文件或者目录的详细信息
[redhat@web ~]$ stat Desktop/
File: ‘Desktop/’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 67144957 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ redhat) Gid: ( 1000/ redhat)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2020-04-13 23:47:09.404933439 +0800
Modify: 2019-07-26 05:27:44.889998252 +0800
Change: 2019-07-26 05:27:44.889998252 +0800
Birth: -
rm 删除文件 直接用rm + 文件名,只能删除文件,不能删除目录,删除目录采用 rm -r 删除目录(递归删除),rm -rf 递归强制删除
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
mv 移动文件 mv 文件所在位置 所需要移动的地方,也可以用于文件重命名,如改名/home/test1-->/home/test2: mv /home/test1 /home/test2
cp 复制文件 cp -r 文件位置 需要到达的位置 若是目录文件-r 目录移动
cat 查看文件
less 查看文件 可以看目录,并且不会全部加载内容
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
[root@web ~]# head -n 5 hehe ##-n表示显示多少行,-c 表示显示多少字节 head -n -5 hehe ##表示除了最后五行都看
1
2
3
4
5
[root@web ~]#
[root@web ~]#
[root@web ~]# cat hehe
1
2
3
4
5
1
2
3
4
[root@web ~]# tail -n 5 hehe
5
1
2
3
4
grep 全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 能直接查找文件中的内容,
还能配合管道符进行使用
[root@web ~]# ps -ef | grep sshd
root 1204 1 0 16:33 ? 00:00:00 /usr/sbin/sshd -D
root 2093 1204 0 16:34 ? 00:00:01 sshd: root@pts/0
root 3795 1204 0 18:51 ? 00:00:00 sshd: root@pts/1
root 4247 1204 0 19:26 ? 00:00:00 sshd: root@pts/2
root 4430 4253 0 19:34 pts/2 00:00:00 grep --color=auto sshd
[root@web ~]# grep "1" hehe
1
1
[root@web ~]# grep "1" hehe xixi #同时在多个文件中匹配
hehe:1
hehe:1
grep: xixi: Is a directory
find 查找文件名 为 find 目录 -name “名字” - type 类型 -perm 权限
ln 它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
[root@web ~]# ln hehe hehe.txt #创建硬链接 -s 创建软链接
[root@web ~]# ll
total 20
-rw-------. 1 root root 1910 Jul 26 2019 anaconda-ks.cfg
drwxr-xr-x. 3 root root 18 May 27 16:30 haha
-rw-r--r--. 1 root root 76 Jul 28 2019 heh
-rw-r--r--. 2 root root 23 May 27 19:32 hehe
-rw-r--r--. 2 root root 23 May 27 19:32 hehe.txt
-rw-r--r--. 1 root root 2003 Jul 26 2019 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 May 27 16:36 xixi
硬链接和软链接区别:
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
3.压缩于解压缩
zip 和zip 压缩为zip格式,解压缩zip格式
zip -qr haha.zip haha ##(将haha压缩为haha.zip -q不显示过程,-r,递归,压缩文档)
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
tar -cvf 压缩文件名字 压缩文件 #压缩
tar -xvf 压缩文件名字 ##解压缩
tar –cvf jpg.tar *.jpg // 将目录里所有jpg文件打包成 tar.jpg
tar –czf jpg.tar.gz *.jpg // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg // rar格式的压缩,需要先下载 rar for linux
zip jpg.zip *.jpg // zip格式的压缩,需要先下载 zip for linux
tar –xvf file.tar // 解压 tar 包
tar -xzvf file.tar.gz // 解压 tar.gz
tar -xjvf file.tar.bz2 // 解压 tar.bz2
tar –xZvf file.tar.Z // 解压 tar.Z
unrar e file.rar // 解压 rar
unzip file.zip // 解压 zip
4. 磁盘管理
df 查看磁盘使用情况和挂载情况 一般用df -h
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 36G 4.1G 32G 12% /
devtmpfs 895M 0 895M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 11M 901M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 1014M 170M 845M 17% /boot
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
du 查看指定目录或者文件所占用磁盘大小
[root@web ~]# du -b /root/haha
6 /root/haha/xixi
24 /root/haha
[root@web ~]#
fdisk 是 Linux 的磁盘分区表操作工具。直接加磁盘进行分区操作
fdisk -l 查看所有的分区情况和类型 ,后面也可以指定磁盘
[root@web ~]# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c358e
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 83886079 40893440 8e Linux LVM
Disk /dev/mapper/rhel-root: 37.7 GB, 37706792960 bytes, 73646080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/rhel-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
sync 命令用于数据同步,sync命令是在关闭Linux系统时使用的。
Linux 系统中欲写入硬盘的资料有的时候会了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于 buffer 中的资料强制写入硬盘中。
mkfs 用来在分区上建立文件系统
Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。
5.网络设置
ifconfig 查看所有的网卡信息
[root@web ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.168.157 netmask 255.255.255.0 broadcast 192.168.168.255
inet6 fe80::2c82:9418:c94:9233 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b9:ad:7e txqueuelen 1000 (Ethernet)
RX packets 10748 bytes 825723 (806.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4896 bytes 747192 (729.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 316 bytes 25264 (24.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 316 bytes 25264 (24.6 KiB)
ip 查看IP信息
[root@web ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:b9:ad:7e brd ff:ff:ff:ff:ff:ff
inet 192.168.168.157/24 brd 192.168.168.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::2c82:9418:c94:9233/64 scope link noprefixroute
valid_lft forever preferred_lft forever
nmcli 基于网络会话管理,可以查看网络信息和修改网卡配置
可以直接通过输入nmcli+tab键进行补齐,来查看所有的命令,下面举例一下常用命令
[root@localhost ~]# nmcli connection show
#查看所以的网络连接
[root@localhost ~]# nmcli connection show -active
#查看正在活动的网络连接
[root@localhost ~]# nmcli connection show ens33
#查看指定网卡的网络信息,这里的ens33是你通过show命令看到的网卡中的一块
[root@localhost ~]# nmcli device status
#显示设备的连接状态
[root@localhost ~]# nmcli device show
#查看所有网络设备的详细信息
[root@localhost ~]# nmcli device show ens33
#指定查看某网络设备的详细信息
6.用户管理
useradd 选项 用户名 添加用户
userdel 选项 用户名 删除用户 用userdel -r 删除用户的主目录,邮箱也一起删除
usermod 选项 用户名 修改用户 -g 修改所属组
passwd 选项 用户名 给用户指定密码 -d 指定为密码为空 -l 指定为用户锁定,不可登录
groupadd 选项 用户组 添加用户组
# groupadd -g 101 group2
groupdel 用户组 删除用户组
groupmod 选项 用户组 修改用户组
7.软件管理
rmp rpm软件包的管理工具
rpm -q 软件包名 查看是否安装
rpm -ivh your-package # 直接安装
[root@localhost ~]# rpm -ql 查询是否安装 # 查询 rpm -qa | grep httpd 指定查询
[root@localhost ~]# rpm -e tree # 卸载
yum 安装软件
需要先编辑yum仓库
yum install 安装软件包
yum remove 卸载软件包
yum list 列出软件包
今天的分享就到这里,如有错误,望指正。谢谢!