第2章 新手必须掌握的Linux命令
- 2.2 执行命令的必备知识(Ctrl+C/D/L)
- 2.3 常用系统工作命令( echo | date | timedatectl | reboot | poweroff | wget | ps | pstree | top | nice | pidof | kill | killall )
- 2.4 系统状态检测命令( ifconfig | uname | uptime | free | who | last | ping | tracepath | netstat | history | sosreport )
- 2.5 查找定位文件命令( pwd | cd | ls | tree | find | locate | whereis | which )
- 2.6 文本文件编辑命令( cat | more | head | tail | tr | wc | stat | grep | cut | diff | uniq | sort )
- 2.7 文件目录管理命令( touch | mkdir | cp | mv | rm | dd | file | tar )
- 复习题
2.2 执行命令的必备知识(Ctrl+C/D/L)
Ctrl+C - 终止当前进程的运行
Ctrl+D - 键盘输入结束
Ctrl+L - 清空当前终端中已有的内容
2.3 常用系统工作命令( echo | date | timedatectl | reboot | poweroff | wget | ps | pstree | top | nice | pidof | kill | killall )
- echo命令,用于在终端设备上输出字符串或变量提取后的值,语法格式为
echo [字符串] [$变量]
- 把指定字符串"Linuxprobe.com"输出到终端屏幕
[root@linuxprobe~]# echo Linuxprobe.com
- 提取出变量SHELL的值,并将其输出到屏幕上
[root@linuxprobe~]# echo $SHELL
- date命令,用于显式或设置系统的时间与日期,语法格式为
data [+指定的格式]
参数 | 作用 |
---|---|
%S | 秒(00~59) |
%M | 分钟(00~59) |
%H | 小时(00~23) |
%I | 小时(00~12) |
%m | 月份(1~12) |
%p | 显示出AM或PM |
%a | 缩写的工作日名称(Sun) |
%A | 完整的工作日名称(Sunday) |
%b | 缩写的月份名称(Jan) |
%B | 完整的月份名称(January) |
%q | 季度(1~4) |
%y | 简写年份(20) |
%Y | 完整年份(2020) |
%d | 本月中的第几天 |
%j | 今年中的第几天 |
%n | 换行符(相当于按下回车键) |
%t | 跳格(相当于按下Tab键) |
- 按照默认格式查看当前系统时间
[root@linuxprobe~]# date
- 按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间
[root@linuxprobe~]# date "+%Y-%m-%d %H:%M:%S"
- 将系统当前时间设置为2020年11月1日8点30分
[root@linuxprobe~]# date -s "20201101 8:30:00"
- 查看今天是当年中的第几天
[root@linuxprobe~]# date "+%j"
- timedatectl命令,用于设置系统的时间,语法格式为
timedatectl [参数]
参数 | 作用 |
---|---|
status | 显式状态信息 |
list-timezones | 列出已知时区 |
set-time | 设置系统时间 |
set-timezone | 设置生效时区 |
- 查看系统时间与时区
[root@linuxprobe~]# timedatectl status
- 手动设置上海时区
timedatectl set-timezone Asia/Shanghai
- 手动修改系统日期
[root@linuxprobe~]# timedatectl set-time 2024-04-23
-修改时间
[root@linuxprobe~]# timedatectl set-time 21:53
[root@linuxprobe~]# date
-
reboot命令,用于重启系统
-
poweroff命令,用于关闭系统
-
wget命令,用于在终端命令行中下载网络文件,语法格式为
wget [参数] 网址
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
[root@linuxprobe~]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
- 使用wget命令递归下载网站内的所有页面数据以及文件
[root@linuxprobe~]# wget -rp https://www.linuxprobe.com
- ps命令,用于查看系统中的进程状态,语法格式为
ps [参数]
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
5种常见的进程状态:
- R(运行):进程正在运行或在运行队列中等待
- S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态
- D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断
- Z(僵死):进程已经终止,但进程描述符依然存在吗,直到父进程调用wait4()系统函数后将进程释放
- T(停止):进程收到停止信号后停止运行
-
pstree命令,用于以树状图的形式展示进程之间的关系
-
top命令,用于动态地监视进程活动及系统负载等信息
-
nice命令,用于调整进程的优先级,语法格式为
nice 优先级数字 服务名称
- 将bash服务的优先级调整到最高
[root@linuxprobe~]# nice -n -20 bash
- pidof命令,用于查询某个指定服务进程的PID号码值,语法格式为
pidof [参数] 服务名称
- 查询本机上sshd服务程序的PID
[root@linuxprobe~]# pidof sshd
- kill命令,用于终止某个指定PID值得服务进程,语法格式为
kill [参数] 进程的PID
- 以最高级别地强制杀死PID为2156的进程
[root@linuxprobe~]# kill -9 2156
- killall命令,用于终止某个指定名称的服务所对应的全部进程,语法格式为
killall [参数] 服务名称
2.4 系统状态检测命令( ifconfig | uname | uptime | free | who | last | ping | tracepath | netstat | history | sosreport )
-
ifconfig命令,用于获取网卡配置与网络状态等信息,语法格式为
ifconfig [参数] [网络设备]
-
uname命令,用于查看系统内核版本与系统架构等信息,语法格式为
uname [-a]
-
uptime命令,用于查看系统的负载信息
-
free命令,用于显示当前系统中内存的使用量信息,语法格式为
free [-h]
-
who命令,用于查看当前登入主机的用户终端信息
-
last命令,用于调取主记的被访记录
-
ping命令,用于测试主机之间的网络连通性,语法格式为
ping [参数] 主机地址
参数 | 作用 |
---|---|
-c | 总共发送次数 |
-l | 指定网卡名称 |
-I | 每次间隔时间(秒) |
-W | 最长等待时间(秒) |
- 测试一台IP地址为192.168.10.10的主机
[root@linuxprobe~]# ping -c 4 192.168.10.10
-
tracepath命令,用于显示数据包到达目的主机时途中经过的所有路由信息,语法格式为
tracepath [参数] 域名
-
netstat命令,用于显示如网络连接、路由表、接口状态等的网络相关信息,语法格式为
netstat [参数]
参数 | 作用 |
---|---|
-a | 显示所有连接中的Socket |
-p | 显示正在使用的Socket信息 |
-t | 显示TCP协议的连接状态 |
-u | 显示UDP协议的连接状态 |
-n | 使用IP地址,不使用域名 |
-l | 仅列出正在监听的服务状态 |
-i | 现在网卡列表信息 |
-r | 显示路由表信息 |
- 显示详细的网络状态
[root@linuxprobe~]# netstat -a
- 显示网卡列表
[root@linuxprobe~]# netstat -i
- history命令,用于显示执行过的命令历史,语法格式为
history [-c]
- 清除当前用户在本机上执行的Linux命令历史记录信息
[root@linuxprobe~]# history -c
- sosreport命令,用于收集系统配置及架构信息并输出诊断文档
2.5 查找定位文件命令( pwd | cd | ls | tree | find | locate | whereis | which )
-
pwd命令,用于显示用户当前所处的工作目录
-
cd命令,用于切换当前的工作路径,语法格式为
cd [参数] [目录]
- 切换进/etc目录中
[root@linuxprobe~]# cd /etc
- 返回到上一次的目录
[root@linuxprobe~]# cd -
- 快速切换到用户的家目录
[root@linuxprobe~]# cd ~
-
ls命令,用于显示目录中的文件信息,语法格式为
ls [参数] [文件名称]
-
tree命令,用于以树状图的形式列出目录内容及结构
-
find命令,用于按照指定条件来查找文件所对应的位置,语法格式为
find [查找范围] 寻找条件
参数 | 作用 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所属组 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(-n指n天以内,+n指n天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所属组的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
–type b/d/c/p/l/f | 匹配文件类型(后面的字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+50KB为查找超过50KB的问价u你,而-50KB为查找小于50KB的文件) |
-prune | 忽略某个目录 |
-exec… {}; | 后面可跟用于进一步处理搜索结果的命令 |
- 获取/etc目录中所有以host开头的文件列表
[root@linuxprobe~]# find /etc -name "host*"
- 在整个系统中搜索权限中包括SUID权限的所有文件
[root@linuxprobe~]# find / -perm -4000 -print
- 在整个文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录中
[root@linuxprobe~]# find / -user linuxprobe -exec cp -a {} /root/findresult \
- locate命令,用于按照名称快速搜索文件所对应的位置,语法格式为
locate 文件名称
- 第一次使用locate命令之前,先执行updatedb命令来生成索引数据库,然后再进行查找
[root@linuxprobe~]# updatedb
[root@linuxprobe~]# ls -l /var/lib/mlocate/mlocate.db
[root@linuxprobe~]# locate whereis
-
whereis命令,用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置,语法格式为
whereis 命令名称
-
which命令,用于按照指定名称快速搜索二进制程序(命令)所对应的位置,语法格式为
which 命令名称
2.6 文本文件编辑命令( cat | more | head | tail | tr | wc | stat | grep | cut | diff | uniq | sort )
- cat命令,用于查看纯文本文件(内容较少的),语法格式为
cat [参数] 文件名称
- 查看文本内容顺便显示行号
[root@linuxprobe~]# cat -n initial-setup-ks.cfg
-
more命令,用于查看纯文本文件(内容较多的),语法格式为
more [参数] 文件名称
-
head命令,用于查看纯文本文件的前N行,语法格式为
head [参数] 文件名称
- 查看文本前10行的内容
[root@linuxprobe~]# head -n 10 initial-setup-ks.cfg
- tail命令,用于查看纯文本文件的后N行或持续刷新文件的最新内容,语法格式为
tail [参数] 文件名称
- 查看文本内容的最后10行
[root@linuxprobe~]# tail -n 10 initial-setup-ks.cfg
- 实时查看最新的日志文件
[root@linuxprobe~]# tail -f /var/log/messages
- tr命令,用于替换文本内容中的字符,语法格式为
tr [原始字符] [目标字符]
- 把某个文本内容中的英文全部替换为大写
[root@linuxprobe~]# cat anaconda-ks.cfg | tr [a-z] [A-Z]
- wc命令,用于统计指定文本文件的行数、字数或字节数,语法格式为
wc [参数] 文件名称
参数 | 作用 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
- 统计当前系统中有多少个用户
[root@linuxprobe~]# wc -l /etc/passwd
- stat命令,用于查看文件的具体存储细节和时间等信息,语法格式为
stat 文件名称
- 查看文件的内容最后一次被访问时间、内容最后一次被修改时间和属性最后一次被修改时间
[root@linuxprobe~]# stat anaconda-ks.cfg
- grep命令,用于按行提取文本内容,语法格式为
grep [参数] 文件名称
参数 | 作用 |
---|---|
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-I | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有“关键词”的行 |
- 查找出当前系统中不允许登录系统的所有用户的信息
[root@linuxprobe~]# grep /sbin/nologin /etc/passwd
- cut命令,用于按列提取文本内容,语法格式为
cut [参数] 文件名称
- 提取出passwd文件中的用户名信息,即提取以冒号为间隔符号的第一列的内容
[root@linuxprobe~]# cut -d : -f 1 /etc/passwd
- diff命令,用于比较多个文件之间内容的差异,语法格式为
diff [参数] 文件名称A 文件名称B
- 判断两个文件是否相同
[root@linuxprobe~]# diff --brief A.txt B.txt
[root@linuxprobe~]# diff -c A.txt B.txt
-
uniq命令,用于去除文本中连续的重复行,语法格式为
uniq [参数] 文件名称
-
sort命令,用于对文本内容进行再排序,语法格式为
sort [参数] 文件名称
参数 | 作用 |
---|---|
-f | 忽略大小写 |
-b | 忽略缩进与空格 |
-n | 以数值型排序 |
-r | 反向排序 |
-u | 去除重复行 |
-t | 指定间隔符 |
-k | 设置字段范围 |
- 想以第三个字段中的数字作为排序依据
[root@linuxprobe~]# cat user.txt
tss:x:59:59: used by the trousers package to sandbox the tcsd daemon
polkitd:x:998:996:User for polkited
geoclue:x:997:995:User for geoclue
rtkit:x:172:172:RealtimeKit
pulse:x:171:171:PulseAudio System Daemon
[root@linuxprobe~]# sort -t : -k 3 -n user.txt
2.7 文件目录管理命令( touch | mkdir | cp | mv | rm | dd | file | tar )
- touch命令,用于创建空白文件或设置文件的时间,语法格式为
touch [参数] 文件名称
参数 | 作用 |
---|---|
-a | 仅修改“访问时间”(Atime) |
-m | 仅修改“修改时间”(Mtime) |
-d | 同时修改Atime与Mtime |
[root@linuxprobe~]# ls -l anaconda-ks.cfg
[root@linuxprobe~]# echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg
[root@linuxprobe~]# touch -d "2024-04-24 8:47" anaconda-ks.cfg
- mkdir命令,用于创建空白的目录,语法格式为
mkdir [参数] 目录名称
- 创建出具有嵌套层叠关系的文件目录
[root@linuxprobe~]# mkdir -p a/b/c/d/e
- cp命令,用于复制文件或目录,语法格式为
cp [参数] 源文件名称 目标文件名称
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr |
[root@linuxprobe~]# touch install.txt
[root@linuxprobe~]# cp install.txt x.txt
- mv命令,用于剪切或重命名文件,语法格式为
mv [参数] 源文件名称 目标文件名称
[root@linuxprobe~]# mv x.txt linux.txt
- rm命令,用于删除文件或目录,语法格式为
rm [参数] 文件名称
参数 | 作用 |
---|---|
-f | 强制执行 |
-i | 删除前询问 |
-r | 删除目录 |
-v | 显示过程 |
- dd命令,用于按照指定大小和个数的数据块来复制文件或转换文件,语法格式为
dd if=参数值 of=参数值 count=参数值 bs=参数值
参数 | 作用 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
- 从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存成名为560_file的文件
[root@linuxprobe~]# dd if=/dev/zero of=560_file bs=560M count=1
- 压制出光盘镜像文件
[root@linuxprobe~]# dd if=/dev/cdrom of=RHEL-server-8.0-x86_64-LinuxProbe.Com.ios
-
file命令,用于查看文件的类型,语法格式为
file 文件名称
-
tar命令,用于对文件进行打包压缩或解压,语法格式为
tar 参数 文件名称
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限和属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
- 把/etc目录通过gzip格式进行打包压缩
[root@linuxprobe~]# tar czvf etc.tar.gz /etc
- 将打包后的压缩包文件指定解压到/root/etc目录中
[root@linuxprobe~]# mkdir /root/etc
[root@linuxprobe~]# tar xzvf etc.tar.gz -C /root/etc
复习题
1
在RHEL 8 及众多的Linux系统中,最常用的Shell终端是什么?
Bash(Bourne-Again SHell)解释器
2
执行Linux系统命令时,添加参数的目的是什么?
为了让Linux系统命令能够更贴合用户的实际需求进行工作
3
Linux系统命令、命令参数以命令对象之间,应该使用什么来间隔
空格
4
请写出用echo命令把SHELL变量值输出到屏幕终端的命令
[root@linuxprobe~]# echo $SHELL
5
简述Linux系统中5种进程的名称及含义
R(运行)、S(中断)、D(不可中断)、Z(僵死)、T(停止)
6
请尝试使用Linux系统命令关闭PID为5529的服务进程
[root@linuxprobe~]# kill 5529
7
使用ifconfig命令查看网络状态信息时,需要重点查看的4项信息分别是什么
网卡名称、IP地址、网卡的物理地址(MAC地址)、RX/TX的收发流量数据大小
8
使用uptime命令查看系统负载时,对应的负载数值如果是0.91、0.56、0.32,那么最近15分钟内负载压力最大的是哪个时间段
最近1分钟内
9
使用history命令查看历史命令的执行记录时,命令前面的编码数字除了排序外还有什么用处
- 重复执行某一次的命令
[root@linuxprobe~]# !编码数字
10
若想查看的文件具有较长的内容,那么使用cat、more、head、tail中的哪个命令最合适
[root@linuxprobe~]# more
11
在使用mkdir命令创建有嵌套关系的目录时,应该加上什么参数呢
[root@linuxprobe~]# mkdir -p
12
在使用rm命令删除文件或目录时,可使用哪个参数来避免二次确认呢
[root@linuxprobe~]# rm -f
13
若有一个名为backup.tar.gz的压缩包文件,那么解压的命令应该是什么
[root@linuxprobe~]# tar -xzvf backup.tar.gz
14
使用grep命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么参数
[root@linuxprobe~]# grep -v