【Linux】学习笔记:(一)基本命令大全(常用)
- 一、 Linux系统操作命令
- 1、 shutdown命令
- 2、 reboot、halt命令
- 3、 history命令
- 4、 命令排列:; 和 &&
- 5、 命令替换
- 6、 重定向
- 7、 cal:显示日历
- 8、 uname:显示计算机系统信息
- 9、 hostname:显示或修改计算机主机名
- 10、 free:查看内存信息
- 11、 du(英文全拼:disk usage):显示指定的目录或文件所占用的磁盘空间
- 12、 df(英文全拼:disk free):显示目前在 Linux 系统上的文件系统磁盘使用情况统计
- 13、 uptime:显示系统运行时间,用户在线数,服务器在过去的1分钟、5分钟、15分钟的系统平均负载值
- 14、 who: 显示当前登录用户列表、登录时间、登录IP
- 15、 w:相当于uptime和who两个命令的结合,区别是w命令可以显示每个用户正在执行的进程信息
- 16、 top:实时显示 process 的动态,包括cpu和内存使用率等数据
- 二、 vi\vim编辑快捷键
常用
- 三、目录和文件管理命令
常用
- 四、 文本内容操作命令
- 五、 网络相关命令和操作
ps:为了避免选项杂乱繁多,以下文档中表格内的命令选项只展示常用的,不常用的命令选项未展示在其中,有需要请百度命令详细,望周知!
一、 Linux系统操作命令
1、 shutdown命令
立即关闭
常用
- shutdown -h now
定时30min后关闭
- shutdown -h 30
立即重启系统,并发出警告信息
- shutdown -r now "system will be reboot now !"
定时在1:30分重启系统
- shutdown -r 01:30
选项 | 选项含义 |
---|---|
-k | 不执行shutdown,只是发出警告信息给所有用户 |
-r | 重新启动系统 |
-h | 关闭系统 |
-c | 取消运行的shutdown |
2、 reboot、halt命令
- 立即重启
常用
- reboot
- 立即关机
常用
(调用 shutdwon -h 命令执行关机任务)
- halt
3、 history命令
显示当前用户所有执行的命令记录
- history
显示10条记录
- history 10
清除命令历史记录
- history -c
4、 命令排列:; 和 &&
- 使用排列命令 " ; "(两个命令都将会被执行)
- ls /boot ; pwd
- (不管第一条的ls命令是否正确,pwd命令都会执行)
- 使用排列命令 “ && ”(第一个命令出错,则停止执行第二条命令)
- ls -a /nodir && pwd
- (nodir文件不存在,ls命令报错,且pwd命令也不会执行)
5、 命令替换
[root@xxx ~]# pidof less
7552 //less进程号为7552
[root@xxx ~]# kill -9 7552 // 杀死less进程
[root@xxx ~]# kill -9 $(pidof less) // 使用命令替换的方法:
6、 重定向
- 输出重定向
- 将目录内容
/boot
保存到/root/mm
文件中
- ls /boot > /root/mm
- 使用
echo
命令和输出重定向/root/abc
文件并写入数据Hello(若文件不存在则创建文件,若文件已存在则写入的数据会覆盖源文件内容)
- echo Hello > /root/abc
- 追加重定向,将World追加到
/root/abc
文件内容的后边(同上原理,但不会覆盖源文件内容,而是将数据追加在原内容后边)
- echo World >> /root/abc
- 输入重定向
- cat < /boot/mm
- 错误重定向
- 将某一条命令执行的出错信息输出到指定文件中
- cat /boot/kk 2> /root/abc (
/boot/kk
文件或目录不存在)- cat /boot/kk 2>> /root/abc ( 错误追加重定向)
- 同时实现输出和错误重定向
- ls /boot/123 &> /boot/kk (将
/boot/123
目录内容输出到指定文件中,若目录不存在则输出错误信息)
7、 cal:显示日历
- 显示本月日历
- cal
- 显示公元2021年日历
- cal 2021
- 显示今年9月份的日历
- cal 9 2020
8、 uname:显示计算机系统信息
[wuyiz@centos83 root]$ uname
Linux
[wuyiz@centos83 root]$ uname -r # 输出内核发行号
4.18.0-240.el8.x86_64
[wuyiz@centos83 root]$ uname -m # 输出主机的硬件架构名称
x86_64
[wuyiz@centos83 root]$ uname -a # 依次输出相关内容,具体使用 uname --hlep 命令查看-a介绍
Linux centos83.main 4.18.0-240.el8.x86_64 #1 SMP Fri Sep 25 19:48:47 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
9、 hostname:显示或修改计算机主机名
- 查看主机名
- hostname
- 修改主机名,立即生效,建议重启(永久修改,持久化到对应文件
etc/hostname
中)
- systemctl set-hostname xxx
- 修改主机名(临时修改,重启失效)
- hostname xxx
10、 free:查看内存信息
- free -s 3
- 持续观察内存使用状况,此处间隔时间为3秒
- free -h
- 返回人类可读的内存单位
- free -t
- 显示内存总和列
[root@localdomain_5 ~]# free -h
total used free shared buff/cache available
Mem: 31G 12G 12G 38M 6.2G 18G # 内存的使用情况
Swap: 15G 256M 15G # 交换空间的使用情况,即虚拟内存
[root@localdomain_5 ~]# free -ht
total used free shared buff/cache available
Mem: 15G 10G 560M 1.2G 4.3G 3.3G
Swap: 0B 0B 0B
Total: 15G 10G 560M
标题 | 标题含义 |
---|---|
total | 内存总数(total=used+free+buff/cache) |
used | 已经使用内存数 |
free | 真正尚未被使用的内存数 |
shared | 被共享使用的物理内存大小 |
buff/cache | 被系统缓存实际使用掉的内存 |
available | 可以给新应用程序分配的内存总数 |
free与available的区别
free 是真正尚未被使用的物理内存数量。
至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。
Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer
和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache
中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache
。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。
11、 du(英文全拼:disk usage):显示指定的目录或文件所占用的磁盘空间
- 目录以及递归下的所有子目录的磁盘占用量(会递归计算每一层级的目录大小)
- du -h /home
- 只展示当前目录下的文件磁盘占用量
- du -h -s /home/* (展示的目录会按照字母顺序排列)
- du -h -d 1 /home 或 du -h --max-depth=1 /home (可以指定递归层级)
- du -sh /home/* | sort -hr (展示后根据大小倒序排序)
选项 | 选项含义 |
---|---|
-a 或 -all | 显示目录中文件的大小 |
-s | 只计算当前目录或指定目录的占用量,不显示其他子目录 |
-d或--max-depth= | 只计算当前目录或指定目录的占用量,不显示其他子目录 |
-h | 以KB、MB、GB为单位显示,提高可读性(使用人类可读的格式) |
-l | 显示选项中所指定符号连接的源文件大小,如果是硬链接,就多次计算其尺寸 |
-x | 查看指定目录的大小,并只统计该目录下的文件和子目录,不统计其他文件系统的大小 |
12、 df(英文全拼:disk free):显示目前在 Linux 系统上的文件系统磁盘使用情况统计
[root@localdomain_5 ~]# df -h --total
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 14G 37G 28% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 59M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
/dev/mapper/centos-home 213G 4.5G 208G 3% /home
tmpfs 3.2G 0 3.2G 0% /run/user/0
total 329G 19G 311G 6% - # --total:包含一个额外的行total,显示总的每一列
13、 uptime:显示系统运行时间,用户在线数,服务器在过去的1分钟、5分钟、15分钟的系统平均负载值
[root@localdomain_5 ~]# uptime
10:48:52 up 91 days, 19:57, 3 users, load average: 3.34, 3.47, 3.50
[root@localdomain_5 ~]# uptime -p # 美化运行时间的输出格式
up 13 weeks, 19 hours, 57 minutes
[root@localdomain_5 ~]# uptime -s # 显示系统启动时间
2022-08-30 14:51:40
14、 who: 显示当前登录用户列表、登录时间、登录IP
[root@localdomain_5 ~]# who -Hu # H表示显示表头,u表示显示用户信息,譬如空闲时间、用户进程号
名称 线路 时间 空闲 进程号 备注
root pts/1 2022-11-30 09:29 . 32029 (218.xxx.xxx.182)
root pts/2 2022-11-30 09:29 00:39 32054 (218.xxx.xxx.182)
root pts/3 2022-11-30 10:04 00:34 4520 (218.xxx.xxx.182)
15、 w:相当于uptime和who两个命令的结合,区别是w命令可以显示每个用户正在执行的进程信息
[root@localdomain_5 ~]# w
10:43:05 up 91 days, 19:51, 3 users, load average: 3.86, 3.65, 3.56 # 这一行相当于uptime命令
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT # 这里展示已登录用户的相关信息
root pts/1 218.xxx.xxx.182 09:29 1.00s 0.14s 0.14s -bash
root pts/2 218.xxx.xxx.182 09:29 42:09 0.03s 0.03s mysql -uroot -p
root pts/3 218.xxx.xxx.182 10:04 37:29 0.02s 0.02s top # 可以看到每个用户正在执行的进程信息
16、 top:实时显示 process 的动态,包括cpu和内存使用率等数据
top(table of processes)是一个任务管理器
程序,它可运行于许多类Unix
操作系统上,它用于显示有关CPU和内存利用率的信息。
- top 参数格式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
- d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按下s键
- q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
- S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
- s : 安全模式,将交谈式指令取消, 避免潜在的危机
- i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
- n : 更新的次数,完成后将会退出 top
- b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
交互式命令(按下键位直接触发) | 命令描述(在top界面使用) |
---|---|
c | 进程的完整命令参数展示切换 |
z | 进入高亮模式,将显示红色终端字体 |
1 | 顶部的cpu展示数量切换 |
E | 顶部的内存显示单位切换 |
e | 进程列表的内存单位切换 |
t | 顶部的cpu显示方式切换 |
m | 顶部的内存显示方式切换 |
M | 进程列表按照内存使用率从高到低展示 |
P | 进程列表按照cpu使用率从高到低展示 |
N | 进程列表按照pid大小顺序排列 |
n+数字 | 列表展示的数量 |
s+数字 | 设置刷新频率,默认3s刷新一次 |
R、H、V、J | 排序、显示线程、树状图、列表内容自适应 |
q | 退出 |
界面标题(顶部) | 标题参数 | 作用描述 |
---|---|---|
top | 10:08:18 | 当前时间 |
up 11 days, 23:54 | 系统启动时长 | |
load average: 1.93, 2.02, 2.06 | 过去1min、5min、15min的系统负载 | |
task | 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie | 进程总数和正在运行的、休眠中的、停止的进程数和僵尸进程数。这实际上是上述 S(状态)列的总和 |
%Cpu(s) | us | 表示**用户空间**程序的cpu使用率(没有通过nice调度) |
sy | 表示**系统空间**的cpu使用率,主要是**内核**程序 | |
ni | 表示用户空间且通过nice调度过的程序的cpu使用率 | |
id | CPU 的**空闲时间**,这个值比较高时说明系统比较空闲 | |
wa | **等待时间**,或者消耗在等待 I/O 完成的时间 | |
hi | 消耗在硬件中断的时间,硬中断(Hardware IRQ)占用CPU的百分比 | |
si | 消耗在软件中断的时间,软中断(Software Interrupts)占用CPU的百分比 | |
st | 虚拟机管理程序从该虚拟机窃取的时间” | |
Mem/Swap | total | 总内存容量 |
free | 空闲内存 | |
used | 已用内存 | |
buff/cache (Mem) | 内存的缓冲值 | |
avail Mem (swap) | 交换空间的缓存值 |
进程列表标题 | 功能描述 |
---|---|
PID | 进程 ID,一个用来定位进程的唯一标识符 |
USER | 运行进程的用户 |
PR | 任务的优先级 |
NI | Nice 值,优先级的一个更好的表现形式 |
VIRT | 虚拟内存的大小 |
RES | 常驻内存大小(物理内存和虚拟内存的一部分) |
SHR | 共享内存大小(共享内存和虚拟内存的一部分) |
S | 进程状态,一般 I 代表空闲,R 代表运行,S 代表休眠,Z 代表僵尸进程,T 或 t 代表停止(还有其它更少见的选项) |
%CPU | 自从上次屏幕更新后的 CPU 使用率 |
%MEM | 自从上次屏幕更新后的 RES 常驻内存使用率 |
TIME+ | 自从程序启动后总的 CPU 使用时间 |
COMMAND | 启动命令 |
二、 vi\vim编辑快捷键 常用
1、 插入模式(在界面直接按下命令)
命令 | 功能 |
---|---|
i | 从光标当前所在位置之前开始插入 |
o | 在光标所在行的下方新开一行插入 |
O | 在光标所在行的上方新开一行插入 |
s | 删除光标位置的一个字符,然后进入插入模式 |
S | 删除光标所在行,然后进入插入模式 |
2、 命令模式操作(请在非插入模式中使用,即按下ESC键返回命令模式)
类型 | 命令 | 功能 |
---|---|---|
快速跳转 | gg | 跳转到开始位置 |
shift + g | 跳转末尾位置 | |
行数 + gg | 跳转到指定行,例如,跳转到123行:123gg | |
删除 | x | 删除光标所在位置的字符 |
dd | 删除光标所在行 | |
复制和粘贴 | yy | 复制光标所在行 |
nyy | 复制从光标所在行开始的n行,n代表数字 | |
p | 将复制的内容粘贴到光标所在位置 | |
撤销和重复 | u | 撤销上一步的操作。按多次u可以执行多次撤销 |
U 或 ctrl + r | 恢复之前的所有操作 | |
. | 再次执行之前的某一个操作(不包括撤回和恢复操作) | |
查找字符 | /关键字 | 先按 / 键,在输入想要查找的字符,如果查找到的内容不是想要的,按n键显示下一个,N键显示上一个 |
?关键字 | 先按 ? 键,在输入想要查找的字符,如果查找到的内容不是想要的,按n键显示下一个,N键显示上一个 | |
保存和退出 | ZZ | 保存退出 |
ZQ | 不保存退出 |
3、 末行模式(在vi/vim编辑界面按esc进入)
命令 | 功能 |
---|---|
:noh | 取消查找字符操作的关键字高亮 |
:w | 保存文件 |
:wq | 保存文件并退出vi编辑器 |
:wq! | 保存文件并强制退出vi编辑器 |
:x | 保存文件并强制退出vi编辑器,其功能和:wq!一样 |
:q | 退出vi编辑器 |
:q! | 如果无法离开vi,强制退出vi编辑器 |
三、目录和文件管理命令 常用
1、 pwd:显示当前工作目录路径
[root@localdomain_5 .canceal]# pwd
/home/.canceal
2、 cd:更改路径
切换当前路径
- cd /etc
切换到当前目录的父级目录
- cd ..
切换到当前用户的主目录
- cd ~
3、 ls:列出目录和文件信息
显示指定目录下所有子目录与文件的名称
- ls /root
显示指定目录下所有子目录与文件的详细信息,包括权限、归属、链接数、大小等信息
- ls -l /root 【可以简写为 ll /root】
显示指定目录下所有子目录与文件,包括隐藏文件
- ll -a /root
4、 touch:创建空文件、更改时间
创建空文件
- touch file1 file2
批量创建文件(如创建10个文件)
- touch test{01..10}.sh
修改file1时间记录为9月17日19点30分
- 时间格式 MMDDHHmm,若要加上年份则为YYYYMMDDHHmm
[root@host_1 ~]# touch file1 file2
[root@host_1 ~]# ll file*
-rw-r--r--. 1 root root 0 12月 28 20:55 file1
-rw-r--r--. 1 root root 0 12月 28 20:55 file2
[root@host_1 ~]# touch -c -t 09171930 file1
[root@host_1 ~]# ll file*
-rw-r--r--. 1 root root 0 9月 17 19:30 file1
-rw-r--r--. 1 root root 0 12月 28 20:55 file2
选项 | 选项含义 |
---|---|
-c | 假如目标文件不存在,则不会创建新的文件 |
-t | 使用MMDDhhmm[.ss]日期格式修改文件时间 |
5、 mkdir:创建目录
- 创建目录
- mkdir newdir
- 创建目录,并设置其权限为777
- mkdir -m 777 newdir2
- 新建多层路径文件
- mkdir -p dir_1/dir_2/dir_3
选项 | 选项含义 |
---|---|
-m | 对新创建的目录设置权限,不使用此项时,默认创建的目录权限为755 |
-v | 每次创建新目录都显示信息 |
-p | 一次创建多层目录。既创建路径中包含不存在的目录时,系统自动创建尚不存在的目录 |
6、 rmdir:删除空目录
删除一个为空的目录
- rmdir newdir
删除当前目录的同时也删除为空的父目录
- rmdir -p /root/newdir/newdir_2
选项 | 选项含义 |
---|---|
-p | 递归删除目录,当子目录被删除后如果父目录为空时,也一同删除 |
-v | 输出处理的目录详情 |
7、 cp:复制文件和目录
将文件复制到/root目录下
- cp /etc/abc.cfg /root
将文件复制到/root目录下,并改名
- cp /etc/abc.cfg /root/dfge
- 将/boot目录以及该目录下所有文件和子目录复制到/root中
- cp -r /boot /boot
选项 | 选项含义 |
---|---|
-a | 在复制目录时保留链接、文件属性,并递归地复制目录,等同于-dpr |
-d | 复制时保留链接 |
-f | 在覆盖文件之前不会给出提示要求用户确认 |
-i | 与-f相反,在覆盖文件之前给出提示要求用户确认 |
-p | 除复制源文件地内容外,还把其修改时间和访问权限也复制到新文件中 |
-l | 不做复制,只是链接文件 |
-r | 如果源文件是一个目录,则递归复制该目录下所有的子目录和文件,目标必须为一个目录名 |
8、 mv:文件和目录改名、移动文件和目录路径
移动目录下所有后缀名为.png的文件到目标目录路径下
- mv -f /root/pic/*.png /usr/local/share/pic
修改文件名
- mv abc.png defg.png
修改目录名
- mv /root/pic /root/mypic
9、 rm:删除文件或目录
删除文件
- rm file4
连同./ab/a.txt文件和./ab目录一起删除
- rm -rf /root/ab
选项 | 选项含义 |
---|---|
-r | 递归删除目录及其内容 |
-f | 强制删除。忽略不存在的文件,不给出提示信息 |
10、 rename:用字符串替换的方式批量改变文件名
- rename [原字符串] [目标字符串] [文件]
- 原字符串:文件名中要被修改的字符
- 目标字符串:将文件名中含有的原字符替换成目标字符串
- 文件:指定要改变文件名的文件列表
常用参数 | 描述 |
---|---|
-v | 显示详细操作信息,打印出每个重命名操作的结果 |
-n | 模拟运行,显示会被更改的文件 (有些版本不支持此参数,请使用rename -h查看具体支持参数) |
[root@k8s-master test]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 24 12:43 file1.sh
-rw-r--r-- 1 root root 0 10月 24 12:43 file2.txt
-rw-r--r-- 1 root root 0 10月 24 12:43 file3.txt
-rw-r--r-- 1 root root 0 10月 24 12:43 file4.txt
[root@k8s-master test]# rename -v txt xml file*
`file2.txt' -> `file2.xml'
`file3.txt' -> `file3.xml'
`file4.txt' -> `file4.xml'
[root@k8s-master test]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 24 12:43 file1.sh
-rw-r--r-- 1 root root 0 10月 24 12:43 file2.xml
-rw-r--r-- 1 root root 0 10月 24 12:43 file3.xml
-rw-r--r-- 1 root root 0 10月 24 12:43 file4.xml
11、 tar、gzip:解压缩
常见的三种包格式区别:
- tar:打包归档tar命令,以.tar结尾(可以对文件或目录进行打包归档,不属于压缩功能)
- gz:压缩文件gzip命令,以.gz结尾(无法对目录执行压缩操作)
- tar.gz:日常使用中,可以先进行tar打包再进行gzip压缩,此时的文件以.tar.gz结尾
压缩格式 解压工具或命令 *.tar 用tar -xvf 解压 *.gz 用 gzip -d或者gunzip 解压 *.tar.gz 用 tar -zxzf 解压 *.bz2 用 bzip2 -d或者用bunzip2 解压 *.tar.bz2 用tar -jxvf 解压(需要安装bzip2插件) *.Z 用 uncompress 解压 *.tar.Z 用tar -xZf 解压 *.rar 用 unrar e解压 *.zip 用 unzip 解压
*.gz:用于文件压缩,可批量压缩目录内文件,但不能压缩整个目录,压缩结束后原文件默认不保留
压缩 gzip xxx
- 压缩后保留源文件 : gzip -c xxx > xxx.gz
解压 gzip -d xxx.gz
- 解压后保留源文件 : gzip -d -c xxx.gz > xxx
参数 含义 -c 保留源文件的压缩,需要配合 > 符号 -d 对压缩文件进行解压缩 -r 递归压缩指定目录下以及子目录下的所有文件
注意:此选项只会将目录及其子目录中的文件进行压缩,并不会对目录进行压缩,批量压缩时可使用此命令-v 对于每个压缩和解压缩的文件,显示相应的文件名和压缩比 -number number表示压缩等级,number为1 表示压缩等级最低,压缩比最差;number为9 压缩比最高。默认压缩比是 number为6
*.tar:针对文档打包归档的格式,没有压缩的效果
打包 tar -cvf xxx.tar xxx
解打包 tar -xvf xxx.tar -C /dir/xxx/
*.tar.gz:打包压缩、解压缩拆包一体化
打包压缩 tar -zcvf xxx.tar.gz xxx
解压缩拆包 tar -zxvf xxx.tar.gz
参数 含义 -v 显示打包过程 -f 切记,这个参数是最后一个参数,后面只能接接包名(必须要写),作用是指明要打包的目录或源文件的名称 -c 打包操作,可将多个文件或目录进行打包 -x 解打包操作 -C(大写) 解打包操作,指定解包存放的目录 -z 打包压缩和解压缩拆包 “.tar.gz” 格式选项
四、 文本内容操作命令
1、 cat:显示文本文件 常用
显示文件内容
- cat /etc/service
也可以使用cat+重定向创建文件并写入内容
- cat > abc.txt << EOF
- EOF是自己约定的结束标志,也可以是任何其他的值
将文件加上编号后写入另一个文件
- cat -n file1 > file2
2、 more:分页显示文本
- 分页显示文件内容
- more /home/123.txt
- 从第30行开始显示内容,每页显示50行
- more +30 -50 /home/123.txt
界面常用操作 | |
---|---|
空格键 | 向下滚动一屏 |
b | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
v | 调用vi编辑器 |
回车键 | 向下显示一行 n+enter可以设置向下显示的行数(注意:会影响b、空格在滚动一屏时的行数) |
q | 退出 |
3、 less:回卷显示文本 (查看大文件常使用less) 常用
- 分页显示内容
- less /etc/service
- 显示行号,同时显示剩余内容百分比
- less -Nm /etc/service
- ps查看进程信息并通过less分页显示
- ps -ef | less
- 查看命令历史使用记录并通过less分页显示
- history | less
- 浏览多个文件,可以输入
:n
或:p
切换文件,并且会记录每个文件的浏览位置
- less -Nm 1.txt 2.txt
选项 | 选项含义 |
---|---|
-N | 显示每行的行号 |
-m | 显示类似more命令的百分比 |
-f | 强迫打开特殊文件,比如目录、二进制文件等 |
界面常用操作 | |
---|---|
空格键 | 向下滚动一屏 |
b | 向上滚动一屏 |
d | 向下滚动半屏 |
u | 向上滚动半屏 |
v | 调用vi编辑器 |
回车键 | 向下显示一行 n+enter可以设置本次向下显示的行数 |
g | 移动到第一行 |
G | 移动到最后一行 |
q | 退出 |
less和more的操作以及区别
- less和more都是通过【空格键】翻页,按【b】返回上一页,不同的是,less由于是回卷显示,也可以通过上下键进行控制
- less不必读取整个文件,所以加载大文本文件时速度比more更快
- less退出阅读后shell不会留下刚显示过的文本内容,而more退出后会在shell上留下刚现实的内容
4、 sort:对文件中的数据进行排序
- 排序显示的内容
- sort file1.txt
- 逆序显示的内容
- sort -r file1.txt
5、 tail:命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。 常用
- 默认显示最新10行数据
- tail out.log
- 显示500行,并且追踪新产生的日志内容输出到显示屏
- tail -f -n 500 out.lo
6、 egrep:强大的文本搜索命令
egrep
是 Linux 系统中的一个强大的文本搜索工具,用于在文件中查找匹配指定模式的行。它支持使用正则表达式进行高级模式匹配,提供了灵活和强大的文本搜索功能
选项 | 描述 |
---|---|
-i | 忽略大小写进行匹配 |
-v | 反向匹配,输出不匹配模式的行 |
-n | 显示匹配行的行号 |
-r | 递归搜索,对目录下的所有文件进行匹配 |
-w | 匹配整词,仅匹配单词的完整匹配 |
-c | 统计匹配到的行数 |
-A | 显示匹配行及其后面指定行数的内容 |
-B | 显示匹配行及其前面指定行数的内容 |
-C | 显示匹配行及其前后指定行数的内容 |
- 在文件
example.txt
中查找包含字符串 "Hello" 的行
- egrep 'Hello' example.txt
- 忽略大小写进行匹配行
- egrep -i 'hello' example.txt
- 常见的查看Linux系统oom日志的方式
- egrep -i "out of memory" /var/log/messages
- egrep -i "killed process" /var/log/messages
五、 网络相关命令和操作
1、查看系统相关配置
centos版本
- cat /etc/redhat-release
查看host配置
- cat /etc/hosts
修改hostname,Inet4Address.getLocalHost().getHostAddress()方法获取对外ip地址
hostnamectl set-hostname xxx 设置hostname(需要重启系统)
reboot
如何查看自己使用的是哪一个shell
- echo $SHELL
查看系统安装了哪些shell
- cat /etc/shells
切换bash:
- chsh -s /bin/bash
2、设置网络
ip addr(查看绑定的网卡)
cd /etc/sysconfig/network-scripts
vi ifcfg-enp6s0f0
systemctl restart network
ifconfig (yum install -y net-tools)
nmcli (查看启动的网卡信息,NetworkManagement包的)
3、设置dns(yum无法访问镜像源的时候)
cat /etc/resolv.conf (查看dns信息)
在网卡里添加 DNS1=114.114.114.114
systemctl restart network (重启网络即可,不要在那个查看dns的文件里修改,不然重启后会失效)
4、查询端口占用情况的
lsof -i:端口号
或者netstat -lntup|grep 端口号
获取到占用端口的进程PID
ps -f -p 进程PID
查看进程的详情
5、 netstat: 显示当前登录用户列表、登录时间、登录IP
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
此命令需要先安装net-tools软件包方可以使用:yum install net-tools
- netstat -lntup 列出监听的sockets
- netstat -antup 列出包括监听的所有sockets
[root@localhost web]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 66958/nginx: worker
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 14886/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 15110/master
tcp 0 0 :::22 :::* LISTEN 14886/sshd
tcp 0 0 ::1:25 :::* LISTEN 15110/master
option | info |
---|---|
-a | (all)显示所有选项,默认不显示LISTEN相关 |
-t | (tcp)仅显示tcp相关选项 |
-u | (udp)仅显示udp相关选项 |
-n | 直接使用IP地址,而不通过域名服务器(直接显示443端口号,而非https) |
-l | 显示监控中的服务器的Socket |
-p | 显示建立相关链接的程序名 |
-r | 显示路由信息,路由表 |
-e | 显示网络其他相关信息,例如uid等 |
-s | 显示网络工作信息统计表,按各个协议进行统计 |
-c | 持续列出网络状态(每隔一个固定时间,刷新命令的数据) |
网络链接状态 | 描述 |
---|---|
CLOSED | 没有使用这个套接字[netstat 无法显示closed状态] |
LISTEN | 套接字正在监听连接[调用listen后] |
SYN_SENT | 套接字正在试图主动建立连接[发送SYN后还没有收到ACK] |
SYN_RECEIVED | 正在处于连接的初始同步状态[收到对方的SYN,但还没收到自己发过去的SYN的ACK] |
ESTABLISHED | 连接已建立 |
CLOSE_WAIT | 远程套接字已经关闭:正在等待关闭这个套接字[被动关闭的一方收到FIN] |
FIN_WAIT_1 | 套接字已关闭,正在关闭连接[发送FIN,没有收到ACK也没有收到FIN] |
CLOSING | 套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认[在FIN_WAIT_1状态下收到被动方的FIN] |
LAST_ACK | 远程套接字已关闭,正在等待本地套接字的关闭确认[被动方在CLOSE_WAIT状态下发送FIN] |
FIN_WAIT_2 | 套接字已关闭,正在等待远程套接字关闭[在FIN_WAIT_1状态下收到发过去FIN对应的ACK] |
TIME_WAIT | 这个套接字已经关闭,正在等待远程套接字的关闭传送[FIN、ACK、FIN、ACK都完毕,这是主动方的最后一个状态,在过了2MSL时间后变为CLOSED状态] |
6、 lsof:常用于查找进程打开了哪些文件以及与打开文件相关联的内容
lsof
( list opened files )负责列出系统中已经打开的文件,包括普通文件,目录,块特殊文件,字符特殊文件,正在执行的文本引用,库,流或网络文件(例如:网络套接字,NFS文件或UNIX域套接字)
[root@centos ~]# lsof -n -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 17394 nginx 6u IPv4 712050668 0t0 TCP *:http (LISTEN)
nginx 17395 nginx 6u IPv4 712050668 0t0 TCP *:http (LISTEN)
nginx 17396 nginx 6u IPv4 712050668 0t0 TCP *:http (LISTEN)
nginx 17397 nginx 6u IPv4 712050668 0t0 TCP *:http (LISTEN)
nginx 17398 nginx 6u IPv4 712050668 0t0 TCP *:http (LISTEN)