重要命令:
---------存储结构与管理硬盘----------------------
RHEL 7/8 系统中一个比较大的变化就是使用了 XFS 作为文件系统,这不同于 RHEL 6 使用的 Ext4。
我个人认为 XFS 虽然在性能方面比 Ext4 有所提升,但绝不是压倒性的,因此XFS 文件系统最卓越的亮点应该当属可支持高达 18EB 的存储容量吧。
物理设备的命名规则--------
IDE 设备(已不常见) /dev/hd[a-d] | SCSI/SATA/U 盘 /dev/sd[a-z] | Virtio 设备(一种虚拟化设备) /dev/vd[a-z] | 软驱/dev/fd[0-1]
打印机/dev/lp[0-15] | 光驱/dev/cdrom | 鼠标/dev/mouse | 磁带机/dev/st0 或/dev/ht0
主分区或扩展分区的编号从 1 开始,到 4 结束;逻辑分区从编号 5 开始。
注意误区:
1./dev 目录中 sda 设备之所以是 a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。
2.分区的数字编码不一定是强制顺延下来的,也有可能是手工指定的。因此 sda3 只能表示是编号为 3 的分区,而不能判断 sda 设备上已经存在了 3 个分区。
mount 命令用于挂载文件系统,格式为“mount 文件系统 挂载目录”,
-t参数:指定文件系统的类型(新的linux版本可自动判断,已不常用)
-a 参数则厉害了,它会在执行后自动检查/etc/fstab文件中有无被疏漏挂载的设备文件,如果有,则进行自动挂载操作。
blkid 命令用于显示设备的属性信息,英文全称为“block id”,语法格式为“blkid [设备名]”。可用 blkid 命令来查询设备 UUID
如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”写入到/etc/fstab 文件中。
例如: /dev/sdb2 /backup ext4 defaul ts 0 0
写入到/etc/fstab 文件中的设备信息并不会立即生效,需要使用 mount -a 参数进行自动挂载
umount 命令用于卸载设备或文件系统,英文全称为“un mount”,语法格式为“umount [设备文件/挂载目录]”。
df 命令用于查看已挂载的磁盘空间使用情况,英文全称为“disk free”,语法格式为“df -h”。-h参数使用易读单位显示
lsblk 命令用于查看已挂载的磁盘的空间使用情况,英文全称为“list block id”,以树状图的形式列举
fdisk 命令用于新建、修改及删除磁盘的分区表信息,英文全称为“format disk”,语法格式为“fdisk 磁盘名称”。
格式化操作的命令是mkfs
这个 mkfs 命令很贴心地把常用的文件系统名称用后缀的方式保存成了多个命令文件,用起来也非常简单 — mkfs.文件类型名称。例如要将分区为 XFS 的文件系统进行格式化,
则命令应为 mkfs.xfs /dev/sdb1。
partprobe 命令手动将分区信息同步到内核,而且一般推荐连续两次执行该命令
du 命令用查看分区或目录所占用的磁盘容量大小,英文全称为“disk usage”,语法格式为“du -sh 目录名称”。可以使用 du -sh /*命令来查看在 Linux 系统根目录下所有一级目录分别
占用的空间大小,在 1s 之内就能找到哪个目录占用的空间最多
在生产环境中,交换分区的大小一般为真实物理内存的 1.5~2 倍。
mkswap 命令用于对新设备进行交换分区格式化,英文全称为“make swap”,语法格式为“mkswap 设备名称”。
swapon 命令用于激活新的交换分区设备,英文全称为“swap on”,语法格式为“swapon设备名称”。
使用 free -m 命令查看交换分区的大小变化
软连接也叫符号链接(symbolic link),仅仅包含所链接文件的名称和路径,很像一个记录地址的标签。当原始文件被删除或移动后,新的链接文件也会随之失效,不能被访问
硬链接可以将它理解为一个“指向原始文件 block 的指针”,系统会创建出一个与原来一模一样的 inode 信息块。所以,硬链接文件与原始文件其实是一模
一样的,只是名字不同。每添加一个硬链接,该文件的 inode 个数就会增加 1;而且只有当该文件的 inode 个数为 0 时,才算彻底将它删除
ln 命令用于创建文件的软硬链接,英文全称为“link”,语法格式为“ln [参数]原始文件名 链接文件名”。
-s创建“符号链接”(如果不带-s 参数,则默认创建硬链接)
-f强制创建文件或目录的链接
-i 覆盖前先询问
-v 显示创建链接的过程
----------------------------基础命令-----------------------------------------------------------------
网卡参数配置方法:
1.vim编辑配置文件: cd 切换到 /etc/sysconfig/network-scripts 目录中(存放着网卡的配置文件),vim 需要配置的网卡文件(名称一般为: ifcfg-网卡名 )
TYPE=Ethernet #设备类型
BOOTPROTO=static #地址分配模式
NAME=ens160 #网卡名称
ONBOOT=yes #是否启动
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=192.168.10.1
2. nmtui 命令: 配置网卡参数的图形工具
配置完成后需要输入命令重新载入后才能生效:nmcli connection reload ens160 如果还不行,执行命令 nmcli connection up ens160
-------------------------------------------------
echo 命令用于在终端设备上输出字符串或变量提取后的值,语法格式为“echo [字符串] 例如:[root@linuxprobe~]# echo $SHELL
[$变量]”。
top:加强版任务监视器
date 查看或设置日期时间 例如设置时间date -s "20201101 8:30:00"
timedatectl 查看或设置时间及时区 例如 查看 timedatectl status 设置中国时区:timedatectl set-timezone Asia/Shanghai
wget 命令用于在终端命令行中下载网络文件,英文全称为“web get”,语法格式为“wget
[参数] 网址”。
ps 命令用于查看系统中的进程状态
-a显示所有进程(包括其他用户的进程)
-u用户以及其他详细信息
-x显示没有控制终端的进程
-e
等于“-A”
D
不可中断 uninterruptible sleep (usually IO)R
运行 runnable (on run queue)S
中断 sleepingT
停止 traced or stoppedZ
僵死 a defunct (”zombie”) process
除了上面 5 种常见的进程状态,还有可能是高优先级(<)、低优先级(N)、被锁进内存
(L)、包含子进程(s)以及多线程(l)这 5 种补充形式。
常用组合形式:
ps -ef 显示所有进程信息,连同命令行
ps -ef|grep ssh ps 与grep 常用组合用法,查找特定进程
ps -l 将目前属于您自己这次登入的 PID 与相关信息列示出来
ps aux 列出目前所有的正在内存当中的程序
ps -u root 显示指定用户信息
pidof 命令用于查询某个指定服务进程的 PID 号码值,语法格式为“pidof [参数] 服务名称”
kill 命令用于终止某个指定 PID 值的服务进程,语法格式为“kill [参数] 进程的 PID”。
killall 命令用于终止某个指定名称的服务所对应的全部进程,语法格式为“killall [参数] 服
务名称”
ifconfig 命令用于获取网卡配置与网络状态等信息,英文全称为“interface config”,语法
格式为“ifconfig [参数] [网络设备]”
uname 命令用于查看系统内核版本与系统架构等信息,英文全称为“unix name”,语法格
式为“uname [-a]”,一般要固定搭配上-a 参数来完整地查看
uptime 命令用于查看系统的负载信息,输入该命令后按回车键执行即可。显示平均负载值:系统在最近 1 分钟、5 分钟、15 分钟内的压力情况,建
议负载值保持在 1 左右,在生产环境中不要超过 5 就好。
free 命令用于显示当前系统中内存的使用量信息,语法格式为“free [-h]” ,如果不使用-h(易读模式)查看内存使用量情况,则默认以 KB 为单位
who 命令用于查看当前登入主机的用户终端信息
last 命令用于调取主机的被访记录
tracepath 命令用于显示数据包到达目的主机时途中经过的所有路由信息,语法格式为
“tracepath [参数] 域名”
netstat 命令用于显示如网络连接、路由表、接口状态等的网络相关信息,英文全称为
“network status”,语法格式为“netstat [参数]”。
history 命令用于显示执行过的命令历史,语法格式为“history [-c]”。可以使用“!编码数字”的方式来重复执行某一次的命令
--------------------------------------
pwd 命令用于显示用户当前所处的工作目录,英文全称为“print working directory”
cd 命令用于切换当前的工作路径,英文全称为“change directory”,语法格式为“cd [参
数] [目录]”。可以使用“cd -”命令返回到上一次所处的目录,
使用“cd..”命令进入上级目录,以及使用“cd~”命令切换到当前用户的家目录,抑或使用
“cd~username”命令切换到其他用户的家目录
ls 命令用于显示目录中的文件信息,英文全称为“list”,语法格式为“ls [参数] [文件名称]”。使用 ls 命令的-a 参数
可以看到全部文件(包括隐藏文件),使用-l 参数可以查看文件的属性、大小等详细信息。如果想要查看目录属性信息,则需要额外添加一个-d 参数。
tree 命令用于以树状图的形式列出目录内容及结构,输入该命令后按回车键执行即可。
find 命令用于按照指定条件来查找文件所对应的位置,语法格式为“find [查找范围] 寻
找条件”
locate 命令用于按照名称快速搜索文件所对应的位置,语法格式为“locate 文件名称”。在使用 locate 命令时,先使用 updatedb 命
令生成一个索引库文件,这个库文件的名字是/var/lib/mlocate/mlocate.db,后续在使用 locate
命令搜索文件时就是在该库中进行查找操作,速度会快很多。
whereis 命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的
位置,语法格式为“whereis 命令名称”。
------------------------------------------文本文件编辑命令-------
cat 命令用于查看纯文本文件(内容较少的),英文全称为“concatenate”,语法格式为“cat
[参数] 文件名称”。
more 命令用于查看纯文本文件(内容较多的),语法格式为“more [参数] 文件名称”。
head 命令用于查看纯文本文件的前 N 行,语法格式为“head [参数] 文件名称”。例如: head -n 10 initial-setup-ks.cfg
tail 命令用于查看纯文本文件的后 N 行或持续刷新文件的最新内容,语法格式为“tail [参
数] 文件名称”。tail 命令最强悍的功能是能够持续刷新一个文件的内容,当想要实时查看最新的日志文件
时,这特别有用,此时的命令格式为“tail -f 文件名称”
wc 命令用于统计指定文本文件的行数、字数或字节数,英文全称为“word counts”,语
法格式为“wc [参数] 文件名称”;-l只显示行数,-w只显示单词数,-c 只显示字节数
stat 命令用于查看文件的具体存储细节和时间等信息,英文全称为“status”,语法格式为
“stat 文件名称”。
grep 命令用于按行提取文本内容,语法格式为“grep [参数] 文件名称”。grep 命令是用途最广泛的文本搜索匹配工具。它虽然有很多参数,但是大多数基本上都
用不到。两个最常用的参数:-n 参数用来显示搜索到的信息的行号;-v 参数用于反选信息(即没有包含关键词的所有信息行)。
cut 命令用于按“列”提取文本内容,语法格式为“cut [参数] 文件名称”。一般而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键
词即可。但是如果按“列”搜索,不仅要使用-f 参数设置需要查看的列数,还需要使用-d 参
数来设置间隔符号。
接下来使用下述命令尝试提取出 passwd 文件中的用户名信息,即提取以冒号(:)为间
隔符号的第一列内容:cut -d : -f 1 /etc/passwd
-----------------------------------------文件目录管理命令------------------
touch 命令用于创建空白文件或设置文件的时间,语法格式为“touch [参数] 文件名称”。
mkdir 命令用于创建空白的目录,英文全称为“make directory”,语法格式为“mkdir [参
数] 目录名称”。-p 参数来递归创建出具有嵌套层叠
关系的文件目录
cp 命令用于复制文件或目录,英文全称为“copy”,语法格式为“cp [参数] 源文件名称 目
标文件名称”。
-p保留原始文件的属性
-d若对象为“链接文件”,则保留该“链接文件”的属性
-r递归持续复制(用于目录)
-i若目标文件存在则询问是否覆盖
-a相当于-pdr(p、d、r 为上述参数)
mv 命令用于剪切或重命名文件,英文全称为“move”,语法格式为“mv [参数] 源文件
名称 目标文件名称”。
rm 命令用于删除文件或目录,英文全称为“remove”,语法格式为“rm [参数] 文件
名称”。
-f 强制执行
-i删除前询问
-r删除目录
-v 显示过程
file 命令用于查看文件的类型,语法格式为“file 文件名称”。
tar 命令用于对文件进行打包压缩或解压,语法格式为“tar 参数 文件名称”。
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用 gzip 压缩或解压
-j 用 bzip2 压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录
一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;
相应的解压命令为 “tar -xzvf 压缩包名称.tar.gz”。
将打包后的压缩包文件指定解压到/root/etc 目录中(先使用 mkdir 命令创建/root/etc目录)
[root@linuxprobe~]# mkdir /root/etc
[root@linuxprobe~]# tar xzvf etc.tar.gz -C /root/etc
-----------------管道符、重定向与环境变量-----------
------输入输出重定向----
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1
或
命令 &>> 文件 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
-----------------管道命令符------------
同时按下键盘上的 Shift+反斜杠(\)键即可输入管道符,其执行格式为“命令 A | 命令 B”。
管道命令符的作用也可以用一句话概括为:"把前一个命令 原本要输出到屏幕的信息 当做 后一个命令 的 标准输入"
比如用翻页的形式查看/etc 目录中的文件列表及属性信息 ls -l /etc/ | more
在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成
为一个非常致命的缺陷。通过把管道符和 passwd 命令的--stdin 参数相结合,可以用一条命令
来完成密码重置操作:echo "linuxprobe" | passwd --stdin root
如果需要将管道符处理后的结果既输出到屏幕,又同时写入到文件中,则可
以与 tee 命令结合使用。下述命令将显示系统中所有与 bash 相关的进程信息,并同时将输出到屏幕和文件中:ps aux | grep bash | tee result.txt
----------------------------------------------------------Vim 文本编辑器-----------
命令模式中最常用的一些命令:
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的 5 行
yy 复制光标所在整行
5yy 复制从光标处开始的 5 行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
末行模式中常用的一些命令:
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个 one 替换成 two
:s/one/two/g 将当前光标所在行的所有 one 替换成 two
:%s/one/two/g 将全文中的所有 one 替换成 two
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串
可以分别使用 a、i、o 这 3 个键从命令模式切换到输入模式。其中,a
键与 i 键分别是在光标后面一位和光标当前位置切换到输入模式,而 o 键则是在光标的下面
再创建一个空行
--------------------------------------用户身份与文件权限-------------------------------
管理员UID为0
系统用户UID为1~999
普通用户UID从1000开始
id 命令用于显示用户的详细信息,语法格式为“id 用户名”。
useradd 命令用于创建新的用户账户,语法格式为“useradd [参数] 用户名”。
groupadd 命令用于创建新的用户组,语法格式为“groupadd [参数] 群组名”。
usermod 命令用于修改用户的属性,英文全称为“user modify”,语法格式为“usermod [参
数] 用户名”。
passwd 命令用于修改用户的密码、过期时间等信息,英文全称为“password”,语法格式
为“passwd [参数] 用户名”。
userdel 命令用于删除已有的用户账户,英文全称为“user delete”,语法格式为“userdel [参
数] 用户名”。
文件的可读、可写、可执行权限的英文全称分别是 read、write、execute,可以简写为 r、
w、x,亦可分别用数字 4、2、1 来表示,文件所有者、文件所属组及其他用户权限之间无关
联
排在权限前面的减号(-)是文件类型(减号表示普通文件),新手经常会把它跟“无权
限”混淆。尽管在 Linux 系统中一切都是文件,但是不同的文件由于作用不同,因此类型也
不尽相同(有一点像 Windows 系统的后缀名)。常见的文件类型包括普通文件(-)、目录文件
(d)、链接文件(l)、管道文件(p)、块设备文件(b)以及字符设备文件(c)。
chattr 命令用于设置文件的隐藏权限,英文全称为 change attributes,语法格式为“chattr [参
数] 文件名称”。如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把
某个隐藏功能移出文件,则需要追加“-参数”。
我们一般会将-a 参数设置到日志文件(/var/log/messages)上,这样可在不影响系统正常
写入日志的前提下,防止黑客擦除自己的作案证据。如果希望彻底地保护某个文件,不允许
任何人修改和删除它的话,不妨加上-i 参数试试,效果特别好。要想彻底删除某个文件,可以使用-s 参数来保证其被
删除后不可恢复
lsattr 命令用于查看文件的隐藏权限,英文全称为“list attributes”,语法格式为“lsattr [参
数] 文件名称”。
-----文件访问控制列表----
前文讲解的一般权限、特殊权限、隐藏权限其实有一个共性 — 权
限是针对某一类用户设置的,能够对很多人同时生效。如果希望对某个指定的用户进行单独
的权限控制,就需要用到文件的访问控制列表(ACL)了。
setfacl 命令用于管理文件的 ACL 权限规则,英文全称为“set files ACL”,语法格式为
“setfacl [参数] 文件名称”。
-m 修改权限
-M 从文件中读取权限
-x 删除某个权限
-b 删除全部权限
-R 递归子目录
例子:[root@linuxprobe~]# setfacl -Rm u:linuxprobe:rwx /root
常用的 ls 命令是看不到 ACL 信息的,但是却可以看到文件权限的最后一个点( .)
变成了加号( +),这就意味着该文件已经设置了 ACL
getfacl 命令用于查看文件的 ACL 权限规则,英文全称为“get files ACL”,语法格式为
“getfacl [参数] 文件名称”。
-------su 命令与 sudo 服务---
从 root 管理员切换至普通用户:[root@linuxprobe~]# su - linuxprobe
su 命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。
强烈建议在切换用户身份时添加这个减号(-)。
sudo 命令用于给普通用户提供额外的权限,语法格式为“sudo [参数] 用户名”。
visudo 命令用于编辑、配置用户 sudo 的权限文件,语法格式为“visudo [参数]”。
这是一条会自动调用 vi 编辑器来配置/etc/sudoers 权限文件的命令,能够解决多个用户同
时修改权限而导致的冲突问题。不仅如此,visudo 命令还可以对配置文件内的参数进行语法
检查,并在发现参数错误时进行报错提醒。这要比用户直接修改文件更友好、安全、方便。
可以添加 NOPASSWD 参数,
使得用户下次再执行 sudo 命令时就不用密码验证:
[root@linuxprobe~]# visudo
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
101 linuxprobe ALL=(ALL) NOPASSWD: /usr/bin/cat,/usr/sbin/reboot
--------------------------------------------------
对于 MySQL
数据库来说,我们需要在系统中创建一个名为 mysql 的用户,专门用于负责运行 MySQL 数据
库。请记得要把这类账户的 Bash 终端设置成 nologin 解释器,避免黑客通过该用户登录到服
务器中,从而提高系统安全性。
[root@linuxprobe lnmp]# useradd mysql -M -s /sbin/nologin
---------------------
chmod 命令用于设置文件的一般权限及特殊权限,英文全称为“change mode”,语法格
式为“chmod [参数] 文件名”。
[root@linuxprobe~]# chmod 760 anaconda-ks.cfg
chown 命令用于设置文件的所有者和所有组,英文全称为 change own,语法格式为“chown 所有者:所有组 文件名”。
[root@linuxprobe~]# chown linuxprobe:linuxprobe anaconda-ks.cfg
chmod 和 chown 命令是用于修改文件属性和权限的最常用命令,它们还有一个特别的共
性,就是针对目录进行操作时需要加上大写参数-R 来表示递归操作,即对目录内所有的文件
进行整体操作。