【系统使用】Linux命令--基于CentOS7
Linux命令--基于CentOS7
VI/VIM编辑器
基本内容
-
VI
VI 是Unix操作系统和类Unix操作系统中最通用的文本编辑器
-
VIM
VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜
色辨别语法的正确性,方便程序设计。
-
VIM 与 VI 编辑器完全兼容
一般模式
-
以
vi
打开一个档案就直接进入一般模式(默认模式) -
在这个模式中, 可以使用『上下左右』按键来移动光标
可以使用『删除字符』或『删除整行』来处理档案内容
也可以使用『复制、粘贴』来处理你的文件数据
-
常用
语法 功能描述 yy
复制光标前一行 y 数字 y
复制一段 p
箭头移动到目的行粘贴 u
撤销上一步 dd
删除光标当前行 d 数字 d
删除光标(含)后n行 x
剪切一个字母,相当于 del
x
剪切一个字母,相当于 Backspace
yw
复制一个词 dw
删除一个词 shift+6
移动至行头 shift+4
移动至行尾 1+shift+g
移动至页头 shift+g
移动至页尾 数字+shift+g
移动至目标行 -
键盘图
编辑模式
- 在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容的!
- 要等到你按下i, I, o, O, a, A等任何一个字母之后才会进入编辑模式。
通常在Linux中,按下这些按键时,在画面的左下方会出现『INSERT或 REPLACE』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下 『Esc』这个按键即可退出编辑模式。
-
进入编辑模式
按键 功能 i
当前光标前 a
当前光标后 o
当前光标行的下一行 I
光标所在行最前 A
光标所在行最后 O
当前光标行的上一行 -
退出编辑模式
按下 『Esc』键即可退出编辑模式,之后所在模式转变为一般模式
指令模式
- 在一般模式当中,输入『 : / ?』3个中的任何一个按钮,就可以将光标移动到最底下那一行。
在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等动作是在此模式中达成的!
-
常用
命令 功能 :w
保存 :q
退出 :!
强制执行 /查找的词
查找,按 n
查找下一个,按N
往上查找:noh
取消高亮显示 :set nu
显示行号 :set nonu
关闭行号 :%s/old/new/g
替换内容,以new替换old, /g
替换匹配到的所有内容:wq!
强制保存退出
模式间转换
系统管理
service服务管理
-
基本语法(CentOS7不使用)
service 服务名 start | stop | restart | status
查看服务的方法:
/etc/init.d/服务名
-
实操案例
# 查看网络服务的状态 service network status # 停止网络服务 service network stop # 启动网络服务 service network start # 启动网络服务 service network restart
chkconfig设置后台服务的自启配置
-
基础语法
# 查看所有服务器自启配置 chkconfig # 关掉指定服务的自启动 chkconfig 服务名 off # 开启指定服务的自启动 chkconfig 服务名 on # 查看服务开机启动状态 chkconfig 服务名 --list
-
实操案例
# 开启网络服务的自启动 chkconfig network on # 关闭网络服务的自启动 chkconfig network off
# 开启网络服务指定级别的自启动 chkconfig --level 指定级别 network on # 关闭网络服务指定级别的自启动 chkconfig --level 指定级别 network off
systemctl
-
基本语法
systemctl start | stop | restart | status 服务名
查看服务的方法:
/usr/lib/systemd/system
-
实操案例
# 查看防火墙服务的状态 systemctl status firewalld # 停止防火墙服务的状态 systemctl stop firewalld # 启动防火墙服务的状态 systemctl start firewalld # 重启防火墙服务的状态 systemctl restart firewalld
systemctl设置后台服务的自启配置
-
基本语法
# 查看服务开机启动状态 systemctl list-unit-files # 关闭指定服务的自启动 systemctl disable service_name # 开启指定服务的自启动 systemctl enable service_name
-
实操案例
# 开启防火墙服务的自启动 systemctl enable firewalld.service # 关闭防火墙服务的自启动 systemctl disable firewalld.service
系统运行级别
-
运行级别
开机-->BIOS-->/boot-->init进程-->运行级别-->运行级对应的服务
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS),不支持网络
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并启动,默认运行级别不能设置为6,否则不能正常启动
-
基本语法
# 查看默认运行级别 vi /etc/inittab # 查看当前运行级别 systemctl get-default # 修改当前运行级别 systemctl set-default TARGET.target
TARGET取
multi-user.target
或graphical.target
-
CentOS7运行级别简化
multi-user.target
等价于原运行级别3(多用户有网无图形界面)graphical.target
等价于原运行级别5(多用户有网有图形界面)
关闭防火墙
-
临时关闭防火墙
# 查看防火墙状态 systemctl status firewalld # 临时关闭防火墙 systemctl stop firewalld
-
开机启动时关闭防火墙
# 查看防火墙开机启动状态 systemctl enable firewalld.service # 设计开机时关闭防火墙 systemctl disable firewalld.service
关机重启命令
-
在Linux领域内大多用在服务器上,很少遇到关机的操作。除非特殊情况下,不得已才会关机。
-
基本语法
# 将数据由内存同步到硬盘中 sync # 停机,关闭系统,但不断电 halt # 关机,断电 poweroff # 立即重启 reboot shutdown -H|-r now|时间
-H,相当于
--halt
,停机-r,相当于
reboot
,重启now,立即关机
时间,等待多久后关机(时间单位是分钟)
-
经验技巧
具体操作
帮助命令
-
man获取帮助信息
# 获取帮助信息 man [命令或配置文件]
-
显示信息
信息 功能 NAME 命令的名称和单行描述 SYNOPSIS 如何使用命令 DESCRIPTION 命令功能的深入讨论 EXAMPLES 如何使用命令的例子 SEE ALSO 相关主题
-
-
help获取shell内置命令的帮助信息
# 获取shell内置命令的帮助信息 help 命令
一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令被称为“外部命令”
# 判断是内置命令还是外置命令 type 命令
-
常用快捷键
常用快捷键 功能 ctrl+c
停止进程 ctrl+l
清屏 tab
自动补全 上下键 查找执行过的命令
文件目录类
pwd
显示当前工作目录的绝对路径
-
基本语法
# 显示当前工作目录的绝对路径 pwd
print working directory 打印工作目录
ls
列出目录的内容
-
基本语法
ls [选项] [目录或文件]
-
list 列出目录内容
-
选项 功能 -a
全部文件,包括隐藏档列出 -l
长数据串列出,包含文件的属性与权限 -
显示信息
文件类型与权限、链接数、文件属主、文件属组、文件大小(用byte表示)、建立或最近修改时间、名字
-
-
案例
# 查看当前目录的所有内容信息 ls -a
cd
切换目录
-
基本语法
# 基础使用 cd [参数] # 切换路径 cd 相对路径 cd 绝对路径 # 回到自己的家目录 cd ~ / cd # 回到上一次所在目录 cd - # 回到当前目录的上一级目录 cd .. # 跳转到实际物理路径,并非快捷方式路径 cd -P
Change Directory 切换路径
-
实操
# 使用绝对路径切换到root目录 cd /root/ # 使用相对路径切换到“公共的”目录 cd 公共的/ # 表示回到自己的家目录,亦即是 /root 这个目录 cd ~ # 回到上一次所在目录 cd - #表示回到当前目录的上一级目录,亦即是 “/root/公共的”的上一级目录的意思; cd ..
mkdir
创建一个新的目录
-
基本语法
# 创建一个目录 mkdir 目录名 # 创建多级目录 mkdir -p 目录1/目录2
Make Directory 建立目录
rmdir
删除一个空的目录
-
基本语法
rmdir 空目录名
Remove Directory 移除目录
touch
创建空文件
-
基本语法
touch 文件名称
cp
复制文件或目录
-
基本语法
# 复制source源文件到dest目标文件目录 cp source dest # 递归复制整个文件夹 cp -r source dest
强制覆盖不提示的方法:
\cp
rm
删除文件或目录
-
基本语法
# 删除指定文件 rm 文件 # 递归删除目录中所有内容 rm -r deleteFile # 强制执行删除操作 rm -f deleteFile # 显示指令的详细执行过程 rm -v deleteFile
mv
移动文件与目录或重命名
-
基本语法
# 重命名 mv oldNameFile newNameFile # 移动文件 mv /movefile /targetFolder
cat
查看文件内容
-
基本语法
# 查看文件内容 cat 文件名 # 显示文件所有行号,包括空行 cat -n 文件名
查看文件内容,从第一行开始显示
more
文件内容分屏查看器
-
基本语法
# 显示文本文件内容 more 文件名
more
指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。 -
操作说明
操作 功能说明 空格键
代表向下翻一页 Enter
代表向下翻一行 q
表示立刻离开more,不再显示该文件内容 Ctrl+F
向下滚动一屏 Ctrl+B
返回上一屏 =
输出当前行的行号 :f
输出文件名和当前行号
less
分屏显示文件内容
-
基本语法
# 分屏查看文件内容 less 文件名
less
指令用来分屏查看文件内容,它的功能与more
指令类似,但是比more
指令更加强大,支持各种显示终端。less
指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。 -
操作说明
操作 功能说明 空格键
向下翻动一页 [pagedown]
向下翻动一页 [pageup]
向上翻动一页 /字串
向下搜索字串的功能 ?字串
向上搜索字串的功能 q
离开less程序
head
显示文件头部内容
-
基本语法
# 查看文件头10行内容 head 文件名 # 查看头部内容任意行数 head -n <行数> 文件名
head
用于显示文件的开头部分内容,默认情况下head
指令显示文件的前10行内容。
tail
输出文件尾部内容
-
基本语法
# 查看文件尾部10行内容 tail 文件名 # 查看尾部内容任意行数 tail -n <行数> 文件名 # 实时追踪文档的更新 tail -f 文件名
ln
软链接
-
基本语法
# 给源文件创建一个软链接 ln -s [源文件或目录] [软链接名] # 删除软链接 rm -rf 软链接名 # 查看软链接 ll
软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放链接其他文件的路径
如果使用``rm -rf 软链接名/ `删除,会把软链接对应的真实目录下内容删掉
-
实操
history
查看已经执行过历史命令
-
基本语法
# 查看已经执行过历史命令 history
echo
输出内容到控制台
-
基本语法
# 输出内容到控制台 echo 输出内容 # 支持转义字符的输出内容并展示 echo -e 输出内容
>
输出重定向和>>
追加
-
基本语法
# 列表内容写入到文件中去,覆盖 ls -l > 文件名 # 列表内容追加到文件末尾 ls -al >> 文件名 # 将文件1的内容覆盖到文件2中 cat 文件1 > 文件2 # 将回响的内容追加到文件末尾 echo "内容" >> 文件名
时间日期类
基本内容
date [OPTION] ... [+FORMAT]
OPTION
选项 功能 -d <时间字符串>
显示指定的“时间字符串”表示时间,非当前时间 -s <日期时间>
显示系统日期时间 参数
<+FORMAT>
显示使用的日期格式
显示当前时间
-
基本语法
# 显示当前时间 date # 显示当前年份 date +%Y # 显示当前月份 date +%m # 显示当前日期 date +%d # 显示年月日时分秒 date "+%Y-%m-%d%H:%M:%S"
显示非当前时间
-
基本语法
# 显示昨天时间 date -d '1 days ago' # 显示明天时间 date -d '-1 days ago'
显示系统时间
-
基本语法
date -s '字符串时间'
cal
查看日历
-
基本语法
# 显示本月日历 cal # 显示当年日历 cal 某年
用户管理命令
useradd
添加新用户
-
基本语法
# 添加新用户 useradd 用户名 # 添加新用户到某个组 useradd -g 组名 用户名
passwd
设置用户密码
-
基本语法
# 设置用户密码 passwd
id
查看用户是否存在
-
基本语法
# 查看用户是否存在 id 用户名
cat /etc/passwd
查看创建的用户
-
基本语法
# 查看创建哪些用户 cat /etc/passwd
su
切换用户
-
基本语法
# 切换用户,只能获得用户执行权限,不能获得环境变量 su 用户名 # 切换到用户并获得该用户的环境变量及执行权限 su - 用户名
userdel
删除用户
-
基本语法
# 删除用户但保存用户主目录 userdel 用户名 # 用户和用户主目录都删除 userdel -r 用户名
who
查看用户登录信息
-
基本语法
# 显示自身用户名称 whoami # 显示登录用户名及登录时间 who am i
sudo
设置普通用户具有root权限
-
添加新用户,并设置密码
# 添加新用户 useradd newuser # 为新用户设置密码 passwd newuser
-
修改配置文件
vi /etc/sudoers
修改
/etc/sudoers
文件,找到下面一行(91 行),在 root 下面添加一行## Allow root to run any commands anywhere root ALL=(ALL) ALL newuser ALL=(ALL) ALL
或设置为不需输入密码执行
sudo
命令## Allow root to run any commands anywhere root ALL=(ALL) ALL newuser ALL=(ALL) NOPASSWD:ALL
-
使用新用户执行
sudo+其他命令
,获得root权限执行操作
usermod
修改用户
-
基本语法
# 修改用户的初始登录组,给定的组必须存在。 usermod -g 用户组 用户名
默认组id是1。
用户组管理命令
-
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同, 如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
-
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
groupadd
新增组
-
基础语法
# 增加一个新的组 groupadd 组名
groupdel
删除组
-
基本语法
# 删除存在的组 groupdel 组名
groupmod
修改组
-
基本语法
# 修改组名 groupmod -n 新组名 老组名
cat /etc/group
查看创建组
cat /etc/group
文件权限类
chmod
改变权限
-
基本概念
-
基本语法
# 方式一 chmod [-R] [{ugo}{+-=}{rwx}] 文件名或目录名 # 方式二 chmod [-R] [mode=421] [文件名或目录名]
-R
递归操作,即修改整个文件夹内的文件u
:所有者g
:所有组o
:其他人a
:所有人(u、g、o 的总和)r=4 w=2 x=1 rwx=4+2+1=7
1
x
2w
3-wx
4r
5r-x
6rw-
7rwx
二进制转换
chown
改变所有者
-
基本语法
# 改变文件或目录所有者 chown [-R] [最终用户] [文件名或目录名]
-R
递归操作,即修改整个文件夹内的文件
chgrp
改变所有组
-
基本语法
# 改变文件或目录所属组 chgrp [最终用户组] [文件名或目录名]
搜索查找类
find
查找文件或目录
-
基本内容
find
指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。 -
基本语法
# 查找文件或目录 find [搜索范围] [OPTION]
-
OPTION
选项 功能 -name<查询方式>
按照指定的文件名查找模式查找文件 -user<用户名>
查找属于指定用户名所有文件 -size<文件大小>
按照指定的文件大小查找文件 其中
b
--块(512字节),c
--字节,w
--字(2字节),k
--千字节,M
--兆字节,G
--吉字节而
+n
代表大于,-n
代表小于,n
代表等于
-
locate
快速定位文件路径
-
基本内容
locate
指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。
locate
指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻
-
基本语法
locate 搜索文件
由于
locate
指令基于数据库进行查询,所以第一次运行前,必须使用updatedb
指令创建 locate 数据库。
grep
过滤查找及|
管道符
-
基本语法
# 显示匹配行及行号 grep -n 查找内容 源文件
-
管道符
|
,表示将前一个命令的处理结果输出传递给后面的命令处理
压缩解压类
gzip/gunzip
压缩
-
基本语法
# 压缩文件,只能将文件压缩为*.gz文件 gzip 文件名 # 解压缩文件 gunzip 文件名.gz
只能压缩文件不能压缩目录
不保留原来的文件
同时多个文件会产生多个压缩包
zip/unzip
压缩
-
基本语法
# 压缩文件和目录 zip [-r] XXX.zip 压缩内容 # 解压缩文件,并指定解压后文件的存放目录 unzip [-d<目录>] XXX.zip
zip
压缩命令在windows/linux都通用,可以压缩目录且保留源文件
tar
打包
-
基本内容
# 打包目录,压缩后的 文件格式.tar.gz tar [OPTION] XXX.tar.gz 将要打包进去的内容
OPTION
选项 功能 -c
产生.tar打包文件 -v
显示详细信息 -f
指定压缩后的文件名 -z
打包同时压缩 -x
解包.tar文件 -C
解压到指定目录
磁盘分区类
du
查看文件和目录占用的磁盘空间
-
基本用法
# 显示目录下每个子目录的磁盘使用情况 du 目录名/文件名
disk usage 磁盘占用情况
OPTION
选项 功能 -h
以易阅读的G,M,K等格式自行显示 -a
查看子目录/文件大小 -c
显示所有的文件和子目录大小及总和 -s
仅显示所有的文件和子目录大小的总和 -max-depth=n
指定统计子目录的深度为第n层
df
查看磁盘空间使用情况
-
基本使用
# 列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况 df -h
disk free 空余磁盘
lsblk
查看设备挂载情况
-
基本语法
# 查看设备挂载情况 lsblk # 查看详细的设备挂载情况,显示文件系统信息 lsblk -f
mount/umount
挂载/卸载
-
准备工作
-
基本语法
# 挂载设备 mount [-t vfstype] [-o options] device dir # 卸载设备 umount 设备文件名或挂载点
参数说明
参数 参数选择 功能 -t vfstype
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
MountWindows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。 -o options
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集主要用来描述设备或档案的挂接方式 device
要挂接(mount)的设备 dir
设备在系统上的挂接点(mount point)
fdisk
分区
-
基本语法
# 查看磁盘分区详情 fdisk -l # 对新增的磁盘进行分区操作 fdisk 磁盘设备名
该命令必须在 root 用户下才能使用
-
功能说明
-
Linux分区
Device
:分区序列,Boot
:引导,Start
:从X磁柱开始,End
:到Y磁柱结束,Blocks
:容量,Id
:分区类型ID,System
:分区类型 -
分区操作按键说明
m
:显示命令列表,p
:显示当前磁盘分区,n
:新增分区,w
:写入分区信息并退出,q
:不保存分区信息直接退出
-
进程线程类
ps
查看当前系统进程状态
-
基本语法
# 查看系统中所有进程 ps aux | grep xxx # 查看子父进程之间的关系 ps -ef | grep xxx
-
process status 进程状态
-
OPTION
选项 功能 a
列出带有终端的所有用户的进程 x
列出当前用户的所有进程,包括没有终端的进程 u
面向用户友好的显示风格 -e
列出所有进程 -u
列出某个用户关联的所有进程 -f
显示完整格式的进程列表 -
功能说明
-
ps aux
显示信息说明信息项 说明 USER
该进程是由哪个用户产生的 PID
进程的 ID 号 %CPU
该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源 %MEM
该进程占用物理内存的百分比,占用越高,进程越耗费资源 VSZ
该进程占用虚拟内存的大小,单位 KB RSS
该进程占用实际物理内存的大小,单位 KB TTY
该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端 tty2-tty6
本地的字符界面终端。
pts/0-255 代表虚拟终端STAT
进程状态。
常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示START
该进程的启动时间 TIME
该进程占用 CPU 的运算时间,注意不是系统时间 COMMAND
产生此进程的命令名 -
ps -ef
显示信息说明信息项 说明 UID
用户 ID PID
进程 ID PPID
父进程 ID C
CPU 用于计算执行优先级的因子。
数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;
数值越小,表明进程是 I/O 密集型运算,执行优先级会提高STIME
进程启动的时间 TTY
完整的终端名称 TIME
CPU 时间 CMD
启动进程所用的命令和参数
-
-
如果想查看进程的 CPU 占用率和内存占用率,可以使用 aux;
如果想查看进程的父进程 ID 可以使用 ef
-
kill
终止进程
-
基本语法
# 通过进程号杀死进程 kill [-9] 进程号 # 通过进程名杀死进程,支持通配符 killall 进程名称
-9
表示强迫进程立即停止通配符杀死进程,在系统因负载过大而变得很慢时很有用
pstree
查看进程树
-
基本语法
# 显示进程的PID pstree -p # 显示进程的所属用户 pstree -u
top
实时监控系统进程状态
-
基本语法
# 指定top命令每隔几秒更新。默认是3秒在 top 命令的交互模式当中可以执行的命令 top -d 秒数 # 使top不显示任何闲置或者僵死进程。 top -i # 通过指定监控进程 ID 来仅仅监控某个进程的状态 top -p
-
操作说明
操作 功能 P
以 CPU 使用率排序,默认此项 M
以内存的使用率排序 N
以 PID 排序 q
退出top -
查询结果字段解释
-
第一行--任务队列信息
内容 说明 12:26:46
系统当前时间 up 1 day, 13:32
系统的运行时间,本机已经运行 1 天13 小时 32 分钟 2 users
当前登录了两个用户 load average: 0.00, 0.00, 0.00
系统在之前 1 分钟,5 分钟,15 分钟的平均负载。一般认为小于 1 时,负载较小。如果大于1,系统已经超出负荷。 -
第二行--进程信息
内容 说明 Tasks: 95 total 系统中的进程总数 1 running 正在运行的进程数 94 sleeping 睡眠的进程 0 stopped 正在停止的进程 0 zombie 僵尸进程。如果不是 0,需要手工检查僵尸进程 -
第三行--CPU信息
内容 说明 Cpu(s): 0.1%us 用户模式占用的 CPU 百分比 0.1%sy 系统模式占用的 CPU 百分比 0.0%ni 改变过优先级的用户进程占用的 CPU 百分比 99.7%id 空闲 CPU 的 CPU 百分比 0.1%wa 等待输入/输出的进程的占用 CPU 百分比 0.0%hi 硬中断请求服务占用的 CPU 百分比 0.1%si 软中断请求服务占用的 CPU 百分比 0.0%st st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比。 -
第四行--物理内存信息
内容 说明 Mem: 625344k total 物理内存的总量,单位 KB 571504k used 已经使用的物理内存数量 53840k free 空闲的物理内存数量,我们使用的是虚拟机,总共只分配了 628MB 内存,所以只有 53MB 的空闲内存 65800k buffers 65800k buffers -
第五行--交换分区(swap)信息
内容 说明 Swap: 524280k total 交换分区(虚拟内存)的总大小 0k used 已经使用的交互分区的大小 524280k free 空闲交换分区的大小 409280k cached 作为缓存的交互分区的大小
-
-
netstat
显示网络状态和端口信息
-
基本语法
# 查看该进程网络信息 netset -anp | grep 进程号 # 查看网络端口号占用情况 netset -nlp | grep 端口号
OPTION
选项 功能 -a
显示所有正在监听(listen)和未监听的套接字(socket) -n
拒绝显示别名,能显示数字的全部转化成数字 -l
仅列出在监听的服务状态 -p
表示显示哪个进程在调用
系统定时任务
crontab
系统管理
-
重启
crond
服务systemctl restart crond
crontab
定时任务设置
-
基本语法
# 编辑crontab定时任务 crontab -e # 查询crontab任务 crontab -l # 删除当前用户所有的crontab任务 crontab -r
-
进入crontab编辑界面。会打开vim编辑你的工作
项目 含义 范围 第一个“*” 一小时当中的第几分钟 0-59 第二个“*” 一天当中的第几小时 0-23 第三个“*” 一个月当中的第几天 1-31 第四个“*” 一年当中的第几月 1-12 第五个“*” 一周当中的星期几 0-7 0 和 7 都代表星期日
-
特殊符号
特殊符号 含义 *
代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。 ,
代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的 8 点 0 分,12 点 0 分,16 点 0 分都执行一次命令 -
代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨 5 点 0 分执行命令 */n*
代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔 10 分钟就执行一遍命令 -
特定时间执行命令
时间 含义 45 22 * * * 命令 每天22点45分执行命令 0 17 * * 1 命令 每周1的17点0分执行命令 0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令 40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令 */10 4 * * * 命令 每天的凌晨 4 点,每隔 10 分钟执行一次命令 0 0 1,15 * 1 命令 每月1号和15号,每周1的0点0分都会执行命令 星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱
-
软件包管理
RPM
-
概述
RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe,是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。
RPM包的名称格式
Apache-1.3.23-11.i386.rpm
-
“apache” 软件名称
-
“1.3.23-11”软件的版本号,主版本和此版本
-
“i386”是软件所运行的硬件平台,Intel 32位处理器的统称
-
“rpm”文件扩展名,代表RPM包
-
-
查询命令
# 查询所安装的所有 rpm 软件包 rpm -qa
由于软件包比较多,一般都会采取过滤。
rpm -qa | grep rpm软件包
-
卸载命令
# 卸载软件包 rpm -e RPM软件包 # 卸载软件时,不检查依赖。 rpm -e --nodeps 软件包
不检查依赖的话,那些使用该软件包的软件在此之后可能就不能正常工作了
-
安装命令
# 安装命令 rpm -ivh RPM包全名
OPTION
选项 功能 -i
install
,安装-v
--verbose
,显示详细信息-h
--hash
,进度条--nodeps
安装前不检查依赖
YUM
-
概述
YUM(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
-
常用命令
yum -y [参数]
参数说明
参数 功能 install
安装rpm软件包 update
更新rpm软件包 check-update
检查是否有可用的更新rpm软件包 remove
删除指定的rpm软件包 list
显示软件包信息 clean
清理yum过期的缓存 deplist
显示yum软件包的所有依赖关系 -
修改网络YUM源
默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络 YUM 源为国内镜像的网站,比如网易 163,aliyun 等
# 安装wget yum install wget # 备份repos文件 pwd /etc/yum.repos.d cp CentOS-Base.repo CentOS-Base.repo.backup # 下载阿里云的repos文件 wget http://mirrors.aliyun.com/repo/Centos-7.repo
克隆虚拟机
Shell编程
概述
-
Shell
命令行解释器,接受应用程度/用户命令后调用操作系统内核
-
Shell编程
Shell是一个功能强大的编程语言,易编写、易调试、灵活性强
基础内容
-
脚本格式
以
#!/bin/bash
开头-
创建Shell脚本,输出helloworld
touch helloworld.sh vim helloworld.sh
-
在helloworld.sh中输入
# !/bin/bash echo "helloworld"
-
-
脚本执行方式
-
bash/sh
+脚本路径的执行方式(相对路径/绝对路径)# sh+脚本相对路径 sh ./helloworld.sh # sh+脚本绝对路径 sh /home/user/shells/helloworld.sh # bash+脚本相对路径 bash ./helloworld.sh # bash+脚本绝对路径 bash /home/user/shells/helloworld.sh
不用赋予脚本+x 权限
本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行权限。
-
脚本路径的直接执行方式
-
赋予helloworld.sh脚本 +x 权限
chmod +x helloworld.sh
赋予具有可执行 +x 权限
在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则子 shell 关闭,回到父 shell 中。
-
执行脚本
# 相对路径 ./helloworld.sh # 绝对路径 /home/user/shells/helloworld.sh
本质是脚本需要自己执行,所以需要执行权限。
在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则子 shell 关闭,回到父 shell 中。
-
-
在脚本路径前加上
.
或source
. helloworld.sh source helloworld.sh
可以使脚本内容在当前 shell 里执行,而无需打开子shell!
开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell 中设置的当前变量,父 shell 是不可见的
-
变量
系统预定义变量
-
系统变量
-
查看
echo $HOME
-
显示
set
-
-
$HOME
-
$PWD
-
$SHELL
-
$USER
自定义变量
-
基本语法
-
定义变量
VarName=VarValue
=号前后不能有空格
-
撤销变量
unset VarName
-
声明静态变量
readonly VarName=VarValue
-
-
变量定义规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
- 等号两侧不能有空格
- 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
- 变量的值如果有空格,需要使用双引号或单引号括起来。
特殊变量
-
$n
-
基本语法
$n
n 为数字,
$0
代表该脚本名称,$1-$9
代表第一到第九个参数;十以上的参数需要用大括号包含,如${10}
。 -
实例
-
-
$#
-
基本语法
$#
获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。
-
实例
-
-
$*
和$@
-
基本语法
$*
代表命令行中所有的参数,
$*
把所有的参数看成一个整体$@
代表命令行中所有的参数,不过
$@
把每个参数区分对待 -
实例
-
-
$?
-
基本语法
$?
最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
-
实例
-
运算符
-
基本语法
$ ((运算式)) $ [运算式]
条件判断
-
基本语法
test condition [ condition ]
条件非空即为 true,[ atguigu ]返回 true,[ ] 返回 false。
-
判断条件
-
两个整数之间比较
-eq
--等于(equal)-ne
--等于(not equal)-lt
--小于(less than)-le
--小于等于(less equal)-gt
--大于(greater than)-ge
--大于等于(greater equal)如果是字符串之间的比较 ,用等号
=
判断相等;用!=
判断不等。 -
按照文件权限进行判断
-r
有读的权限(read)-w
有写的权限(write)-x
有执行的权限(execute) -
按照文件类型进行判断
-e
文件存在(existence)-f
文件存在且是一个常规文件(file)-d
文件存在且是一个目录(directory)
-
-
实例
流程判断
-
if判断
-
基本语法
-
单分支
if [ 条件判断式 ];then 程序 fi
if [ 条件判断式 ] then 程序 fi
-
多分支
if [ 条件判断式 ] then 程序 elif [ 条件判断式 ] then 程序 else 程序 fi
[ 条件判断式 ]
,中括号和条件判断式之间必须有空格if后要有空格
-
-
实例
-
-
case语句
-
基本语法
case $ VarName in "VarValue1") 如果变量的值等于值 1,则执行程序 1 ;; "VarValue2") 如果变量的值等于值 2,则执行程序 2 ;; …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac
case 行尾必须为单词
in
,每一个模式匹配必须以右括号)
结束。双分号
;;
表示命令序列结束,相当于 java 中的break
。最后的
*)
表示默认模式,相当于 java 中的default
。 -
实例
-
-
for循环
-
基本语法
for ((初始值;循环控制条件;变量变化)) do 程序 done
for VarName in VarValue1 VarValue2 VarValue3… do 程序 done
-
实例
-
-
while循环
-
基本语法
while [ 条件判断式 ] do 程序 done
-
实例
-
read读取控制台输入
-
基本语法
read [option] [parameter]
-
option
-p
--指定读取值时的提示符;-t
--指定读取值时等待的时间(秒),如果-t
不加表示一直等待; -
parameter
VarName
--指定读取值的变量名
-
-
实例
函数
系统函数
-
basename
-
基本语法
basename [string/pathname] [suffix]
basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来
basename 可以理解为取路径里的文件名称
- suffix为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。
-
实例
-
-
dirname
-
基本语法
dirname 文件绝对路径
dirname 从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)
dirname 可以理解为取文件路径的绝对路径名称
-
实例
-
自定义函数
-
基本语法
[ funciton ] funname[()] { Action; [return int;] }
必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一样先编译。
函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)
-
实例
正则表达式入门
-
常规匹配
一串不包含特殊字符的正则表达式匹配它自己
cat /etc/passwd | grep zimo
会匹配所有包含 zimo 的行
-
特殊字符
-
^
匹配一行的开头cat /etc/passwd | grep ^a
匹配出所有以 a 开头的行
-
$
匹配一行的结束cat /etc/passwd |grep t$
匹配出所有以 t 结尾的行
-
.
匹配一个任意字符cat /etc/passwd | grep r..t
匹配包含 rabt,rbbt,rxdt,root 等包含
r..t
的所有行 -
*
不单独使用,和上一个字符连用,匹配上一个字符 0 次或多次cat /etc/passwd | grep ro*t
会匹配 rt, rot, root, rooot, roooot 等所有行
-
[ ]
匹配某个范围内的一个字符cat /etc/passwd | grep r[a,b,c]*t
匹配 rt,rat, rbt, rabt, rbact,rabccbaaacbt 等等所有行
[6,8]------匹配 6 或者 8
[0-9]------匹配一个 0-9 的数字
[0-9]*------匹配任意长度的数字字符串
[a-z]------匹配一个 a-z 之间的字符
[a-z]* ------匹配任意长度的字母字符串
[a-c, e-f]-匹配 a-c 或者 e-f 之间的任意字符
-
\
表示转义cat /etc/passwd | grep "a\$b"
匹配所有包含 a$b 的行。注意需要使用单引号将表达式引起来
不会单独使用。由于所有特殊字符都有其特定匹配模式,当我们想匹配 某一特殊字符本身时(例如,我想找出所有包含 '$' 的行),就会碰到困难。此时我们就要 将转义字符和特殊字符连用,来表示特殊字符本身。
-
文本处理工具
-
cut
-
概述
cut
是在文件中负责剪切数据用的cut
命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出 -
基本用法
cut [option] filename
默认分隔符是制表符
-
option
-f
列号,提取第几列-d
分隔符,按照指定分隔符分割列,默认是制表符“\t”-c
按字符进行切割后加 n 表示取第几列 比如-c 1
-
-
实例
-
-
awk
-
概述
把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理
-
基本用法
awk [option] '/pattern1/{action1} /pattern2/{action2}…' filename
-
pattern:表示 awk 在数据中查找的内容,就是匹配模式
-
action:在找到匹配内容时所执行的一系列命令
-
option
-F
指定输入文件分隔符-v
赋值一个用户定义变量
-
-
awk
内置变量变量 说明 FILENAME 文件名 NR 已读的记录数(行号) NF 浏览记录的域的个数(切割后列的个数 -
实例
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端