一、ls命令
ls是list的缩写,可以通过ls命令不仅可以查看linux文件夹包含的文件,还可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
常用参数:
ls -a | 列出目录所有文件,包含以.开始的隐藏文件。 |
ls -A | 列出除.及..的其他文件。 |
ls -t | 以文件修改时间排序。 |
ls -S | 以文件大小排序。 |
ls -l | 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。 |
二、dmesg命令(Linux诊断机器故障工具)
dmesg命令可以让你更深入的了解Linux启动的潜在过程,可以从内核的环形缓冲区(ring buffer)查看并监视硬件设备和驱动消息。
系统启动时,内核会将各种信息和警告消息存储在一个环形缓冲区中。消息包括:内核模块加载、驱动程序绑定、设备初始化等。
Linux环形缓冲区是如何工作的?
在Linux和类Unix系统中,引导和启动是计算机开机后,事件序列中两个不同的阶段。
引导过程(BIOS或UEFI,MBR和GRUB)会初始化系统,这时内核被加载进内存,并且连接到初始ramdisk(initrd或initramfs),然后,systemd被启动。
启动过程继续完成初始化操作系统的工作。在初始化阶段的早期,日志记录daemons尚未启动及运行。为了避免在初始化阶段丢失明显的错误消息和警告,内核包含了一个可以储存消息的环形缓冲区。
环形缓冲区是用于存储消息的内存空间,设计简单,固定大小。当存储满时,最新的消息会覆盖最旧的消息。所以被称为“环形缓冲区”。它能够存储消息,比如:设备驱动程序的初始化消息,硬件消息以及内核模块消息。因为包含低等级的启动消息,所以环形缓冲区非常适合于查看硬件错误或其他启动问题。
dmesg命令常用格式:
dmesg命令可以查看环形缓冲区中的消息。默认情况下,执行dmesg需要添加sudo。
# sudo dmesg [-cn][-s <缓冲区大小>]
-c:当完成打印显示后清除缓冲区的内容
-s:缓冲区大小。定义一个大小为“缓冲区大小”的缓冲区用于查询内核环缓冲区。默认大小8196
-n:级别。设置级别为记录控制台启动信息的级别。
常用参数:
-C | 清除内核环缓冲区的内容 |
-s <size> | 设置内核环缓冲区的大小 |
-l <level> | 指定要显示的日志级别,可选的级别包括emerg, alert, crit, err, warning, notice, info, debug。 |
-n <level> | 设置内核日志的打印级别,仅显示指定级别及其以上级别的日志。 |
-H | 以可读的格式显示时间戳。 |
-T | 持续监视内核日志的变化。 |
--color | 以彩色输出显示日志信息。 |
--console-level <level> | 设置控制台日志的打印级别。 |
--file <file> | 从指定文件中读取内核日志信息。 |
--read-clear | 读取并清除内核环缓冲区的内容。 |
--read-clear-long | 读取并清除内核环缓冲区的内容,以长格式显示。 |
2.1 将系统启动信息保存到文件中
# sudo dmesg > messages.txt
2.2 单页输出
# sudo dmesg | more
# sudo dmesg | less
通常会输出很多的消息,可以通过less命令来解决,这样就可以滚动查找我们需要的内容。
2.3 以可读性较好的形式输出信息
# sudo dmesg -H
默认情况下,内核启动后,dmesg使用时间戳记录秒和纳秒,如果想要更加人性化的输出,可以使用 -H(human)参数。 但是输出会自动显示更少的内容。
# sudo dmesg -T
时间戳显示为标准日期和时间,但分辨率降低到一分钟。
2.4 设置记录信息的层级
# sudo dmesg -n 3
2.5 打印输出内存
# sudo dmesg | tail -f #打印输出最近一次的信息
# sudo dmesg | head -20 #打印输出前20行的信息
# sudo dmesg | tail -20 #打印输出最后20行日志
2.6 实时监控dmesg日志的输出信息
# watch "dmesg | tail -20"
2.7 搜索包含特定字符串的被检测到的硬件
# sudo dmesg | grep DMA #查看硬盘的运行模式
# sudo dmesg | grep eth #查看以太网的连接信息
# sudo dmesg | grep sda #查看硬盘设备
# sudo dmesg | grep ttyS* #查看串口的相关信息
# sudo dmesg | grep -i memory #查看内存状况
# sudo dmesg | grep -i usb #查看usb接口
2.8 使用日志级别
emerg:系统无法使用
alert:必须立即采取措施
crit:严重的情况
err:错误
warn:警告
notice:正常但是重要的情况
info:消息
debug:调试信息
# sudo dmesg -l info
列出的所有消息都是“info”消息,它们不包含错误或警告,仅包含有用的通知。
可以在一个命令中组合两个或多个日志级别,以检索多个日志级别的消息:
# sudo dmesg -l debug,notice
三、grep命令
grep是linux用户用来搜索文本字符串的命令行工具。可以使用它在文件中搜索某个单词或单词的组合,也可以将其他linux命令的输出通过管道传输到grep,并显示出想要查看的输出。
1. grep的单独使用
命令格式:
grep [option] pattern file | dir
其中,pattern表示要查找的模式,file(s)表示要查找的文件,如果不指定文件,则默认从标准输入中读取数据。
常用参数:
-i | 忽略大小写 |
-l | 只列出文件内容符合指定的样式的文件名称 |
-f | 从文件中读取关键词 |
-n | 显示匹配内容的所在文件中行数 |
-R/-r | 递归查找文件夹 |
-E | 使用扩展正则表达式 |
-F | 禁用正则表达式,使用固定字符串匹配 |
-w | 只匹配整个单词,而不是单词的一部分 |
-A | 显示匹配行之后的若干行 |
-B | 显示匹配行之前的若干行 |
-C | 显示匹配行前后的若干行 |
例子:由于linux代码很庞大,驱动开放工程师如果想要找到某个函数在哪个位置的时候,就可以使用grep来进行查找。
$ grep -r "main" //递归查找目录中的文件
在当前的目录下所有带有"main"字符的文件/文档都会显示出来。
$ grep -r -i "main" //递归且不区分大小写查找目录中的文件
$ grep -r "main" ./test //在指定的目录下递归查找对应文件
// 使用正则表达查找
$ egrep r\{2} fruits.txt
$ grep -E r\{2} fruits.txt
2. grep进行组合使用
(1)与demsg结合:
demsg:内核的所有输出会进入缓冲区中,而不是打印到stdout上,这是因为stdout是进程特有的环境。
dmesg -w |grep Hello //在缓冲区查找到Hello的内容并显示出来
(2)与ls结合:
ls | grep test
四、cd命令
常用参数:
cd / 进入需要进入的目录
cd ~ 进入"home"目录
cd - 进入上一次工作路径
cd !$ 把上个命令的参数作为cd参数使用
cd .. 返回上一级目录
五、chmod命令
Linux chmod命令是控制用户对文件的权限的命令。
Linux/Unix的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其他用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。
1. 符号模式
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和permission(权限),每个项目的设置可以用逗号隔开。
who的符号模式表:
who | 用户类型 | 说明 |
u | user | 文件所有者 |
g | group | 文件所有者在组 |
o | others | 所有其他用户 |
a | all | 所有用户,相当于ugo |
operator的符号模式表:
Operator | 说明 |
+ | 为指定的用户类型增加权限 |
- | 去除指定用户类型的权限 |
= | 设置指定用户权限的设置,即将用户类型的所有权重重新设置 |
permission的符号模式表:
模式 | 名字 | 说明 |
---|---|---|
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行权限 | 设置为可执行权限 |
X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
例子:
将file1.txt文件设为所有人皆可读取:
chmod ugo+r file1.txt
chmod a+r file1.txt
将文件file1.txt与file2.txt设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入:
chmod ug+w,o-w file1.txt file2.txt
2. 八进制语法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r-- | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | --x | 001 |
0 | 无 | --- | 000 |
例子:
将file1.txt文件设为所有人皆可读取:
chmod 777 file